Foros del Web » Programando para Internet » PHP »

Búsquedas filtradas

Estas en el tema de Búsquedas filtradas en el foro de PHP en Foros del Web. Buenas! Estoy usando el Paginator para paginar mis búsquedas y me va genial, pero ahora quiero aplicar unos filtros antes de realizar la búsqueda. Será ...
  #1 (permalink)  
Antiguo 11/10/2010, 02:38
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Búsquedas filtradas

Buenas! Estoy usando el Paginator para paginar mis búsquedas y me va genial, pero ahora quiero aplicar unos filtros antes de realizar la búsqueda.
Será elegir una opción de 2 Select box y escribir en dos campos de texto (elegir provincia, introducir nombre, e-mail i elegir si el usuario está deshabilitado o no).

He hecho lo siguiente:
Código PHP:
Ver original
  1. if ($_POST["SNAYprovincia"] <> 0) {
  2.         if ($Condicion == "") {
  3.             $Condicion = $Condicion ." WHERE clau_provincia = ". $_POST["SNAYprovincia"];
  4.         }else{
  5.             $Condicion = $Condicion ." AND clau_provincia = ". $_POST["SNAYprovincia"];
  6.         }
  7.     }
  8.     if (strlen($_POST["TNAYnom"]) > 0) {
  9.         if ($Condicion == "") {
  10.             $Condicion = $Condicion ." where (nom like '%". str_replace($_POST["TNAYnom"],"'","´") ."%' or cognom1 like '%". str_replace($_POST["TNAYnom"],"'","´") ."%' or cognom2 like '%". str_replace($_POST["TNAYnom"],"'","´") ."%')";
  11.         }else{
  12.             $Condicion = $Condicion &" and (nom like '%". str_replace($_POST["TNAYnom"],"'","´") ."%' or cognom1 like '%". str_replace($_POST["TNAYnom"],"'","´") &"%' or cognom2 like '%". str_replace($_POST["TNAYnom"],"'","´") ."%')";
  13.         }
  14.     }
  15.     if (strlen($_POST["TNAYmail"]) > 0) {
  16.         if ($Condicion == "") {
  17.             $Condicion = $Condicion ." where mail like '%". str_replace($_POST["TNAYmail"],"'","´") ."%'";
  18.         }else{
  19.             $Condicion = $Condicion ." and mail like '%". str_replace($_POST["TNAYmail"],"'","´") ."%'";
  20.         }
  21.     }
  22.     if (strlen($_POST["SNAYdeshabilitat"]) > 0 ){
  23.         if (clng($_POST["SNAYdeshabilitat"]) == 1) {
  24.             if ($Condicion == "") {
  25.                 $Condicion = $Condicion ." where deshabilitat = true";
  26.             }else{
  27.                 $Condicion = $Condicion ." and deshabilitat = true";
  28.             }
  29.         }else{
  30.             if ($Condicion == "") {
  31.                 $Condicion = $Condicion ." where deshabilitat = false";
  32.             }else{
  33.                 $Condicion = $Condicion ." and deshabilitat = false";
  34.             }
  35.         }
  36.     }

Y luego en la consulta:

"SELECT * FROM usuaris '".$Condicion."'"

pero me da error de syntaxis. Como lo véis?
  #2 (permalink)  
Antiguo 11/10/2010, 03:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Búsquedas filtradas

La consulta ceo que debe ser así:
Código PHP:
Ver original
  1. "select * from usuaris where like $condicion";
  #3 (permalink)  
Antiguo 11/10/2010, 03:45
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Búsquedas filtradas

Es verdad.

Pero ahora me sale:

Notice: Undefined variable: Condicion

En las 2 primeras lineas donde sale la variable $Condicion!
  #4 (permalink)  
Antiguo 11/10/2010, 03:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Búsquedas filtradas

Pués condicion no tendrá ningún valor asociado prueba a darle alguno por ejemplo:
Código PHP:
Ver original
  1. $condicion=3
  #5 (permalink)  
Antiguo 11/10/2010, 03:52
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Búsquedas filtradas

Si te fijas, Condicion es el que controla si elijo algo en los filtros. Primero controlo que Condicion = "", es decir que no tenga ningun valor, y si es asi, le asigno el trocito de consulta que luego utilizaré para filtrar.

No sé si me explico.
  #6 (permalink)  
Antiguo 11/10/2010, 03:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Búsquedas filtradas

no estoy seguro pero en vez de esto:
Código PHP:
Ver original
  1. $Condicion = $Condicion ." WHERE clau_provincia = ". $_POST["SNAYprovincia"];


prueba con esto haber si es eso:
Código PHP:
Ver original
  1. $Condicion = " WHERE clau_provincia = ". $_POST["SNAYprovincia"];
  #7 (permalink)  
Antiguo 11/10/2010, 04:04
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Búsquedas filtradas

Bueno además de lo que me acabas de decir, he cambiado el $Condicion == "" por un empty($Condicion).

Ahora mismo no me da ningún error, pero la consulta no me la hace bien. Este es el echo de la consulta filtrando por el nombre:

Código PHP:
Ver original
  1. SELECT * FROM usuaris where (nom like '%´%' or cognom1 like '%´%' or cognom2 like '%´%')


Código PHP:
Ver original
  1. if ($_POST["SNAYprovincia"] <> 0) {
  2.         if (empty($Condicion)) {
  3.             $Condicion = " WHERE clau_provincia = ". $_POST["SNAYprovincia"];
  4.         }else{
  5.             $Condicion = " AND clau_provincia = ". $_POST["SNAYprovincia"];
  6.         }
  7.     }
  8.     if (strlen($_POST["TNAYnom"]) > 0) {
  9.         if (empty($Condicion)) {
  10.             $Condicion = " where (nom like '%". str_replace($_POST["TNAYnom"],"'","´") ."%' or cognom1 like '%". str_replace($_POST["TNAYnom"],"'","´") ."%' or cognom2 like '%". str_replace($_POST["TNAYnom"],"'","´") ."%')";
  11.         }else{
  12.             $Condicion = " and (nom like '%". str_replace($_POST["TNAYnom"],"'","´") ."%' or cognom1 like '%". str_replace($_POST["TNAYnom"],"'","´") &"%' or cognom2 like '%". str_replace($_POST["TNAYnom"],"'","´") ."%')";
  13.         }
  14.     }
  15.     if (strlen($_POST["TNAYmail"]) > 0) {
  16.         if (empty($Condicion)) {
  17.             $Condicion = " where mail like '%". str_replace($_POST["TNAYmail"],"'","´") ."%'";
  18.         }else{
  19.             $Condicion = " and mail like '%". str_replace($_POST["TNAYmail"],"'","´") ."%'";
  20.         }
  21.     }
  #8 (permalink)  
Antiguo 11/10/2010, 04:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Búsquedas filtradas

Pués la verdad lo recomendable sería hacer la consulta en consola o en phpmyadm, y ver que pasa por lo menos ya no da error.
  #9 (permalink)  
Antiguo 11/10/2010, 04:12
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Búsquedas filtradas

Vale, estaba poniendo el $COndicion en la consulta equivocada jajaja.

Gracias!

Etiquetas: Ninguno
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 18:29.