Foros del Web » Programando para Internet » PHP »

Código PHP consulta múltiple a BD

Estas en el tema de Código PHP consulta múltiple a BD en el foro de PHP en Foros del Web. Hola a todos. Soy un poco novato en el tema, tengo un código con el que pretendo consultar una BD mysql, en ella hay distintos ...
  #1 (permalink)  
Antiguo 15/07/2010, 03:44
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Código PHP consulta múltiple a BD

Hola a todos.

Soy un poco novato en el tema, tengo un código con el que pretendo consultar una BD mysql, en ella hay distintos campos, "ciudad", "categoría", ...
Me gustaría hacer consulta al campo categoría, para que me encuentre locales, o me gustaría encontrar la cadena "locales en valencia" o "locales en alquiler".
Estos campos se encuentran en la tabla contactos de la BD.

Sería correcto utilizar el siguiente código, como puedo distribuir "campo", "categoria".

Código PHP:
Ver original
  1. <?
  2. $sql = "SELECT * FROM tabla where 1=1 ";
  3. if($_GET["cadena1"] != '')$sql .= " AND campo1 = '".$_GET["cadena1"]."'";
  4. if($_GET["cadena2"] != '')$sql .= " AND campo2 = '".$_GET["cadena2"]."'";
  5. if($_GET["cadena3"] != '')$sql .= " AND campo3 = '".$_GET["cadena3"]."'";
  6. $sql .= " ORDER BY campo1";
  7. ?>

Gracias.

Última edición por rafaxusirati; 15/07/2010 a las 04:47
  #2 (permalink)  
Antiguo 15/07/2010, 03:54
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Código PHP consulta múltiple a BD

seria correcto, pero te aconsejaria que el espacio detras del 1=1 lo sacaras.
ademas mejor que poner campo1 = '".$_GET["cadena1"]."'"; personalmente lo haria con un LIKE:
Código PHP:
campo1 LIKE '%".$_GET["cadena1"]."%'
No se si las comillas estan bien puestas. xD chequealas.
  #3 (permalink)  
Antiguo 15/07/2010, 04:22
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Código PHP consulta múltiple a BD

Gracias Vallu.

Entiendo que quedaría:

Código PHP:
Ver original
  1. <?
  2. $sql = "SELECT * FROM contactos where 1=1 ";
  3. if($_GET["categoria"] != '')$sql .= " AND categoria LIKE '%".$_GET["cadena1"]."%';
  4. if($_GET["ciudad"] != '')$sql .= " AND ciudad LIKE '%".$_GET["cadena2"]."%';
  5. if($_GET["..."] != '')$sql .= " AND ... LIKE '%".$_GET["cadena3"]."%';
  6. $sql .= " ORDER BY campo1";
  7. ?>

-----

Donde la tabla de la BD "contactos":
$sql = "SELECT * FROM contactos where 1=1 ";

Y cada una de los campos:
if($_GET["categoria"] != '')$sql .= " AND categoria LIKE '%".$_GET["cadena1"]."%';
...

Última edición por rafaxusirati; 15/07/2010 a las 04:48
  #4 (permalink)  
Antiguo 15/07/2010, 04:50
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Código PHP consulta múltiple a BD

Correcto, pero pon:
Código PHP:
$sql "SELECT * FROM contactos where 1=1"
He borrado el espacio al final, para que por si acaso no de problemas.
Por cierto esa clausula where de 1=1 sirve para algo o se puede sacar?
Tambien decirte que las comillas estan mal, ahora miro a ver como se pondrian. xD
  #5 (permalink)  
Antiguo 15/07/2010, 04:53
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Código PHP consulta múltiple a BD

Con las comillas arregladas queda así:
Código PHP:
<?php
$sql 
"SELECT * FROM contactos where 1=1";
if(
$_GET["categoria"] != '')$sql .= " AND categoria LIKE '%".$_GET['cadena1']."%'";
if(
$_GET["ciudad"] != '')$sql .= " AND ciudad LIKE '%".$_GET['cadena2']."%'";
if(
$_GET["..."] != '')$sql .= " AND ... LIKE '%".$_GET['cadena3']."%'";
$sql .= " ORDER BY campo1";
?>
EDIT: Quieres ordenar por orden ascendiente o descendiente?
  #6 (permalink)  
Antiguo 15/07/2010, 05:01
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Código PHP consulta múltiple a BD

ok.
Código PHP:
Ver original
  1. <?php
  2. $sql = "SELECT * FROM contactos where 1=1";
  3. if($_GET["categoria"] != '')$sql .= " AND categoria LIKE '%".$_GET['cadena1']."%'";
  4. if($_GET["ciudad"] != '')$sql .= " AND ciudad LIKE '%".$_GET['cadena2']."%'";
  5. if($_GET["..."] != '')$sql .= " AND ... LIKE '%".$_GET['cadena3']."%'";
  6. $sql .= " ORDER BY campo1";
  7. ?>

Soy bastante novato en el tema, a decir verdad, no se el significado de 1=1.

- Donde muestra cadena1, cadena2, cadena3,
¿tengo que modificarlo por algún dato "ciudad","local"?

Me gustaría ordenarlo por fecha, ya que dispongo del campo fecha.

Muchas gracias

Última edición por rafaxusirati; 15/07/2010 a las 05:15
  #7 (permalink)  
Antiguo 15/07/2010, 05:16
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Código PHP consulta múltiple a BD

cadena1, cadena2, etc son los nombres de las variables que has pasado por $_GET. Si no sabes que has pasado antes de todo ese codigo haz un print_r($_GET);

El where 1=1 lo has puesto para así hacer entender que siempre habrá una clausula WHERE.

Y en cuanto a ordernar por fecha haz: ORDER BY tu_campo_fecha DESC

Sobretodo ten cuidado que el codigo que has puesto en tu anterior post no es el mismo que te he dado yo, en el mio estan corregidas las comillas, en el tuyo no
  #8 (permalink)  
Antiguo 15/07/2010, 05:28
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Código PHP consulta múltiple a BD

Ok.
Esta noche me pongo
Código PHP:
Ver original
  1. <?php
  2. $sql = "SELECT * FROM contactos where 1=1";
  3. if($_GET["categoria"] != '')$sql .= " AND categoria LIKE '%".$_GET['cadena1']."%'";
  4. if($_GET["ciudad"] != '')$sql .= " AND ciudad LIKE '%".$_GET['cadena2']."%'";
  5. if($_GET["..."] != '')$sql .= " AND ... LIKE '%".$_GET['cadena3']."%'";
  6. $sql .= "ORDER BY fecha DESC";
  7. ?>
Ya modifiqué las comillas.
Pero lo que me comentas de nombres de las variables pasadas por $_GET. y de hacer un print_r($_GET); ??, esta noche lo pruebo y te digo algo!!
Muchas gracias por todo.
  #9 (permalink)  
Antiguo 15/07/2010, 05:34
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Código PHP consulta múltiple a BD

De nada, entonces mañana me dice que tal fue y continuamos.
  #10 (permalink)  
Antiguo 15/07/2010, 15:43
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Código PHP consulta múltiple a BD

Hola, buenas noches / días.
Finalmente monté este código, funciona correctamente en la busqueda de palabras de un mismo campo, pero, todavía no encuentro la manera de hacer una búsqueda múltiple en distintos campos.

Gracias.


Código PHP:
Ver original
  1. <?php require_once('Connections/contactos.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  5. {
  6.   if (PHP_VERSION < 6) {
  7.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.   }
  9.  
  10.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  11.  
  12.   switch ($theType) {
  13.     case "text":
  14.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  15.       break;    
  16.     case "long":
  17.     case "int":
  18.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  19.       break;
  20.     case "double":
  21.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  22.       break;
  23.     case "date":
  24.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  25.       break;
  26.     case "defined":
  27.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  28.       break;
  29.   }
  30.   return $theValue;
  31. }
  32. }
  33.  
  34. $var1_obtenerCita = "-1";
  35. if (isset($_POST["terminoBusca"])) {
  36.   $var1_obtenerCita = $_POST["terminoBusca"];
  37. }
  38. mysql_select_db($database_contactos, $contactos);
  39. $query_obtenerCita = sprintf("SELECT * FROM contactos WHERE contactos.descripcionanuncio LIKE %s ORDER BY contactos.descripcionanuncio ", GetSQLValueString("%" . $var1_obtenerCita . "%", "text"));
  40. $obtenerCita = mysql_query($query_obtenerCita, $contactos) or die(mysql_error());
  41. $row_obtenerCita = mysql_fetch_assoc($obtenerCita);
  42. $totalRows_obtenerCita = mysql_num_rows($obtenerCita);$var1_obtenerCita = "-1";
  43. if (isset($_POST["terminoBusca"])) {
  44.   $var1_obtenerCita = $_POST["terminoBusca"];
  45. }
  46. mysql_select_db($database_contactos, $contactos);
  47. $query_obtenerCita = sprintf("SELECT * FROM contactos WHERE contactos.descripcionanuncio LIKE %s ORDER BY contactos.fechaentrada DESC ", GetSQLValueString("%" . $var1_obtenerCita . "%", "text"));
  48. $obtenerCita = mysql_query($query_obtenerCita, $contactos) or die(mysql_error());
  49. $row_obtenerCita = mysql_fetch_assoc($obtenerCita);
  50. $totalRows_obtenerCita = mysql_num_rows($obtenerCita);
  51. ?>
  52. <body>
  53. <form id="form1" name="form1" method="post" action="">
  54.   <label>Palabras clave:
  55.     <input type="text" name="terminoBusca" id="terminoBusca" />
  56.   </label>
  57.   <input type="submit" name="Buscar" id="Buscar" value="Buscar" />
  58. <strong><a href="buscar por palabra clave.php"></a></strong><strong><a href="buscar por palabra clave.php"></a></strong>
  59. </form>
  60. <?php do { ?>
  61. <a href="fichas_comentarios.php?idempleado=<?php echo $row_obtenerCita['idempleado']; ?>"><?php echo ucfirst($row_obtenerCita['tituloanuncio']); ?></a>
  62. <p>
  63.   <?php } while ($row_obtenerCita = mysql_fetch_assoc($obtenerCita)); ?>
  64.     <a href="fichas_comentarios.php?idempleado=<?php echo $row_obtenerCita['idempleado']; ?>"></a>
  65.   </p>
  66. <p>&nbsp;</p>
  67. <p align="center">&nbsp;</p>
  68. <p align="center">&nbsp;</p>
  69. </body>
  70. </html>
  71. <?php
  72. mysql_free_result($obtenerCita);
  73. ?>
  #11 (permalink)  
Antiguo 16/07/2010, 02:24
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Código PHP consulta múltiple a BD

Si todos los campos están dentro de la misma tabla, no es el codigo que hemos implementado anteriormente?

Etiquetas: bd, múltiple
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 03:47.