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.