if y else son ambos verdaderos

Lo siento por esta pregunta loca, ¡pero parece ser extraño!
Tengo un código:

if(isset($_GET['tablename'])){
    $tablename=$_GET['tablename'];
    var_dump($tablename);
    echo 'Table is set <br/>';
    if($tablename="product"){
        echo 'Table is product <br/>';
    };
    if($tablename="demanded"){
        echo 'Table is demanded <br/>';
    };
};

y esto es lo que veo en la pantalla:

cadena 'demandado' (longitud=8)
la mesa esta puesta
La tabla es producto
Se pide mesa

por favor ayuda, quiero ejecutar subconsultas según el valor de la tabla (producto o demandado)

preguntado el 04 de julio de 12 a las 09:07

Estás asignando valor sin comparar el cheque mobius y también la respuesta de blaster:

4 Respuestas

Deberías usar == para hacer la comparación, ni uno solo =

Respondido 04 Jul 12, 09:07

Utiliza la elseif con == or === (para comparación estricta):

if($tablename == "product"){
    echo 'Table is product <br/>';
}
elseif($tablename == "demanded"){
    echo 'Table is demanded <br/>';
}

Así debería ser tu código:

if(isset($_GET['tablename'])){
    $tablename=$_GET['tablename'];
    var_dump($tablename);
    echo 'Table is set <br/>';

    if($tablename === "product"){
        echo 'Table is product <br/>';
    }
    elseif($tablename === "demanded"){
        echo 'Table is demanded <br/>';
    }
}

Tu tambien tenias ; al final de la llave final } que no es necesario, corregido también en el código anterior.

Errores que tuviste

  • Estabas usando = en lugar de == or ===
  • Tu tenias ; antes de terminar las llaves } por condiciones

Mejoras que puede hacer

  • Utiliza la === en lugar de == ya que sabes que ya estás comparando con una cadena
  • En tu código, usando elseif en lugar de individual if las condiciones son sintácticamente más correctas
  • Nunca usar $_GET['tablename'] para el código de producción si esos nombres de tabla se usan para interactuar con la base de datos; de lo contrario, su código no ofrece seguridad

Respondido el 20 de junio de 20 a las 10:06

para que conste: esta respuesta es buena en su intención, pero sintácticamente incorrecta: no puede haber un ; entre } y elseif.. - cifrada

Para la comparación de cadenas de uso

  strcmp(string1,string2);   //return 0 when both strings are equal 

Respondido 04 Jul 12, 09:07

Úselo así

 if(isset($_GET['tablename'])){
        $tablename=$_GET['tablename'];
        var_dump($tablename);
        echo 'Table is set <br/>';
        if($tablename=="product"){
            echo 'Table is product <br/>';
        };
        if($tablename=="demanded"){
            echo 'Table is demanded <br/>';
        };
    };

Respondido 04 Jul 12, 09:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.