Foros del Web » Programando para Internet » PHP »

Error con anidado de if's

Estas en el tema de Error con anidado de if's en el foro de PHP en Foros del Web. Hola, estoy desde hace unos días intentando hacer andar un buscador de autos que necesito que me filtre por Marca y Tipo de auto.. El ...
  #1 (permalink)  
Antiguo 26/05/2011, 10:51
 
Fecha de Ingreso: abril-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 0
Error con anidado de if's

Hola, estoy desde hace unos días intentando hacer andar un buscador de autos que necesito que me filtre por Marca y Tipo de auto..
El programa falla cuando se filtra 'Todas las marcas' (que sería 999) y al mismo tiempo se filtra por algún tipo en específico.

Código PHP:
if(isset ($_POST['marcas']) && isset ($_POST['tipo']))
{

    
    if(
$_POST['marcas'] == 999) {
//Si está Marcas en 'Todas'
            
if($_POST['tipo'] == 999) {
//y si ademas esta tipo en 'todos'
                
$consule mysql_query ("SELECT Marca, Modelo, Tipo, Dominio, Anio, Precio
                           FROM Vehiculos AS v
                           INNER JOIN Modelos AS m ON ( m.idModelo = v.idModelo )
                           INNER JOIN Tipos AS t ON ( t.idTipo = v.idTipo )
                           INNER JOIN Marcas AS marc ON ( marc.idMarca = m.idMarca ) 
                           ORDER BY Marca"
) or die ('Fallo La Consulta1:'mysql_error());    
            }
//esta consulta anterior funciona
            
else {
//si tipo está en algo específico (auto o camioneta) 
                    
$consule mysql_query ("SELECT Marca, Modelo, Tipo, Dominio, Anio, Precio
                           FROM Vehiculos AS v
                           INNER JOIN Modelos AS m ON ( m.idModelo = v.idModelo )
                           INNER JOIN Tipos AS t ON ( t.idTipo = v.idTipo )
                           INNER JOIN Marcas AS marc ON ( marc.idMarca = m.idMarca ) 
                           WHERE Tipo = '$_POST[tipo]'" 
or die ('Fallo La Consulta2:'mysql_error()));
            }
//esta consulta anterior es la única que NO funciona

    
}
    else {
//si se filtra por marca
            
if($_POST['tipo'] != 999) {
//y ademas se filtra por tipo
                 
$consule mysql_query ("SELECT Marca, Modelo, Tipo, Dominio, Anio, Precio
                           FROM Vehiculos AS v
                           INNER JOIN Modelos AS m ON ( m.idModelo = v.idModelo )
                           INNER JOIN Tipos AS t ON ( t.idTipo = v.idTipo )
                           INNER JOIN Marcas AS marc ON ( marc.idMarca = m.idMarca )
                           WHERE Marca = '$_POST[marcas]' and Tipo = '$_POST[tipo]'"
) or die ('Fallo La Consulta3:'mysql_error());
//esto funcioan OK
            
}
            else {
//si se filtra por marca pero no por tipo
                
$consule mysql_query ("SELECT Marca, Modelo, Tipo, Dominio, Anio, Precio
                           FROM Vehiculos AS v
                           INNER JOIN Modelos AS m ON ( m.idModelo = v.idModelo )
                           INNER JOIN Tipos AS t ON ( t.idTipo = v.idTipo )
                           INNER JOIN Marcas AS marc ON ( marc.idMarca = m.idMarca ) 
                           WHERE Marca = '$_POST[marcas]'"
) or die ('Fallo La Consulta4:'mysql_error());
            }
//esto funciona OK
        
    
}


El error que me sale es:
Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /virtualmin/grupo07/public_html/automoviles.php on line 172
Y en la línea 172 tengo esto:

Código PHP:
while ($row mysql_fetch_array($consule)){
            
            echo 
"<tr> <td> $row[Marca] </td>";
            echo 
"<td>"$row['Modelo']. "</td>";
            echo 
"<td>"$row['Tipo']. "</td>";
            echo 
"<td>"$row['Dominio']. "</td>";
            echo 
"<td>"$row['Anio']. "</td>";
            echo 
"<td>"$row['Precio']. "</td></tr>";
            echo 
"<br>";

(que funciona en todas las consultas excepto la indicada)



Gracias
  #2 (permalink)  
Antiguo 26/05/2011, 11:00
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Error con anidado de if's

¿No sería "t.Tipo" en el where?
  #3 (permalink)  
Antiguo 26/05/2011, 11:00
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 3 meses
Puntos: 6
Respuesta: Error con anidado de if's

En esta linea omites comillas y puntos
Código PHP:
Ver original
  1. echo "<tr> <td> $row[Marca] </td>";

Sera por eso?
Código PHP:
Ver original
  1. echo "<tr> <td>". $row['Marca'] ."</td>";
__________________
El que teme preguntar, se averguenza de aprender.
  #4 (permalink)  
Antiguo 26/05/2011, 11:04
 
Fecha de Ingreso: abril-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 0
Respuesta: Error con anidado de if's

probe lo del t.Tipo y me sigue tirando el mismo error asi que no es eso :S,
con respecto a tu respuesta kez0 eso no varia anda igual de las dos formas,
  #5 (permalink)  
Antiguo 26/05/2011, 11:08
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Error con anidado de if's

Cita:
Iniciado por kez0 Ver Mensaje
En esta linea omites comillas y puntos
Código PHP:
Ver original
  1. echo "<tr> <td> $row[Marca] </td>";

Sera por eso?
Código PHP:
Ver original
  1. echo "<tr> <td>". $row['Marca'] ."</td>";

No, esto es correcto, se puede hacer.

Jamás he usado una consulta sin where, como tu la indicas para el caso en que marcas y tipo sea igual a 999. ¿por qué no imprimes en pantalla la consulta para ver cómo la genera y colocar dicha consulta en phpmyadmin o similar para ver si funciona?
  #6 (permalink)  
Antiguo 26/05/2011, 12:02
 
Fecha de Ingreso: abril-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 0
Respuesta: Error con anidado de if's

en phpmyadmin todo funciona correctamente, es cuando klo ejecuto enla pagina que surge el error

Etiquetas: anidados
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 20:53.