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

problema con buscador mysql con varios patrones

Estas en el tema de problema con buscador mysql con varios patrones en el foro de Bases de Datos General en Foros del Web. Hola estoy intentado realizar una búsqueda por varios tipos (titulo, autor, año, etc). Además utilizo un paginador para mostrar los resultados. He probado poner una ...
  #1 (permalink)  
Antiguo 03/12/2004, 03:30
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 20 años, 5 meses
Puntos: 0
problema con buscador mysql con varios patrones

Hola estoy intentado realizar una búsqueda por varios tipos (titulo, autor, año, etc). Además utilizo un paginador para mostrar los resultados.
He probado poner una lista desplegable como la siguiente, y luego con un switch elegir la consulta:

<select name="by" size=1>
<option value="nada">--------------------</option>
<option value="title">Title</option>
<option value="reference">Reference</option>
<option value="author">Author</option>
<option value="year">Year</option>
<option value="month">Month</option>
<option value="web">Url</option> </select>


y el switch es el siguiente


*switch($HTTP_POST_VARS["by"])
{
case "title": $_sql="Select * From referencia where titulo like '%".$titulo."%'"; break;
case "reference": $_pagi_sql="Select * From referencia where referencia like '%".$ref."%'"; break;
case "author": $_pagi_sql="Select * From referencia where autor like '%".$author."%'"; break;
case "year": $_pagi_sql="Select * From referencia where año like '%".$year."%'"; break;
case "month": $_pagi_sql="Select * From referencia where mes like '%".$month."%'"; break;
case "web": $_pagi_sql="Select * From referencia where url like '%".$url."%'"; break;
}


El problema es que al darle a buscar, me dice que by no está definida por lo que salen errores al ejecutar la consulta.

Voy bien encaminado? o hay alguna otra manera para buscar por varios patrones, lo digo por que en el formulario tengo varios campos de texto.

Alguien puede indicarme como solucionarlo?

Gracias
  #2 (permalink)  
Antiguo 03/12/2004, 10:59
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 8 meses
Puntos: 1
mmm... este post sería más de PHP. Si pudieran mover este post a ese foro te ayudarían mucho más... sin embargo tengo una pregunta. Que forma de envío estás usando en el formulario... POST, GET o PUT?.

saludos!
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
  #3 (permalink)  
Antiguo 03/12/2004, 12:13
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 20 años, 5 meses
Puntos: 0
lo hago por post

en el formulario, el metodo que utilizo es post.


Gracias
  #4 (permalink)  
Antiguo 03/12/2004, 12:17
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 20 años, 6 meses
Puntos: 2
prueba así

$by="";
if (isset($_POST["by"])){
$by=$_POST["by"];
}

switch($by)
{
case "title": $_sql="Select * From referencia where titulo like '%".$titulo."%'"; break;
case "reference": $_pagi_sql="Select * From referencia where referencia like '%".$ref."%'"; break;
case "author": $_pagi_sql="Select * From referencia where autor like '%".$author."%'"; break;
case "year": $_pagi_sql="Select * From referencia where año like '%".$year."%'"; break;
case "month": $_pagi_sql="Select * From referencia where mes like '%".$month."%'"; break;
case "web": $_pagi_sql="Select * From referencia where url like '%".$url."%'"; break;
}
__________________
¿Te apasiona el mundo del guión? El portal del guión

Última edición por living; 03/12/2004 a las 12:25
  #5 (permalink)  
Antiguo 03/12/2004, 12:37
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 20 años, 5 meses
Puntos: 0
lo del by ya no sale

Hola, lo del by, ya no sale, y después de retocar el switch, xq no habia puesto la misma variable en todas. Ahora me queda:

....
switch($by){
case .... :$sql=".................";
................
}

Ahora, me dice que la variable sql no queda definida, y no se porque, hay que ponerla antes tambien del switch con $sql="" ?

Gracias
  #6 (permalink)  
Antiguo 03/12/2004, 14:04
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 8 meses
Puntos: 1
me imagino que es un notice... en este caso sería mejor que no dejaras salir notices.. solo warnings y errors. Eso lo puedes configurar en el PHP.ini
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
  #7 (permalink)  
Antiguo 04/12/2004, 02:33
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 20 años, 5 meses
Puntos: 0
hola, gracias por responder

Hola, el problema es que al no quedarse definida la variable $sql, como utilizo un paginador que utiliza una variable _pagi_sql, lo que hago es que después del switch:

$_pagi_sql=$sql, pero como sql no queda definida, me da error el paginador diciendo que pagi_sql no esta definida.

No se que mas hacer, xq lo del switch no tiene ningún misterio.

Gracias
  #8 (permalink)  
Antiguo 04/12/2004, 03:53
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 20 años, 5 meses
Puntos: 0
he encontrado otra manera, pero....

Hola, al final he decidido dejar de lado lo del switch, y probar lo siguiente. Este codigo lo he encontrado aqui en forosdelweb, pero me da error en el vector busca.

if (!empty($_POST["ref"]))
{
$referencia=$_POST["ref"];
//vector donde almaceno las querys
$busca[]=" AND referencia like '%$referencia%'";

}
if (!empty($_POST["autor"]))
{
$autor=$_POST["autor"];
//vector donde almaceno las querys
$busca[]=" AND autor like '%$autor%'";

}

if (!empty($_POST["año"]))
{
$año=$_POST["año"];
//vector donde almaceno las querys
$busca[]=" AND año like '%$año%'";

}

if (!empty($_POST["mes"]))
{
$mes=$_POST["mes"];
//vector donde almaceno las querys
$busca[]=" AND mes like '%$mes%'";

}

if (!empty($_POST["titulo"]))
{
$titulo=$_POST["titulo"];
//vector donde almaceno las querys
$busca[]=" AND titulo like '%$titulo%'";

}

if (!empty($_POST["url"]))
{
$url=$_POST["url"];
//vector donde almaceno las querys
$busca[]=" AND url like '%$url%'";

}

$query="Select * from referencia where 1 ";
$elemBusc=count($busca);
//añadimos a la query las condiciones de búsqueda
$i=0;
while($i<$elemBusc)
{
$query.=$busca[$i];
$i++;
}

$_pagi_sql=$query;

......................


Concretamente, me da el error en la linea $elemBusc=count($busca);, y me dice que $busca no esta definido. Como tendría que declarar el vector? Si no recuerdo mal, en php se podia hacer como lo estoy haciendo yo, no?


gracias
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 23:41.