Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2011, 09:56
Avatar de omar_gutierrez
omar_gutierrez
 
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
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.