Foros del Web » Programando para Internet » PHP »

crear consulta

Estas en el tema de crear consulta en el foro de PHP en Foros del Web. Buenos dias, tengo un problema y os lo explico: Tengo una lista desplegable que coge valores desde la base de datos y me lo hace ...
  #1 (permalink)  
Antiguo 09/02/2005, 02:10
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
crear consulta

Buenos dias, tengo un problema y os lo explico:

Tengo una lista desplegable que coge valores desde la base de datos y me lo hace bien, le puesto que al cargar la pagina tengo un valor por defecto "Seleccione un registro", pero que ese no tiene ninguna función mas bien estético.

El problema es que tengo 2 campos por la que puedo realizar la búsqueda, dependiendo si tiene seleccionada una opcion de base de datos en alguno de ellos es decir:

campo1: Juan
campo2: seleccione un objeto

Me haria la consulta en base a campo1, pero si tengo:

campo1: seleccione autor
campo2: casa

Me haria la consulta en base a campo2, pero si tengo:

campo1: Juan
campo2: mesa

Me haria la consulta por los 2 campos.

¿como tendría q construir la consulta, dependiendo si me ha codigo un valor de base de datos y que cuando encuentre un valor por defecto por ese campo no lo busque?
  #2 (permalink)  
Antiguo 09/02/2005, 03:42
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... Creo deberías explicar mejor tu problema...

Por ahora entiendo esto: tienes 2 menús despeglables (selects pués) y según lo seleccionado en éstos vaz a realizar una busqueda, por lo tanto puede haber 2 casos:
1) solo un select con una opción valida (el otro con el valor por defecto)
2) ambos selects con opciones válidas.

Así pués, sí tenemos:
Código HTML:
<select name="select1">
   <option value="">X Defecto
   <option value="1"> Primero
   <option value="n"> ...etc
</select>
<select name="select2">
   <option value="">X Defecto
   <option value="1">... etc, etc, etc
</select> 
... pués no hay mayor ciencia. Si lo ves bien la opción por defecto tiene un valor nulo por lo que podemos hacer:
Código PHP:
<?php
$se1
=$_POST["select1"];
$se2=$_POST["select2"];
if(empty(
$se1)) {echo "Primer select sin valor"; } else { echo $se1; }
if(empty(
$se2)) {echo "Segundo select sin valor"; } else { echo $se2; }
... ésto para que veas que no hay ciencia en recoger y "verificar" los valores...

Ahora, la forma simple y laboriosa es que crees una query para cada caso y con if asignar la query a usar.
La otra forma es ir aumentando tu query si tal condición se cumple. Esto es:
Código PHP:
$query"SELECT..."//inicias
if(condición) { $query.="agregas algo a tu query"; } 
No te puedo ayudar más en esto porque tengo una pequeña confución en a lo que llamas "campo"... no sé si tus valores seleccionados son nombres de campos de tu tabla y vaz a trabajar sobre ellos... por lo que tu query seria algo así SELEC campo1, campo2 FROM tabla ó lo seleccionado son palabras clave que vaz a buscar... ... todo depende...

Bueno... si te entendí bien espero igual tu me hayas entendido y sobre todo te haya servido... Cualquier otra cosa pregunta. Suerte!!!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 09/02/2005, 04:03
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
muchas gracias era eso.

Tendre q poner:


<option value="">El valorpor Defecto
<option value="1">Opciones q sacare desde la base de datos

Eso lo hare en los 2 select, y cuando recoga las variables mirare si esta vacio:

if !(empty($se1)) and !(empty($se2))
{
select * from tabla where campo1=$se1 and campo2=$se2
}
else
if(empty($se1))
{
select * from tabla where campo1=$se1
}
else
{
select * from tabla where campo2=$se2
}
}


Estaria bien asi?
  #4 (permalink)  
Antiguo 09/02/2005, 04:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... ... yo ocuparia algo así:
Código PHP:
if (!empty($se1) OR !empty($se2)) {
     
$query"SELECT * FROM tabla WHERE "//inicias

     
if(!empty($se1)) {
          
$query.= "campo1='$se1' "//existe! lo agragamos a la busqueda
    
}
    if(!empty(
$se1) AND !empty($se2)) { 
          
$query.= "AND "//Si vamos a ocupar los 2 debemos indicarlo.
     
}
     if(!empty(
$se2)) {
          
$query.= "campo2='$se2' "// ya sea con $se1 o sin él... 
    
}
echo 
$query//Solo para que veas cómo queda. Borralo después.
} else { echo "Ambos selects vacios ;-)"; } 
Checa como la query no es más que texto que debes guardar en una variables porque no sabes cómo va a quedar... así le vaz agregando las partes que quieras y una vez ya armada la llamas por $query.

Esta es una forma sencilla de ir armando tu query cuando hay pocos campos a insertar... si ocuparas más valores podrias meterlos en un array y armar la query con un bucle..

Un ejemplo de eso hice en http://www.forosdelweb.com/showthrea...418#post957418 que por cierto no me dijieron siquiera si les fué útil....

Ojo! también verifica los errores en tu sintaxis!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 09/02/2005 a las 04:26 Razón: comentar el código
  #5 (permalink)  
Antiguo 09/02/2005, 04:28
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
lo probare esta noche, muchas gracias, ya te comentare como me ha ido ;)
  #6 (permalink)  
Antiguo 09/02/2005, 13:58
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
jeje ya lo he probado y funciona ;) muchas gracias ;)
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 22:07.