Foros del Web » Programando para Internet » PHP »

Duda con criterios selección en select

Estas en el tema de Duda con criterios selección en select en el foro de PHP en Foros del Web. Hola, A ver si me podeis ayudar con esto... muchas gracias. Estoy intentando crear desde un formulario una select en la que sea opcional seleccionar ...
  #1 (permalink)  
Antiguo 02/11/2005, 10:22
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Duda con criterios selección en select

Hola,

A ver si me podeis ayudar con esto... muchas gracias.

Estoy intentando crear desde un formulario una select en la que sea opcional seleccionar AND y OR para ahorrarme unas cuantas combinaciones a mano. No se si esto es posible y si lo es me dierais alguna pista de porque no me funciona.

Código PHP:
$AO1 addslashes($_POST['AO1']);
$AO2 addslashes($_POST['AO2']); 
Código PHP:
//busqueda
if (isset($first_name$AO1 isset($last_name1$AO2 isset($last_name2)) {
        
$sql_sel "SELECT * FROM researchers WHERE first_name='$first_name' $AO1 last_name1='$last_name1' $AO2 last_name2='$last_name2'";
                if (! 
$result_s mysql_query($sql_sel$conn)) {
                        echo 
mysql_error($conn);
                        
stderr ("Error querying: $sql_sel");
                }
                else {
                        
printf ("Your selected search values are: ".$first_name.", ".$last_name1.", ".$last_name2);
                        
$result $result_s;
                        include(
'../formato_salida.php');
                        
printf ("Number of query results obtained: %d"mysql_affected_rows());
                }
        }
else {
        print 
"<br><font style='color: black'>";
        
printf ("Missing Information, cannot search Researchers\n");
        print 
"</font></br>";
        } 
El error que me da es este:

Parse error: parse error, unexpected T_VARIABLE in resformsimplesearch_resname.php on line 93
  #2 (permalink)  
Antiguo 02/11/2005, 10:27
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
No he hecho la prueba pero prueba con

$validar = "isset($first_name) ".$AO1." isset($last_name1)". $AO2." isset($last_name2)";

if ($validar) {
.
.
.
}

saludos.

frank
  #3 (permalink)  
Antiguo 03/11/2005, 02:13
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Me ha funcionado, gracias, no me da error y me toma el AND o el OR que elija el usuario, pero al hacer la búsqueda en la base de datos, no funciona como esperaba ya que al introducir únicamente la primera variable no devuelve resultado de la búsqueda (he probado con un campo que existe en la base de datos) y si se introducen via formulario las dos primeras, solo devuelve resultado con la primera variable. En el caso de introducir las 3 lo devuelve con las tres. Como se puede hacer para que rellenando una o dos variables devuelva la búsqueda con las variables introducidas?
  #4 (permalink)  
Antiguo 03/11/2005, 02:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... podrías aclararte un poco más??. ¿qué recibes con $_POST['AOX']??. Supongo es un checkbox... ¿cómo es tu formulario?.

Un consejo... no te vayas por los resultado, vé por la query. Imprimela, primero fíjate que quede armada correctamente.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 03/11/2005, 02:55
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Si, con $_POST['AOX'] se toma AND o OR desde una lista desplegable.

Bueno, creo que ya se donde falla. Tienes razón, es la query ya que independientemente de lo que se elija siempre aparecen los dos AOX. Hay alguna forma para componer la query según los campos que se rellenen desde el formulario?

Última edición por aLiSHa_FW; 03/11/2005 a las 03:05
  #6 (permalink)  
Antiguo 03/11/2005, 03:20
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Hay alguna forma para componer la query según los campos que se rellenen desde el formulario?
Claro... usa empty() (que no es lo mismo que isset()) para ver si el campo ha sido rellenado o no y en base a ello compones la query...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 03/11/2005, 04:08
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Muchas gracias por tu ayuda pero me aclararía mejor un ejemplo; si cambio en la condición del if los isset() por empty(), como cambio luego la query? introduzco los empty() tambien en la query?? como se haría??

Código PHP:
if (isset($first_name$AO1 isset($last_name1$AO2 isset($last_name2)) {
        
$sql_sel "SELECT * FROM researchers WHERE first_name='$first_name' $AO1 last_name1='$last_name1' $AO2 last_name2='$last_name2'"
  #8 (permalink)  
Antiguo 03/11/2005, 05:07
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Lo que tienes es una limitacion en tu SELECT

Recuerda que en el caso de que omitas valores en las variables (parametros) que buscas en tu Tabla el "SIEMPRE" LAS VA A BUSCAR

Permiteme explicarme

Código PHP:
$sql_sel "SELECT * FROM researchers WHERE first_name='carlos' $AO1 last_name1='perez' $AO2 last_name2='perez'"
obviamente te dará los resultados esperados, pero...

Código PHP:
$sql_sel "SELECT * FROM researchers WHERE first_name='carlos' $AO1 last_name1='' $AO2 last_name2=''"
busca valores en blanco o faltantes de last_name1 y last_name2

Lo viste !!

Saludos

Frank
  #9 (permalink)  
Antiguo 03/11/2005, 05:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... si he entendido bien, quieres hacer una consulta dependiendo de qué datos recibes de un formulario. Pués bien, con empty() ves la existencia de dichos datos entonces en base a ello compones la query:
Código PHP:
$query"SELECT campos FROM tabla WHERE 1"// inicias
if(!empty($_POST['campo1'])) { // compruebas
      
$query.= "AND campo1= '".$_POST['campo1']."'"//añades

Un ejemplo sencillo... si el dato no se recibe hace una busqueda general (SELECT campos FROM tabla WHERE 1) de lo contrario límita la busqueda a el dato recibido (SELECT campos FROM tabla WHERE 1 AND campo1='dato_recibido').

El principio es ese... quizá debas aplicarlo a cada campo recibido o puedas implementarlo de otra manera. Repito: ¿cuál es tu formulario?

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 03/11/2005, 06:12
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Si, ese es el problema. Yo quiero una consulta que dependiendo de lo que inserte el usuario ponga unos parámetro de búsqueda. En el caso anterior, si hay 3 campos, que tome los 3, pero si hay uno, que el select tome solo uno y no busque los otros dos como vacíos. No se si es posible o si es un problema mio de programacion. Gracias por la ayuda.
  #11 (permalink)  
Antiguo 03/11/2005, 06:18
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
No se si es posible o si es un problema mio de programacion.
Sí, es posible... velo en el código que dejé. Sí, tu programación esta mal (o no la entiendo... ya hasta me perdí ).

Y antes de que otra cosa suceda, una vez más: ¿cuál es tu formulario?... me perdí con los "AND" y "OR" del principio. Ya no sé si son los datos recibidos, si son parte de la query ó de la condicional del if...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 03/11/2005, 07:22
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Lo del 'problema mio de programacion' queria decir que yo no se programar, no he estudiado nada de programación. El mensaje anterior lo escribi contestando a gonzalezmfrank y no lei tu mensaje anterior. Muchas gracias por el ejemplo, me ayuda mucho y ya tengo una idea más clara de como puedo hacerlo. El AND y OR simplemente era dar opcion al usuario de componer una consulta con AND y OR, sin tener muy claro su lugar en el script (ya que no se programar ;)).
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 06:42.