Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Paginacion + consultas MySQL

Estas en el tema de Paginacion + consultas MySQL en el foro de Mysql en Foros del Web. Hola, les explico un poco lo que necesito hacer: (no estoy seguro si esto va aqui o en php, pero lo expongo aqui primero) Tengo ...
  #1 (permalink)  
Antiguo 08/04/2011, 09:56
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Paginacion + consultas MySQL

Hola, les explico un poco lo que necesito hacer: (no estoy seguro si esto va aqui o en php, pero lo expongo aqui primero)

Tengo un proyecto que trata de una aplicacion web para la captura de pedimentos de importaciones temporales (un pedimento de importacion temporal es un documento con el cual se importa mercancia al pais para procesarlo, y exportar el producto fuera del pais), obvio que hay que poner consultas tambien. He logrado hacer las consultas con paginacion en otras areas de la aplicacion, puedo hacer la consulta del pedimento por su numero (este siempre es unico, aqui no requiero de paginacion, por lo fue facil hacerlo); un pedimento tiene algo llamado "partidas", que viene siendo la descripcion del material adquirido (como nombre, tasas de interes, precio, cantidad de medida, etc). Ahora, pueden haber partidas con la misma descripcion (nombre del material adquirido), para esto tengo un formulario para iniciar la busqueda.

Select/menu con opciones de busqueda por:

Numero de pedimento

Descripcion de partida

etc...

y un textfiel donde introdusco lo que se desea buscar

Les explico un poco mas: toda la informacion del pedimento esta guardada en 11 tablas, por que tantas?, porque hay informacion que necesita ser guardada en una tabla aparte, como las facturas, un pedimento puede terner solo una factura, o tener 100 facturas; a su vez las facturas pueden tener una partida, o 30 partidas (solo pongo numeros arbitrareos); lo que hago para mostrar por numero de pedimento es lo siguiente:

Código PHP:
case "NUMERO DE PEDIMENTO":
    
        
//Consulta a la tabla de pedimento_info, para tomar toda la informacion y poder mostrarla en pantalla; para cuando se busque por numero de pedimento.
        
$consultapedimento_info mysql_query("SELECT * FROM pedimento_info WHERE NUM_PEDIMENTO = '$CAMPO_BUSQUEDA'");
        
        
$num_total_registros mysql_num_rows($consultapedimento_info); 
        
//calculo el total de páginas 
        
$total_paginas ceil($num_total_registros $TAMANO_PAGINA);
        
        
$pedimento_info mysql_fetch_array($consultapedimento_info);
        
        
//busca el cliente:
        
$clavecliente $pedimento_info ['CVE_CLIENTE'];
        
$consultacliente mysql_query("SELECT * FROM clientes WHERE CVE_CLIENTE = '$clavecliente'");
        
$clientearray mysql_fetch_array($consultacliente);

        
//tasas a nivel pedimento
        
$numpedimento $pedimento_info ['NUM_PEDIMENTO'];
        
$consultatnp mysql_query("SELECT * FROM tasas_nivel_pedimento WHERE NUM_PEDIMENTO = '$numpedimento'");
        
//$tnparray = mysql_fetch_array ($consultatnp);
    
        //cuadro de liquidacion
        
$consultacuadroliquidacion mysql_query("SELECT * FROM cuadro_liquidacion WHERE NUM_PEDIMENTO = '$numpedimento'");

        
//identificadores a nivel pedimento
        
$consultainp mysql_query("SELECT * FROM id_nivel_pedimento WHERE NUM_PEDIMENTO = '$numpedimento'");

        
        
//proveedor del pedimento
        
$clave_proveedor $pedimento_info ['CVE_PROVEEDOR'];
        
$consulta_proveedor mysql_query("SELECT * FROM proveedores WHERE CVE_PROVEEDOR = '$clave_proveedor'");
        
$proveedorarray mysql_fetch_array($consulta_proveedor);
        
        
//facturas del proveedor
        
$consultafactura mysql_query("SELECT * FROM facturas WHERE NUM_PEDIMENTO = '$numpedimento'");
        
        
//partidas del pedimento
        
$consulta_partidas mysql_query("SELECT * FROM partidas WHERE NUM_PEDIMENTO = '$numpedimento'");
        
        
//Busca el agente segun el pedimento que pertenece
        
$claveagente $pedimento_info ['CVE_AGENTE'];
        
$consultacveagente mysql_query("SELECT * FROM agentes_apoderados WHERE CVE = '$claveagente'");
        
$cvagente mysql_fetch_array($consultacveagente);

        
//mandatario segun el pedimento que pertenece
        
$clavemandatario $pedimento_info ['CVE_MANDATARIO'];
        
$consultacvemandatario mysql_query("SELECT * FROM mandatario_persona_autorizada WHERE CVE = '$clavemandatario'");
        
$cvmandatario mysql_fetch_array($consultacvemandatario);
        
        
//id pedimento nivel partida
        
$consulta_idnivelpartida mysql_query("SELECT * FROM id_nivel_partida WHERE NUM_PEDIMENTO = '$numpedimento'");
        
//$idnpartida = mysql_fetch_array($consulta_idnivelpartida); 

No se si lo hago de la manera "mas correcta", pero asi me funciona, pero el problema biene cuando busco por descripcion de partida, propongo un ejemplo:

El usuario a capturado 38 pedimentos, 8 de ellos contienen algun tipo de TOLUENO, TOLUENO DE NOSEQUE, COSA DE TOLUENO, etc.

Suponiendo que el usuario no recuerda que tolueno es, la busqueda la hara solo con la palabra "TOLUENO"; esto es lo que deberia hacer la aplicacion:

1.- Buscar todas las partidas que contenga la palabra "TOLUENO" (esta esta facil)

$consulta_partida = mysql_query("SELECT * FROM partidas WHERE DESCRIPCION LIKE '%$CAMPO_BUSQUEDA%'");

2.- Identificar a que pedimento pertenece cada partida (no tengo idea de como hacerlo, la tabla "partidas" cuentan con el numero de pedimento), yo estaba haciendo esto:

$array_partida = mysql_fetch_array($consulta_partida);
$numpedimento = $array_partida['NUM_PEDIMENTO'];
$consultapedimento_info = mysql_query("SELECT * FROM pedimento_info WHERE NUM_PEDIMENTO LIKE '$numpedimento'");
$pedimento_info = mysql_fetch_array($consultapedimento_info);
$num_total_registros = mysql_num_rows($consulta_partida);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);

pero asi solo me pagina un pedimento

3.- Paginar los pedimentos que contengan TOLUENO en la partida. (de eso me encargo yo).

El problema que tengo es que no se de que manera sacar el valor del numero de pedimento, en el cual, la partida contiene tolueno; creo que si me di a entender con la larga explicacion que les di.

Espero puedan auxiliarme con este problemilla.
  #2 (permalink)  
Antiguo 11/04/2011, 10:08
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Paginacion + consultas MySQL

Pues si era algo de ambos (php y mysql), ademas olvide mencionarles que se necesitan eliminar registros repetidos en las consultas (para identificar las partidas pongo el numero de pedimento al que pertenecen), por si a alguien le interesa, esto fue lo que hice:

Código PHP:
case "DESCRIPCION DE PARTIDA":
    
        
//enumerar de numeros de pedimento de la tabla "partida" que coincidan con la busqueda, eliminando numeros de pedimento repetidos
        
$consulta_partida mysql_query("SELECT DISTINCT NUM_PEDIMENTO FROM partidas WHERE DESCRIPCION LIKE '%$CAMPO_BUSQUEDA%'");
        
$num_total_registros mysql_num_rows($consulta_partida); 
        
//calculo el total de páginas 
        
$total_paginas ceil($num_total_registros $TAMANO_PAGINA);
        
        
//Esta consulta es para poder realizar la paginacion a partir del numero de pedimento
        
$consulta_partida2 mysql_query("SELECT DISTINCT NUM_PEDIMENTO FROM partidas WHERE DESCRIPCION LIKE '%$CAMPO_BUSQUEDA%' LIMIT $inicio, $TAMANO_PAGINA");
        
$array_partida mysql_fetch_array($consulta_partida2);
        
$numpedimento $array_partida['NUM_PEDIMENTO'];
        
        
$consultapedimento_info mysql_query("SELECT * FROM pedimento_info WHERE NUM_PEDIMENTO = '$numpedimento'");
        
$pedimento_info mysql_fetch_array($consultapedimento_info);

        
//busca el cliente:
        
$clavecliente $pedimento_info ['CVE_CLIENTE'];
        
$consultacliente mysql_query("SELECT * FROM clientes WHERE CVE_CLIENTE = '$clavecliente'");
        
$clientearray mysql_fetch_array($consultacliente);

        
//tasas a nivel pedimento
        
$consultatnp mysql_query("SELECT * FROM tasas_nivel_pedimento WHERE NUM_PEDIMENTO = '$numpedimento'");
        
//$tnparray = mysql_fetch_array ($consultatnp);
        
        //cuadro de liquidacion
        
$consultacuadroliquidacion mysql_query("SELECT * FROM cuadro_liquidacion WHERE NUM_PEDIMENTO = '$numpedimento'");
        
//$qadroliq_array = mysql_fetch_array ($consultacuadroliquidacion);

        //identificadores a nivel pedimento
        
$consultainp mysql_query("SELECT * FROM id_nivel_pedimento WHERE NUM_PEDIMENTO = '$numpedimento'");
        
        
//$inparray = mysql_fetch_array($consultainp);
        
        //proveedor del pedimento
        
$clave_proveedor $pedimento_info ['CVE_PROVEEDOR'];
        
$consulta_proveedor mysql_query("SELECT * FROM proveedores WHERE CVE_PROVEEDOR = '$clave_proveedor'");
        
$proveedorarray mysql_fetch_array($consulta_proveedor);
        
        
//facturas del proveedor
        
$consultafactura mysql_query("SELECT * FROM facturas WHERE NUM_PEDIMENTO = '$numpedimento'");
        
        
//partidas del pedimento
        
$consulta_partidas mysql_query("SELECT * FROM partidas WHERE NUM_PEDIMENTO = '$numpedimento'");
        
        
//Busca el agente segun el pedimento que pertenece
        
$claveagente $pedimento_info ['CVE_AGENTE'];
        
$consultacveagente mysql_query("SELECT * FROM agentes_apoderados WHERE CVE = '$claveagente'");
        
$cvagente mysql_fetch_array($consultacveagente);

        
//mandatario segun el pedimento que pertenece
        
$clavemandatario $pedimento_info ['CVE_MANDATARIO'];
        
$consultacvemandatario mysql_query("SELECT * FROM mandatario_persona_autorizada WHERE CVE = '$clavemandatario'");
        
$cvmandatario mysql_fetch_array($consultacvemandatario);
        
        
//id pedimento nivel partida
        
$consulta_idnivelpartida mysql_query("SELECT * FROM id_nivel_partida WHERE NUM_PEDIMENTO = '$numpedimento'");
        
//$idnpartida = mysql_fetch_array($consulta_idnivelpartida); 

    
break; 
Solo hice las modificaciones para usarlo por ejemplo si el usuario busca por proveedor, mandatario, etc. Al finalk no era algo tan dificil, lo dificil fue que se me ocurriera.

Etiquetas: realizar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:51.