Foros del Web » Programando para Internet » PHP »

Consulta con varias variables (PHP-MySql)

Estas en el tema de Consulta con varias variables (PHP-MySql) en el foro de PHP en Foros del Web. Necesito crear una consulta en la que filtrar el resultado con la informacion que recojo de un formulario. Primero recojo los datos con "extract($_POST);". La ...
  #1 (permalink)  
Antiguo 02/06/2005, 11:33
 
Fecha de Ingreso: junio-2005
Mensajes: 10
Antigüedad: 18 años, 9 meses
Puntos: 0
Consulta con varias variables (PHP-MySql)

Necesito crear una consulta en la que filtrar el resultado con la informacion que recojo de un formulario. Primero recojo los datos con "extract($_POST);".
La duda me surge cuando al crear la sentencia select tengo que filtrar los campos que recojo del formulario. Son muchas las opciones de filtrado que ofrezco en el formulario, pero por lo general no se elegirán más de 3 ó 4 y el resto aparecerán vacias o nulas. Lo ideal es que funcionara la siguiente sentencia chapuza que por supuesto no tira ni a la de mil:
$sql = "select * from propiedad WHERE Foreach ($HTTP_POST_VARS as $campo=>$valor){ $campo = '$valor'}";
¿Cómo puedo hacer esta consulta?Gracias.
  #2 (permalink)  
Antiguo 02/06/2005, 12:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 15
Antigüedad: 18 años, 10 meses
Puntos: 0
yo haría un bucle que fuese recorriendo el $_POST y fuese añadiendo valores a la cadena q seria creada inicialmente con "select ..."
por cada valor le concatenaria un trozo nuevo a la cadena
  #3 (permalink)  
Antiguo 02/06/2005, 17:40
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 18 años, 10 meses
Puntos: 0
Hola!

Precisamente como lo estas comentando esta la solucion, asi:

Código PHP:
$filtros='';
foreach(
$_POST as $indice => $valor) {
  
$filtros.="$indice='$valor' AND";
}
if (
$filtros!='') {
  
$filtros=substr($SQLdelete,0,strlen($SQLdelete)-4);
  
$consulta="SELECT * FROM propiedad WHERE $filtros";
  
mysql_query($consulta) or die ("Error al Ejecutar la Consulta: ".mysql_error());
  
//todo lo demás...
} else {
  echo 
"No se especificaron Filtros de Seleccion"

Enjoy! xD
  #4 (permalink)  
Antiguo 03/06/2005, 04:08
 
Fecha de Ingreso: junio-2005
Mensajes: 10
Antigüedad: 18 años, 9 meses
Puntos: 0
No Funciona

me da un error en la consulta. La verdad es que no tengo ni idea de por qué me da ese error. Además tengo el problema añadido de que el array filtro añade entre los valores de filtro el campo del submit además de terminar con un AND que no creo que sea conveninete tampoco, verdad? Qué puedo hacer?

GRACIAS

He arregaldo el problema del submit cortando la cadena:
$filtro = substr("$filtros",0,-24);
Pero sigo teniendo el problema de que me devuelve valores del formulario con valor nulo para aquellos campos en los que se deja en blanco el formulario:
ref=''
Como puedo eliminar estas respuestas del POST o añadirles un valor comodín para que el filtrado sea negativo y coja todos los valores de ese campo?

GRACIAS DE NUEVO

Última edición por i12ibiza; 03/06/2005 a las 04:44 Razón: cumplimentar con más información
  #5 (permalink)  
Antiguo 03/06/2005, 17:10
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 18 años, 10 meses
Puntos: 0
Hola!

He arreglado los problemas que encontraste, lo probé con formularios que tienen textfield solamente: Checa tambien que cada textfield tiene el nombre de un campo de tu tabla a consultar. El submit lo dejamos sin -name-:
FORMULARIO.HTM :
Código PHP:
<form method='post' action='script.php'>
  <
input type='text' name='campo1' value=''><br>
  <
input type='text' name='campo2' value=''><br>
  <
input type='submit' value='Enviar'>
</
form
el -AND- que sobra ya lo tenia calculado desde la vez pasada, pero por un cambio de nombres de variables se me olvidó.
SCRIPT.PHP
Código PHP:
<?php
  $filtros
='';
  foreach(
$_POST as $indice => $valor) {
    if (
$valor!=''$filtros.="$indice='$valor' AND ";
  }
  if (
$filtros!='') {
    
$filtros=substr($filtros,0,strlen($filtros)-5); //se quita ultimo -AND-
    
$consulta="SELECT * FROM propiedad WHERE $filtros";
    
mysql_query($consulta) or die ("Error al Ejecutar la Consulta: ".mysql_error());
    
//todo lo demás...
  
} else {
    echo 
"No se especificaron Filtros de Seleccion";
  }
?>
Enjoy! xD
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 09:28.