- Tema Autor
- #1
Que tal comuna tengo una duda espero me puedan ayudar a resolverla:
Lo que pasa es que tengo un formulario en PHP el cual me hace una consulta a una base de datos, el detalle es que el formulario consta de 5 campos, por el momento si se hacen las consultas por cada uno de los campos diferentes funciona sin ningun problema, el detalle es que si quiero hacer la consulta por 2 o mas campos no funciona correctamente, es decir tengo lo siguiente:
Nombre:_________________________
Apellido Paterno:_____________________
Apellido Materno:____________________
Num credito:________________________
Num cuenta:________________________
como les comento si hago la consulta por un campo si funciona pero quiero reducir mas el numero de resultados al hacer la consulta con mas campos es decir si pongo JUAN me saldran 200 registros con el nombre juan, pero al darle JUAN PEREZ que me salgan 10 ya es una ganancia.
tengo lo siguiente:
Esto me muestra los resultados de cada uno de los campos con el que se hizo la consulta pero quiero, como lo digo arriba, que se pueda hacer consultas con dos o mas campos para reducir el numero de resultados.
Intente meter un CASE segun el numero de campos elegidos, pero no me jalo, o no se si este bien mi codigo, intente con esto:
Bueno asi lo intente pero no me funciono creo que tengo algo mal.
Espero me ayuden muchas gracias
EXITO!!
Lo que pasa es que tengo un formulario en PHP el cual me hace una consulta a una base de datos, el detalle es que el formulario consta de 5 campos, por el momento si se hacen las consultas por cada uno de los campos diferentes funciona sin ningun problema, el detalle es que si quiero hacer la consulta por 2 o mas campos no funciona correctamente, es decir tengo lo siguiente:
Nombre:_________________________
Apellido Paterno:_____________________
Apellido Materno:____________________
Num credito:________________________
Num cuenta:________________________
como les comento si hago la consulta por un campo si funciona pero quiero reducir mas el numero de resultados al hacer la consulta con mas campos es decir si pongo JUAN me saldran 200 registros con el nombre juan, pero al darle JUAN PEREZ que me salgan 10 ya es una ganancia.
tengo lo siguiente:
Código:
<?php
include (conexion.php);
if($nombre != null && $appaterno==null && $apmaterno==null && $num_cuenta==null && $num_credito==null){
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE (P.nombre like "%'.$nombre.'%" OR P.nombre_completo LIKE "%'.$nombre.'%") AND P.id_personal=C.id_personal ORDER BY nombre;';
if($appaterno != null){
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE (P.apellido_paterno like "%'.$appaterno.'%" OR P.nombre_completo LIKE "%'.$appaterno.'%") AND P.id_personal=C.id_personal ORDER BY nombre;';
}
if($apmaterno != null){
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE (P.apellido_materno like "%'.$apmaterno.'%" OR P.nombre_completo LIKE "%'.$appaterno.'%" AND P.id_personal=C.id_personal ORDER BY nombre;';
}
if($num_credito != null){
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE c.num_credito='.$num_credito.' AND P.id_personal=C.id_personal ORDER BY nombre;';
}
if($num_cuenta != null){
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE c.num_cuenta='.$num_cuenta.' AND P.id_personal=C.id_personal ORDER BY nombre;';
}
Intente meter un CASE segun el numero de campos elegidos, pero no me jalo, o no se si este bien mi codigo, intente con esto:
Código:
if($nombre != null && $appaterno == null && $apmaterno == null && $num_cuenta == null && $num_credito == null)
{
$caso=1;
return $caso;
}
if($nombre == null && $appaterno != null && $apmaterno == null && $num_cuenta == null && $num_credito == null)
{
$caso=2;
return $caso;
}
if($nombre == null && $appaterno == null && $apmaterno != null && $num_cuenta == null && $num_credito == null)
{
$caso=3;
return $caso;
}
if($nombre == null && $appaterno == null && $apmaterno == null && $num_cuenta != null && $num_credito == null)
{
$caso=4;
return $caso;
}
if($nombre == null && $appaterno == null && $apmaterno == null && $num_cuenta == null && $num_credito != null)
{
$caso=5;
return $caso;
}
if($nombre != null && $appaterno != null && $apmaterno == null && $num_cuenta == null && $num_credito == null)
{
$caso=6;
return $caso;
}
switch ($caso)
{
case 1:
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE (P.nombre like "%'.$nombre.'%" OR P.nombre_completo LIKE "%'.$nombre.'%") AND P.id_personal=C.id_personal ORDER BY nombre;';
break;
case 2:
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE (P.apellido_paterno like "%'.$appaterno.'%" OR P.nombre_completo LIKE "%'.$appaterno.'%") AND P.id_personal=C.id_personal ORDER BY nombre;';
break;
case 3:
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE (P.apellido_materno like "%'.$apmaterno.'%" OR P.nombre_completo LIKE "%'.$appaterno.'%" AND P.id_personal=C.id_personal ORDER BY nombre;';
break;
case 4:
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE c.num_credito='.$num_credito.' AND P.id_personal=C.id_personal ORDER BY nombre;';
break;
case 5:
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE c.num_cuenta='.$num_cuenta.' AND P.id_personal=C.id_personal ORDER BY nombre;';
break;
case 6:
$nombrecompleto = $nombre." ".$appaterno;
$consulta = 'SELECT P.id_personal, P.num_cuenta, P.nombre_completo, P.nombre, P.apellido_paterno, P.apellido_materno, C.id_personal, C.id_credito, C.num_credito, C.nombre_producto FROM personales P, credito C WHERE (P.nombre like "%'.$nombrecompleto.'%" OR P.apellido_paterno LIKE "%'.$nombrecompleto.'%" OR P.nombre_completo LIKE "%'.$nombrecompleto.'%") AND P.id_personal=C.id_personal ORDER BY nombre;';
break;
Bueno asi lo intente pero no me funciono creo que tengo algo mal.
Espero me ayuden muchas gracias
EXITO!!