Foros del Web » Programando para Internet » PHP »

Multiplex busquedas

Estas en el tema de Multiplex busquedas en el foro de PHP en Foros del Web. Hola Necesito que me den Luz. Estoy empezando hacer una aplicacion, donde los usuarios puede hacer busqueda por diferenten campos, (realmanete por los que quieran ...
  #1 (permalink)  
Antiguo 08/05/2006, 11:43
 
Fecha de Ingreso: mayo-2006
Mensajes: 95
Antigüedad: 11 años, 7 meses
Puntos: 0
Multiplex busquedas

Hola

Necesito que me den Luz.

Estoy empezando hacer una aplicacion, donde los usuarios puede hacer busqueda por diferenten campos, (realmanete por los que quieran unos, dos tres , etc etc, al menos uno).

Entonces realmaente estoy un poco perdido com hacer eso.

Voy a utilizar una base de Datos PHP, y aunque creo que la solucion esta en el SQL, quieron que alguno de Uds, me de un poco de luz para no empezar tan perdido este nuevo proyecto.

Muchismas gracias a todo espero sus respuestas.
  #2 (permalink)  
Antiguo 08/05/2006, 15:28
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
sería bueno que primero que nada hicieras una búsqueda con 1 campo, y luego lo hicieras más complejo.

La forma de hacer lo que querés es ir armando la consulta sql según los campos marcados. (agregándole cosas a la cláusula where)


Saludos.
  #3 (permalink)  
Antiguo 08/05/2006, 15:45
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 14 años, 11 meses
Puntos: 8
"Voy a utilizar una base de Datos PHP" -> eso no existe ¬¬

una consulta de busqueda seria esta

$sql = "SELECT * FROM nombr_tabla WHERE campo_de_busqueda LIKE '%".$variable_texto_a_buscar."%' AND campo_2 = ".$variable_numerica;

Suerte
  #4 (permalink)  
Antiguo 09/05/2006, 03:53
 
Fecha de Ingreso: mayo-2006
Mensajes: 95
Antigüedad: 11 años, 7 meses
Puntos: 0
Person me referia MySQL

Entiendo perfectamente lo que me dicen, pero necesito saber que hacer, en el caso de que el usuario no selecciones uno de los campo de busqueda, quie tengo que hacer en eso caso
  #5 (permalink)  
Antiguo 09/05/2006, 20:27
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
lo que decía con armar la consulta es algo como esto:

tenés la consulta base, algo como
consulta = "SELECT * FROM tabla WHERE"

y después, para cada campo que pudiera estar marcado....

si (está marcado campo X) {
consulta .= "AND campoX LIKE %campoX%";
}


Espero haberme explicado mejor.

Saludos.
  #6 (permalink)  
Antiguo 10/05/2006, 02:04
 
Fecha de Ingreso: agosto-2003
Mensajes: 43
Antigüedad: 14 años, 3 meses
Puntos: 0
En realidad eso no iba a funcionar bien ya que habría un carácter de más
La query quedaría asi
Código PHP:
$sql="select * from tabla where and campo1 like '$_POST[campo1]' and campo2='$_POST[campo2]'"
Esto creará un mensaje de error
Podemos hacer lo siguiente
Código PHP:
//Iniciamos la consulta
$sql="select * from tabla";
//Ahora veremos que campos ha rellenado
if($_POST[campo1]!="" || $_POST[campo2]!="") {
//Añadimos la clausula where
$sql.=" where";
//Creamos una variable que tendrá los campos limitadores de la búsqueda
$anadir="";
//Ahora vamos campo a campo
if($_POST[campo1]!="") {
$anadir.=" and campo1 like '$_POST[campo1]'";
}
if(
$_POST[campo2]!="") {
$anadir.=" and campo2 like '$_POST[campo2]'";
}
//Ahora eliminamos el primer and
$anadir=substr($anadir,4,strlen($anadir)-1);
}
//Y finalmente dejamos construida la query
$sql.=$anadir;
//Y realizamos la consulta
$result=mysql_query($sql); 
En caso de ser muchos campos, puede ser interesante crear un array con todos los campos post y recorrerlo mediante foreach
__________________
pwmcorg
  #7 (permalink)  
Antiguo 10/05/2006, 02:32
Avatar de ProgramadorMax  
Fecha de Ingreso: diciembre-2003
Ubicación: Ciudad de Mexico.
Mensajes: 47
Antigüedad: 14 años
Puntos: 0
Mas corto es esto. Solo haces el formulario normalmente y si existen o se han rellenado los campos, agrega mas opciones de busqueda. No olvides filtrar y validar todo lo que recibas del usuario.

Código PHP:
include "includes/conexion.php";
$query"SELECT *
FROM cliente
LEFT JOIN datos ON cliente.ClienteId = datos.DatosId
WHERE Sexo = 'F'"
.
    (
$_POST['Nombre'] ?" AND cliente.Nombre  =".$_POST['Nombre']: "").
    (
$_POST['Clave'] ? " AND cliente.Clave  =".$_POST['Clave']: "").
    (
$_POST['Edad'] ? " AND cliente.Edad  =".$_POST['Edad']: "").
" ORDER BY cliente.Nombre ASC";

$Result =mysql_query($query);
$FilasResult mysql_fetch_assoc($Result);

Ejecutas un while o un foreach y listopuedes listar
De nada...

Saludos.
__________________
Tonto es aquel que tiene el conocimiento y no sabe como usarlo...
Solo destripando creo mostruos de soluciones.
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 19:39.