2012-01-09 19 views
10

No puedo hacer que esto funcione por mi vida, es PHP.if! Isset O condiciones O

<?php 
if (!isset($_POST['ign']) || ($_POST['email'])) { 

    echo "Please enter all of the values!"; 
    } 

else { 

    echo "Thanks, " . $_POST['ign'] . ", you will recieve an email when the site is   complete!"; 

    } 
    ?> 

También intenté usar! Isset dos veces.

+6

Si una de las respuestas a continuación respondido a su pregunta que debe aceptarlo como la respuesta ! :) – vdbuilder

Respuesta

16

isset() acepta más que sólo un parámetro, por lo que sólo tiene que pasar tantas variables como sea necesario para comprobar:

<?php 
if (!isset($_POST['ign'], $_POST['email']) { 
    // Rest of the code here 
} 
?> 

usted podría utilizar empty() así, pero no acepta más de una variable en un hora.

+0

¿Estás seguro de que verificas O condición? Si se requieren ambas entradas, debe usar AND – djot

+0

Lo que entendí del texto de salida es que el usuario está buscando una forma de verificar todos los campos requeridos. Claro, puede ser confuso, dado el título de la pregunta. –

+2

Esto no funcionó – Depetrify

0
isset($_POST['ign'],$_POST['email'])); 

y luego verifique los valores vacíos.

+0

isset() solo funciona con variables ya que al pasar cualquier otra cosa se producirá un error de análisis. Está pasando una expresión que se evalúa como booleana. En otras palabras, esto no funciona de la manera que uno podría pensar. –

+0

Explicado en una demostración: http://codepad.org/zwvji6xr –

+0

@Madmartigan ha cambiado la respuesta –

2

más simple forma que conozco:

<?php 
if (isset($_POST['ign'], $_POST['email'])) {//do the fields exist 
    if($_POST['ign'] && $_POST['email']){ //do the fields contain data 
     echo ("Thanks, " . $_POST['ign'] . ", you will recieve an email when the site is complete!"); 
    } 
    else { 
     echo ("Please enter all of the values!"); 
    } 
} 
else { 
    echo ("Error in form data!"); 
} 
?> 

Editar: Se ha corregido el código para mostrar los datos del formulario y los valores vacíos errores éste por separado.

Explicación: La primera declaración if comprueba que el formulario enviado contenía dos campos, ign y correo electrónico. Esto se hace para evitar que la segunda instrucción if, en el caso de que no se entreguen ign o correo electrónico, arroje un error (el mensaje se imprima en los registros del servidor). La segunda declaración if verifica los valores de ign y email para ver si contienen datos.

+0

Esto funcionó, pero no entiendo por qué ... ¿No es la primera declaración if que ya cubre la segunda? – Depetrify

+0

@ user1138090 El primero si verifica que los datos del formulario contienen ambos campos. El segundo si verifica que los campos no estén vacíos. – vdbuilder

10

Esto es cómo resolví este problema:

$expression = $_POST['ign'] || $_POST['email'] ; 
if (!isset($expression) { 
    echo "Please enter all of the values!"; 
} 
else { 
    echo "Thanks, " . $_POST['ign'] . ", you will recieve an email when the site is        
       complete!"; 
} 
0

Puede probar este código:

<?php 
    if (!isset($_POST['ign'], $_POST['email']) { 
     echo "Please enter all of the values!"; 
    } else { 
    echo "Thanks, " . $_POST['ign'] . ", you will receive an email when the site is complete!"; 
    } 
    ?> 
2
Try this: 

<?php 
if (!isset($_POST['ign']) || isset($_POST['email'])) { 
    echo "Please enter all of the values!"; 
    } 
else { 
    echo "Thanks, " . $_POST['ign'] . ", you will recieve an email when the site is   complete!"; 
    } 
    ?> 
Cuestiones relacionadas