Foros del Web » Programando para Internet » PHP »

Problema con ElseIf y &&

Estas en el tema de Problema con ElseIf y && en el foro de PHP en Foros del Web. Qué tal? Estoy usando algunos condicionales para ver qué ejecutar pero me está surgiendo un error, en algunos casos no devuelve nada, ya estuve probando ...
  #1 (permalink)  
Antiguo 30/11/2011, 10:28
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Problema con ElseIf y &&

Qué tal? Estoy usando algunos condicionales para ver qué ejecutar pero me está surgiendo un error, en algunos casos no devuelve nada, ya estuve probando todas las variables que conozco para ver que si lo podia solucionar, pero nada...

Lo primero que hago es enviar un formulario que son todas listas por post y despues levanto los datos aca:

Código PHP:
$titulo $_POST['titulo'];
$categoria $_POST['categoria'];
$aniodesde $_POST['aniodesde'];
$aniohasta $_POST['aniohasta'];
$combustible $_POST['combustible'];

if (
$combustible == 'todos') {
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        titulo = '$titulo' AND
        categoria = '$categoria' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();

    
elseif (
$titulo == "" and $categoria == "" and $combustible == 'todos'
{
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    }    
    
elseif (
$combustible == 'todos' &&  $categoria == '-- Seleccionar --')
{
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        titulo = '$titulo' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    }        
    

else {
        
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        titulo = '$titulo' AND
        categoria = '$categoria' AND
        combustible = '$combustible' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();

Especificamente cuando envio el formulario para que funcione alguno de esos dos ELSEIF, no va ni para atras... utilizo algunos otros que los borré para que el codigo no se haga tan tedioso, esos si funcionan a la perfección, pero estos dos que pongo aca no.

Es rarisimo, los datos del formulario los levanto todos correctamente, el error surge creo yo con "Combustible", si lo dejo solo

Código PHP:
if ($combustible == 'todos'
funciona correctamente, pero cuando lo sumo a algo

Código PHP:
elseif ($titulo == '' and $categoria == '' and $combustible == 'todos'
ya no funciona mas, por ejemplo:
Código PHP:
$titulo == "" and $categoria ==  "" 
va perfecto, solo me pasa cuando le agrego $combustible a la condicion y que sea igual a "todos"

Acá esta el form HTML para que vean que no hay ningun error
Código HTML:
Ver original
  1. <select name="combustible">
  2.                         <option selected="selected" value="todos" >Ver Todos</option>
  3.                         <option value="Gasolina" >Gasolina</option>
  4.                         <option value="Diesel" >Diesel</option>
  5.                         <option value="GNC" >GNC</option>
  6.                         <option value="Eléctrico" >Eléctrico</option>
  7.                         <option value="Híbrido" >Híbrido</option>
  8.                         <option value="Hidrógeno" >Hidrógeno</option>
  9.                         <option value="Alconafta" >Alconafta</option>
  10.                    </select>

La verdad que no se que puede ser, ojalá alguien pueda ayudarme

Muchas gracias por su tiempo!
__________________
Me gusta mucho ver Videos de carros en internet :)
  #2 (permalink)  
Antiguo 30/11/2011, 10:32
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: Problema con ElseIf y &&

Código PHP:
Ver original
  1. $titulo = $_POST['titulo'];
  2. $categoria = $_POST['categoria'];
  3. $aniodesde = $_POST['aniodesde'];
  4. $aniohasta = $_POST['aniohasta'];
  5. $combustible = $_POST['combustible'];
  6.  
  7. if ($combustible == 'todos') {
  8.     $buscar = mysql_query("SELECT id, titulo, categoria, imagen1
  9.    FROM autos
  10.    WHERE
  11.        titulo = '$titulo' AND
  12.        categoria = '$categoria' AND
  13.        ano BETWEEN $aniodesde AND $aniohasta
  14.    ORDER BY id DESC") or die (mysql_error());
  15. }
  16.    
  17. elseif ($titulo == '' and $categoria == '' and $combustible == 'todos')
  18. {
  19.     $buscar = mysql_query("SELECT id, titulo, categoria, imagen1
  20.    FROM autos
  21.    WHERE
  22.        ano BETWEEN $aniodesde AND $aniohasta
  23.    ORDER BY id DESC") or die (mysql_error());
  24.     }    
  25.    
  26. elseif ($combustible == 'todos' &&  $categoria == '-- Seleccionar --')
  27. {
  28.     $buscar = mysql_query("SELECT id, titulo, categoria, imagen1
  29.    FROM autos
  30.    WHERE
  31.        titulo = '$titulo' AND
  32.        ano BETWEEN $aniodesde AND $aniohasta
  33.    ORDER BY id DESC") or die (mysql_error());
  34.     }        
  35.    
  36.  
  37. else {
  38.         $buscar = mysql_query("SELECT id, titulo, categoria, imagen1
  39.    FROM autos
  40.    WHERE
  41.        titulo = '$titulo' AND
  42.        categoria = '$categoria' AND
  43.        combustible = '$combustible' AND
  44.        ano BETWEEN $aniodesde AND $aniohasta
  45.    ORDER BY id DESC") or die (mysql_error());
  46. }

En la línea 17 del código que has puesto por qué utilizas comillas dobles ""? ¿no serían comillas simples? Además creo que el problema es que al pasar por el primer if y encontrar la coincidencia no pasa al siguiente. Si no es eso no se que más puede ser.

Última edición por Arkaitz; 30/11/2011 a las 10:42
  #3 (permalink)  
Antiguo 30/11/2011, 10:48
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: Problema con ElseIf y &&

Las comillas ya probé de todas las maneras, con simples y con dobles en todos lados pero no va tampoco, algunos ELSEIF como dije funcionan, pero esos dos que posteo aca no van ni para atras.
__________________
Me gusta mucho ver Videos de carros en internet :)
  #4 (permalink)  
Antiguo 30/11/2011, 10:51
 
Fecha de Ingreso: mayo-2010
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Problema con ElseIf y &&

Las comillas pueden usarse simples o dobles, es lo mismo.

El problema que tenés es cuando le mandás combustible es igual a "todos"...

Porque en el primer if ya se te cumple la condicion y termina el programa..

Código PHP:
if ($combustible == 'todos') {

Entonces el segundo elseif nunca va a llegar...
Código PHP:
elseif ($titulo == "" and $categoria == "" and $combustible == 'todos'
{
    } 
Yo lo arreglaría así... (cambiar el primer if)...
Código PHP:
if ($combustible == 'todos' && $titulo !='' && $categoria !='') {

  #5 (permalink)  
Antiguo 30/11/2011, 11:25
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: Problema con ElseIf y &&

No funciona tampoco :(
__________________
Me gusta mucho ver Videos de carros en internet :)
  #6 (permalink)  
Antiguo 30/11/2011, 11:45
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: Problema con ElseIf y &&

Ahí voy avanzando usando "diferente a" (!=) Solo una condición no funciona, será cuestion de tocar y tocar hasta que arranque gracias Fabih por avivarme!
__________________
Me gusta mucho ver Videos de carros en internet :)
  #7 (permalink)  
Antiguo 30/11/2011, 11:56
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: Problema con ElseIf y &&

Ahi está, despues de horas de intentos así quedo el código final

Código PHP:
if ($titulo !='' && $categoria !='-- Seleccionar --' && $combustible == 'todos'
    {
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        titulo = '$titulo' AND
        categoria = '$categoria' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    } 

elseif (
$titulo == '' && $categoria == '' && $combustible !='todos'
    {
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        combustible = '$combustible' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    }
    
elseif (
$titulo == '' && $categoria == '' && $combustible == 'todos'
    {
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    }
    
    
/**/
elseif ($categoria == '-- Seleccionar --' && $combustible == 'todos')
    {
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        titulo = '$titulo' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    }        
    
/**/
    
elseif ($categoria == '-- Seleccionar --' && $combustible != 'todos'
    {
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        combustible = '$combustible' AND
        titulo = '$titulo' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    }

else 
    {
    
$buscar mysql_query("SELECT id, titulo, categoria, imagen1
    FROM autos
    WHERE
        titulo = '$titulo' AND
        categoria = '$categoria' AND
        combustible = '$combustible' AND
        ano BETWEEN $aniodesde AND $aniohasta
    ORDER BY id DESC"
) or die ();
    } 
Gracias a todos :)
__________________
Me gusta mucho ver Videos de carros en internet :)

Etiquetas: elseif, formulario, html, mysql, variables
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 01:55.