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

buscador con varios parametros

Estas en el tema de buscador con varios parametros en el foro de Mysql en Foros del Web. hola buenos dias, hoy acudo a ustedes para pedir su ayuda con algo sencillo creo!! tengo una pagina de busqueda y respuesta con 4 parametros ...
  #1 (permalink)  
Antiguo 06/09/2010, 07:47
Avatar de oscarios  
Fecha de Ingreso: septiembre-2004
Mensajes: 186
Antigüedad: 19 años, 7 meses
Puntos: 2
buscador con varios parametros

hola buenos dias, hoy acudo a ustedes para pedir su ayuda con algo sencillo creo!! tengo una pagina de busqueda y respuesta con 4 parametros de busqueda en dreamweaver, todo funciona ok pero cuando dejo uno de los parametros en blanco no me da resultados, me pasa algo ahi con el like and, bueno de php y sql no se soy dreamweaver dependiente,,,,,,,,mil gracias por su valiosa ayuda...

Código PHP:
Ver original
  1. <?php
  2. if(!isset($_GET['field'])){
  3.  $_GET['field']='Id';
  4. }
  5. if (!function_exists("GetSQLValueString")) {
  6. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  7. {
  8.   if (PHP_VERSION < 6) {
  9.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  10.   }
  11.  
  12.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  13.  
  14.   switch ($theType) {
  15.     case "text":
  16.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  17.       break;    
  18.     case "long":
  19.     case "int":
  20.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  21.       break;
  22.     case "double":
  23.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  24.       break;
  25.     case "date":
  26.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  27.       break;
  28.     case "defined":
  29.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  30.       break;
  31.   }
  32.   return $theValue;
  33. }
  34. }
  35.  
  36. $currentPage = $_SERVER["PHP_SELF"];
  37.  
  38. $maxRows_Recordset1 = 10;
  39. $pageNum_Recordset1 = 0;
  40. if (isset($_GET['pageNum_Recordset1'])) {
  41.   $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
  42. }
  43. $startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
  44.  
  45. $colname_Recordset1 = "-1";
  46. if (isset($_GET['ciudad'])) {
  47.   $colname_Recordset1 = $_GET['ciudad'];
  48. }
  49. $colpara_Recordset1 = "-1";
  50. if (isset($_GET['zona'])) {
  51.   $colpara_Recordset1 = $_GET['zona'];
  52. }
  53. $coltype_Recordset1 = "-1";
  54. if (isset($_GET['tipo'])) {
  55.   $coltype_Recordset1 = $_GET['tipo'];
  56. }
  57. $colrang_Recordset1 = "-1";
  58. if (isset($_GET['rango'])) {
  59.   $colrang_Recordset1 = $_GET['rango'];
  60. }
  61. mysql_select_db($database_conbanca, $conbanca);
  62. $query_Recordset1 = sprintf("SELECT inmuebles.id, inmuebles.foto_a, inmuebles.foto_b, inmuebles.foto_c, inmuebles.foto_d, inmuebles.foto_e, inmuebles.foto_f, inmuebles.ciudad, inmuebles.zona, inmuebles.barrio, inmuebles.direccion, inmuebles.tipo, inmuebles.valor, inmuebles.rango, inmuebles.area, inmuebles.habitaciones, inmuebles.codigo_inm, inmuebles.obs FROM inmuebles WHERE inmuebles.ciudad LIKE %s  AND inmuebles.zona LIKE %s  AND inmuebles.tipo LIKE %s  AND inmuebles.rango LIKE %s ORDER BY " .$_GET['field']." ".$_GET['order'], GetSQLValueString($colname_Recordset1, "text"),GetSQLValueString($colpara_Recordset1, "text"),GetSQLValueString($coltype_Recordset1, "text"),GetSQLValueString($colrang_Recordset1, "text"));
  63. $query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
  64. $Recordset1 = mysql_query($query_limit_Recordset1, $conbanca) or die(mysql_error());
  65. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  66.  
  67. if (isset($_GET['totalRows_Recordset1'])) {
  68.   $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
  69. } else {
  70.   $all_Recordset1 = mysql_query($query_Recordset1);
  71.   $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
  72. }
  73. $totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
  74.  
  75. $queryString_Recordset1 = "";
  76. if (!empty($_SERVER['QUERY_STRING'])) {
  77.   $params = explode("&", $_SERVER['QUERY_STRING']);
  78.   $newParams = array();
  79.   foreach ($params as $param) {
  80.     if (stristr($param, "pageNum_Recordset1") == false &&
  81.         stristr($param, "totalRows_Recordset1") == false) {
  82.       array_push($newParams, $param);
  83.     }
  84.   }
  85.   if (count($newParams) != 0) {
  86.     $queryString_Recordset1 = "&" . htmlentities(implode("&", $newParams));
  87.   }
  88. }
  89. $queryString_Recordset1 = sprintf("&totalRows_Recordset1=%d%s", $totalRows_Recordset1, $queryString_Recordset1);
  90. ?>
__________________
oscariosdw
  #2 (permalink)  
Antiguo 06/09/2010, 09:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: buscador con varios parametros

Lo siento. Las normas del foro no permiten tratar temas que no sean SQL o BBDD aquí (Función de la sección de Base de Datos).
Quítale todo lo que no sea SQL y veremos cuál es el problema... Aunque el asunto probablemente pase porque la sentencia quede incompleta al quitar un parámetro.

Tienes que tener en cuenta que si quitas un parámetro de la selección, todos los componentes de la sentencia SQL afectados por ese parámetro deben ser eliminados de la misma. En caso contrario pueden generar un error de sintaxis o un error de evaluación lógica
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/09/2010, 10:14
Avatar de oscarios  
Fecha de Ingreso: septiembre-2004
Mensajes: 186
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: buscador con varios parametros

gracias gnzsoloyo pero no entiendo, no puedo hacer preguntas de mysql? en foros del web o puse la pregunta en el foro no indicado?
que pena!!!
__________________
oscariosdw
  #4 (permalink)  
Antiguo 07/09/2010, 11:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: buscador con varios parametros

No debes postear código PHP ASP, VB, HTML, etc. Eso es lo que te decía y nada más.

Lo que te indicaba es que quites todo lo que está ensuciando el SQL y postea sólo lo que es es la consulta a la base. Los temas de programación tienen sus propios foros.

En definitiva, lo único que podemos ver acá es esto:
Código:
SELECT 
    inmuebles.id, 
    inmuebles.foto_a, 
    inmuebles.foto_b, 
    inmuebles.foto_c, 
    inmuebles.foto_d, 
    inmuebles.foto_e, 
    inmuebles.foto_f, 
    inmuebles.ciudad, 
    inmuebles.zona, 
    inmuebles.barrio, 
    inmuebles.direccion, 
    inmuebles.tipo, 
    inmuebles.valor, 
    inmuebles.rango, 
    inmuebles.area, 
    inmuebles.habitaciones, 
    inmuebles.codigo_inm, 
    obs 
FROM inmuebles 
WHERE inmuebles.ciudad LIKE %s  AND inmuebles.zona LIKE %s  AND inmuebles.tipo LIKE %s  AND inmuebles.rango LIKE %s 
ORDER BY
En este contexto tenemos al menos dos problemas:
1) Los valores compartivos de los LOKE están mal escritos porqe deberían quedar entre apóstrofes.
2) Desconocemos completamente los valores asignados al ORDER BY, porque el contenido de las variables de programación es inaccesible para nosotros. No sabemos si los parámetros están entrando bien o si al menos está entrando algo.

En cualquier cosa ten en cuenta lo que te dije antes:
Cita:
Tienes que tener en cuenta que si quitas un parámetro de la selección, todos los componentes de la sentencia SQL afectados por ese parámetro deben ser eliminados de la misma. En caso contrario pueden generar un error de sintaxis o un error de evaluación lógica
Y eso solo lo puedes hacer por programación, tema que está fuera del alcance de este foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/09/2010, 14:53
Avatar de oscarios  
Fecha de Ingreso: septiembre-2004
Mensajes: 186
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: buscador con varios parametros

oye gracias por tu respuesta, entonces ue me aconcejas me voy al foro de php? a ver si alguin me puede dar una manito ahi?.
__________________
oscariosdw
  #6 (permalink)  
Antiguo 07/09/2010, 16:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: buscador con varios parametros

Yo te sugeriría dos cosas:
Primero, siempre, antes de ponerla en un script de PHP, debes asegurarte que la consulta de SQL funcione por sí misma. Esto se hace de una forma fácil: Usa el PhpMyAdmin y copia la consulta, cambiando los parámetros que ingresas por programación por valores constantes (fijos) que puedar darte resultados y ejecutala allí.
- Si hay errores de sintaxis saltarán en ese momento.
- Si la consulta no devuelve los datos esperados, simplemente la puedes corregir también allí, hasta que el resultado sea correcto.

Una vez hecho eso, simplemente copias esa consulta y la pones en el script de PHP, cambiando los valores de prueba en ella por los parámetros que debe recibir.

Segundo, cuando tengas una consulta que sabes que funciona, el problema ya es de PHP: Debes verificar que la consulta quede armada con los valores ingresados correctamente como las consultas de prueba usadas. Verifica la construcción de la consulta y no te guíes por lo que supones que está bien: Verifica que esté bien, porque esos errores son indetectables en el SQL.

Ese es un modo de trabajar metódico. Cada fase se debe hacer con la herramienta adecuada, y no tratar de resolver los problemas de PHP sin primero saber si el SQL está bien, y viceversa.

¿Se entiende?

Entonces empieza por el principio: Prueba la consulta en el phpMyadmin o lo que uses, y luego ve a trabajrar el PHP.
U
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/09/2010, 16:59
Avatar de oscarios  
Fecha de Ingreso: septiembre-2004
Mensajes: 186
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: buscador con varios parametros

hola, bueno es que en realidad mi pregunta es como hago para que con la consulta que tengo me de resultados sin necesidad de especificar todos los parametros de busqueda, ciudad, zona, tipo, rango,,,si dejo ej, zona sin seleccionar no me da resultados.
gracias amigo por tu ayuda

Código SQL:
Ver original
  1. SELECT inmuebles.id, inmuebles.foto_a, inmuebles.foto_b, inmuebles.foto_c, inmuebles.foto_d, inmuebles.foto_e, inmuebles.foto_f, inmuebles.ciudad, inmuebles.zona, inmuebles.barrio, inmuebles.direccion, inmuebles.tipo, inmuebles.valor, inmuebles.rango, inmuebles.area, inmuebles.habitaciones, inmuebles.codigo_inm, inmuebles.masinfo FROM inmuebles WHERE inmuebles.ciudad LIKE &#37;s  AND inmuebles.zona LIKE %s  AND inmuebles.tipo LIKE %s  AND inmuebles.rango LIKE %s ORDER BY " .$_GET['field']." ".$_GET['order'], GetSQLValueString($colname_Recordset1, "text"),GetSQLValueString($colpara_Recordset1, "text"),GetSQLValueString($coltype_Recordset1, "text"),GetSQLValueString($colrang_Recordset1, "text"
__________________
oscariosdw
  #8 (permalink)  
Antiguo 07/09/2010, 17:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: buscador con varios parametros

Cita:
hola, bueno es que en realidad mi pregunta es como hago para que con la consulta que tengo me de resultados sin necesidad de especificar todos los parametros de busqueda, ciudad, zona, tipo, rango,,,si dejo ej, zona sin seleccionar no me da resultados.
gracias amigo por tu ayuda
Lo que debes hacer (y debes consultar en el foro de PHP) es cómo crear la sentencia en forma dinámica, esto es, ir verificando los parámetros que si se han ingresado e irle agregando partes de la sentencia (las condiciones) de acuerdo a las que se ingresan o no en el formulario.
Algo como:
Código PHP:
Ver original
  1. $sql = "SELECT * FROM tabla ";
  2. if($_GET['id']>0)
  3.  {$sql .= "WHERE id = ".$_GET['id'];}
¿Nunca has hecho nada parecido? Entonces consulta en el foro de PHP por la forma de crear una sentencia dinámicamente con condicione múltiples cuyo número y características se seleccionan en un formulario.
Pero yo insisto que antes de hacer eso deberías probar si la sentencia funciona bien o no, probándola con algún front end con valores fijos.

¿Nunca has usado el PhpMyadmin?
¿Jamás probaste una consulta con condiciones fijas? ¿Escribiste alguna consulta en él?

¿Qué tipo de práctica has tenido con el SQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 07/09/2010, 18:44
Avatar de oscarios  
Fecha de Ingreso: septiembre-2004
Mensajes: 186
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: buscador con varios parametros

hola gracias por tu ayuda, la verdad soy dreamweaver dependiente, si utilizo el phpmyadmin, pero solo para hacer la base de datos y no mas, siempre he hecho esto que quiero del buscador avanzado en asp y el generador de juego de registros de DW.
en ASP es algo asi como el like and o like or pero php y mysql no se como es.
__________________
oscariosdw
  #10 (permalink)  
Antiguo 08/09/2010, 03:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: buscador con varios parametros

Bueno, entonces te conviene hacer en el foro de ASP lo que te recomiendo: Pregunta cómo construir la sentencia dinámicamente según los datos opcionales ingresados en el formulario, y trata de usar algún front-end para probar las consultas.
Si vas a seguir trabajando con bases de datos desde web te recomiendo encarecidamente que leas del tema y aprendas algo de SQL o vas a chocar constantemente con problemas que se deben resolver por los medios separadamente como el de este tipo.
Infortunadamente, para darte una solución escrita yo debería tener acceso a tu base, probar la consulta para asegurarme de que funcione, y además programarte el ASP para que haga lo que te digo.
Creo que en este ultimo punto te pueden guiar mejor en el foro que menciono...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: parametros, buscadores
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 07:12.