Foros del Web » Programando para Internet » PHP »

Problemas con una consulta

Estas en el tema de Problemas con una consulta en el foro de PHP en Foros del Web. Holas!!! Tngo una tabla de eventos: con los siguientes campos: id_evento, id_cliente, evento, fecha, hora y status; y una de clientes: id_clientes, nombre, apellido, direccion, ...
  #1 (permalink)  
Antiguo 30/06/2006, 15:33
 
Fecha de Ingreso: junio-2006
Mensajes: 330
Antigüedad: 17 años, 10 meses
Puntos: 4
Problemas con una consulta

Holas!!! Tngo una tabla de eventos: con los siguientes campos: id_evento, id_cliente, evento, fecha, hora y status; y una de clientes: id_clientes, nombre, apellido, direccion, telefono, email. Tngo en una con dos pagina dos combos: uno evento y uno status, en el d evento coloq TODOS, grupos musicales y fuegos artificales, en el de status, coloque: TODOS, cancelado, apartado, reservado, ejecutado. Yo quiero q cuando coloque TODOS en los dos se me muestren todos los eventos y todos los status que esten registrados, si selecciono en evento TODOS y en status cancelado, se me muestren todos los cancelados registrados, si evento es igual a grupos musicales y status TODOS se me visualicen todos los status de grupos musicales, y asi sucesivamente, dependiendo de la seleccion. Yo intente realizar un script q aun no he terminado, donde la palabra TODOS me iba a determinar esto, el cual es el siguiente:

<?
$buscar_evento = $_POST['buscar_evento'];// una variable me toma el valor
$buscar_mes = $_POST['buscar_mes'];
$buscar_status = $_POST['buscar_status'];

if (($buscar_evento = "TODOS")&&($buscar_status = "TODOS"))
{
$sql = mysql_query ("SELECT * FROM eventos", $enlace);

echo "<table aling='left' width='100%'>";
while($fila = mysql_fetch_array($sql)){
$evento = $fila ["evento"];
$status = $fila ["status"];
echo "<tr><td aling='center' width='10%' class='tdevento'>".$evento."</td>";
echo "<td aling='left' width='10%' class='tdevento'>".$status."</td></tr></p> ";
}
echo "</table>";

}elseif (($buscar_evento = "TODOS")&&($buscar_status != "TODOS")) {
$sql2 = mysql_query ("SELECT evento, status FROM eventos WHERE status ='$buscar_status';", $enlace);
echo "<table aling='left' width='100%'>";
while($fila = mysql_fetch_array($sql2)){
$evento = $fila ["evento"];
$status = $fila ["status"];
echo "<tr><td aling='center' width='10%' class='tdevento'>".$evento."</td>";
echo "<td aling='left' width='10%' class='tdevento'>".$status."</td></tr></p> ";
}
echo "</table>";

}else echo "No existen registros con esa especificación";

?>


El primero me lo realiza bien pero el segundo no, y es esa una de las razones por las cuales no lo he podido culminar porq si elijo evento TODOS y status cancelado, o cualquier otro no me muestra nada...

Espero q me puedan ayudar porque lo necesito URGENTE.. gracias!!!
  #2 (permalink)  
Antiguo 30/06/2006, 22:46
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 19 años, 5 meses
Puntos: 0
De acuerdo

Hola Amiga, yo creo que podriamos normalizar un poco tu pequeña bd

que te parece si lo hacemos de la siguiente manera

Tabla Eventos
-------------

id_evento, id_cliente, evento, fecha, hora, cod_estado
Tabla Clientes
-------------

id_clientes, nombre, apellido, direccion, telefono, email

Tabla Status
-------------
codigo_estado , descripcion

Ok hasta aqui almacenamos en la tabla status
por ejemplo

1 - Activo
2 Inactivo
3 Cancelado
4 en proceso

y asi "n" estados

Y esto nos permitira hacer consultas con condiciones where y usar operadores del tipo AND o OR que recibiran los valores de los combo box.

Otro detalle en esta parte


Código PHP:
if (($buscar_evento "TODOS")&&($buscar_status "TODOS")) 
Lo podemos reemplazar por un OR y corregimos ese operador de Igualdad

Código PHP:
if (($buscar_evento=="TODOS")|| ($buscar_status=="TODOS")) 
Saludos

A. Acosta
  #3 (permalink)  
Antiguo 01/07/2006, 17:03
 
Fecha de Ingreso: junio-2006
Mensajes: 330
Antigüedad: 17 años, 10 meses
Puntos: 4
Sonrisa Sigo con problemas en la consulta.... ES URGENTE!!!

Hola Albert gracias por responder, pero aun sigo tniendo problemas e la consulta... mira cree una tabla de status y como id_status le asigne un numero a cada uno por ejemplo:

1 RESERVADO
2 CANCELADO
3 EJECUTADO
4 APARTADO

En la tabla eventos agregue el campo id_status y a cada uno de los eventos le asigne segun su condicion es decir, 1, 2, 3 o 4. Tambien en el combo de $status le asigne esos mismos valores y en la opcion TODOS le asigne el numero 0. Ahora bien si coloco como script lo siguiente me lo genera perfectamente:

if ($status == '0'){

$sql = mysql_query ("SELECT eventos.evento, eventos.id_status, status.id_status, status.tipo_status FROM eventos, status WHERE eventos.id_status = status.id_status", $enlace);

echo "<table aling='left' width='100%'>";
while($fila = mysql_fetch_array($sql))
{
$evento = $fila ["evento"];
$status = $fila ["tipo_status"];
echo "<tr><td aling='center' width='10%' class='tdevento'>".$evento."</td>";
echo "<td aling='left' width='10%' class='tdevento'>".$status."</td></tr></p> ";
}
echo "</table>";

}

Me busk todos los eventos perfectamente segun status...
Ahora bien mira las opciones de mi combo:

Evento: TODOS
Grupos Musicales
Status

Status: 0 TODOS
1 RESERVADO
2 CANCELADO
3 EJECUTADO
4 APARTADO

En evento no les asigne valor....
La idea es q cuando el usuario seleccione:
- TODOS en ambos le salgan todos los eventos con todos los status.

- Si selecciona TODOS en evento y en status RESERVADO, le salga nada mas todos los eventos RESERVADOS.

- Si selecciona GRUPOS MUSICALES, y en status TODOS, que le muestre todos los status pero solo del evento GRUPOS MUSICALES.

- Si selecciona GRUPOS MUSICALES, y en status uno por ejemplo CANCELADO, entonces que le muestre todos los CENCELADOS de GRUPOS MUSICALES.

y asi sucesivamente, no se si es q estoy interpretando mal la situación, o estoy redundando, pero mira el script que efectue pero no me hace nada...

if (($status == '0')&&($evento == 'TODOS')){

$sql = mysql_query ("SELECT eventos.evento, eventos.id_status, status.id_status, status.tipo_status FROM eventos, status WHERE eventos.id_status = status.id_status", $enlace);

echo "<table aling='left' width='100%'>";
while($fila = mysql_fetch_array($sql))
{
$evento = $fila ["evento"];
$status = $fila ["tipo_status"];
echo "<tr><td aling='center' width='10%' class='tdevento'>".$evento."</td>";
echo "<td aling='left' width='10%' class='tdevento'>".$status."</td></tr></p> ";
}
echo "</table>";

}elseif (($status != '0')&&($evento != 'TODOS')){

$sql = mysql_query ("SELECT eventos.evento, eventos.id_status, status.id_status, status.tipo_status FROM eventos, status WHERE eventos.id_status = '$status' AND status.id_status = '$status' AND eventos.evento = '$evento' ", $enlace);

echo "<table aling='left' width='100%'>";
while($fila = mysql_fetch_array($sql))
{ $id_status = $fila ["$id_status"];
$evento = $fila ["evento"];
$status = $fila ["tipo_status"];
echo "<tr><td aling='center' width='10%' class='tdevento'>".$evento."</td>";
echo "<tr><td aling='center' width='10%' class='tdevento'>".id_status."</td>";
echo "<td aling='left' width='10%' class='tdevento'>".$status."</td></tr></p> ";
}
echo "</table>";

}

Coloque el operador AND porque pienso q ambas deben cumplirse para la realizacion de la consulta...

POR FAVOR AYUDAME.... LO NECESITO SABER URGENTE... Y DE NUEVO GRACIAS POR HABER RESPONDIDO... Este es mi msn [email protected], me conecto todas las noches...
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 13:42.