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

Busqueda en varias columnas con varios campos?

Estas en el tema de Busqueda en varias columnas con varios campos? en el foro de Mysql en Foros del Web. Vamos a ver, no encuentro resolucion a este problema en ningun lugar, y no me pareze algo tan raro! Imaginen que tienen una base de ...
  #1 (permalink)  
Antiguo 30/03/2012, 11:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 12 años, 11 meses
Puntos: 16
Pregunta Busqueda en varias columnas con varios campos?

Vamos a ver, no encuentro resolucion a este problema en ningun lugar, y no me pareze algo tan raro!
Imaginen que tienen una base de datos con una tabla con tres columnas: nombre, apellido y edad.
Ahora tienen un formulario html con tres campos: nombre, apellido y edad.

Ya se pueden ir imaginando, quiero buscar en la base de datos segun el nombre, el apellido o la edad. El problema es que en PHP no me basta con las clausulas and y or. No quiero buscar de forma completa, me explico: si busco por ejemplo dani garcia 25 quiero que me salgan todos los danis garcia de 25 años, pero si solo busco dani garcia quiero que me salgan todos los danis garcia sin importar la edad, o si solo busco 50, me salagan todos los registros con edad 50 años sin importar que nombre o apellido tengan!

Alguien me sugirio que con parentesis y combinando or y and probara de hazer algo! Estoy de acuerdo, pero pongo por ejemplo solo 3 columnas para no complicar el ejemplo, mi proyecto consta de 7 columnas, como es de esperar esto tiene mas de 100 posibilidades, no me sirve poner de antemano todas las combinaciones possibles en el programa, me es impossible, haber que pueden hacer!
  #2 (permalink)  
Antiguo 30/03/2012, 15:05
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Busqueda en varias columnas con varios campos?

Hola moro666:

En primer lugar, no entiendo por qué pones esto:

Cita:
El problema es que en PHP no me basta con las clausulas and y or.
Primero, hay que entender que son dos cosas muy diferentes PHP y MySQL... no confundir las condiciones para cada uno de ellos... Segundo, el problema tal como lo planteas se puede resolver sólo con AND...

No hay una única estrategia que pueda recomendar, depende de muchas cosas, pero la idea general es construir un select dinámico, que dependa de los valores de tu formulario... Sería más o menos así

Código:
consulta = 'SELECT * FROM tuTabla WHERE';

Si el formulario trae nombre entonces
   consulta = consulta + 'campo nombre = nombre_formulario and'

Si el formulario trae apellido entonces 
   consulta = consulta + 'campo_apellido = apellido_formulario and'

si el formulario trae edad entonces
    consulta = consulta + 'campo_edad = edad_formulario and';
....
....
....
Todos los demás campos
....
....
....
De esta manera con 7 condiciones tipo if estarías abarcando todas las posibilidades...

Esto lo puedes hacer desde PHP o con sentencias preparadas en MySQL...

Saludos
Leo.
  #3 (permalink)  
Antiguo 31/03/2012, 09:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 12 años, 11 meses
Puntos: 16
Respuesta: Busqueda en varias columnas con varios campos?

Perdon la ignorancia, pero seria asi?
Cita:
$nombre = filter_input(INPUT_POST, "nombre");
$edad = filter_input(INPUT_POST, "edad");

$conn = mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("destroy", $conn);

$consulta = "SELECT nombre, edad FROM nombre WHERE";
if(!$nombre==""){
$consulta = $consulta + "nombre='$nombre'";
};
if(!$edad==""){
$consulta= $consulta + "edad='$edad'";
};

$resultado = mysql_query($consulta, $conn) or die (mysql_error());

while($columna = mysql_fetch_assoc($resultado)){
foreach ($columna as $nombre => $valor){
print("$nombre: $valor <br />\n");
}
print("<br />\n");
};
  #4 (permalink)  
Antiguo 31/03/2012, 09:44
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 12 años, 11 meses
Puntos: 16
Respuesta: Busqueda en varias columnas con varios campos?

Cita:
Iniciado por moro666 Ver Mensaje
Perdon la ignorancia, pero seria asi?
Porque asi me da error sql!

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
  #5 (permalink)  
Antiguo 02/04/2012, 07:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Busqueda en varias columnas con varios campos?

Antes de la linea que empieza por $resultado = ... inserta la siguiente linea

echo $consulta."<br>";

esto te mostrara la consulta que has construido con tu script, analizala y a pesar de tu supuesta ingnorancia seguramente verás donde esta fallando....

Recuerda que "" y null no son lo mismo.... supongamos que nombre y edad son "Dani" y "25" luego tu script construirá la siguiente consulta

SELECT nombre, edad FROM nombre WHEREnombre='Dani'edad='25'

Te parece correcta? faltan espacios, ANDs....

Ojo la solucion es de PHP por tanto no es tema de este foro....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 02/04/2012 a las 07:32

Etiquetas: columnas, php, registros, tabla, busquedas, campos
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 05:22.