2011-09-25 2 views
0

J'ai du mal à obtenir les valeurs des deux entrées de texte:En utilisant GET pour les valeurs des deux entrées texte

<form action="search.php"> 
<input type="text" name="q1"> 
<input type="text" name="q2" > 
<input type="submit" name="submit" value="Search" /> 
</form> 

Ceci est la page search.php:

$q1 = @$_GET['q1']; 
$q2 = @$_GET['q2']; 

if(isset($q1) && isset($q2)) { 
$var= "$q1, $q2"; 
} 

if(isset($q1) && empty($q2)) { 
$var= "$q1"; 
} 

Lorsque les deux q1 et q2 sont remplis et envoyés, cela fonctionne parfaitement. Cependant, lorsque seule l'entrée q1 est remplie et envoyée (laissant q2 vide), elle crée toujours $var en utilisant la première instruction if - if(isset($q1) && isset($q2) - au lieu de la seconde - if(isset($q1) && empty($q2). Pourquoi cela arrive-t-il?

+0

'var_dump (q1 de $, q2 $);' – zerkms

+0

erreurs Suppression des (ou dans ce cas, les avertissements) avec @ est généralement un tueur de performance. Essayez de vérifier si la valeur dans '$ _GET'' isset() 'avant de l'assigner à' $ q1' ou '$ q2'. –

Répondre

4

vous configurez $q1 et $q2 donc isset($q1) et isset($q2) retournera toujours vrai. Essayez

if(isset($_GET['q1']) && isset($_GET['q2'])) { 

Ou test pour une valeur vide:

if(empty($q1) && empty($q2)) { 
2

Vous paramétrez à la fois q1 $ et q2 $ quand vous faites l'affectation:

$q1 = @$_GET['q1']; 
$q2 = @$_GET['q2']; 

Dans le cas où l'utilisateur n'a pas rempli le deuxième champ, q2 $ se vient de mettre à vide chaîne.

Une chaîne vide est différente d'une chaîne nulle.

Jetez un oeil à cette page sur isset du manuel PHP: http://php.net/manual/en/function.isset.php

0

Sont-ils tous deux passé le long - mais pas rempli? Je pense à un conditionnel plus comme:

!empty($_GET['q1']) && ($_GET['q1'] != '') 

Une combinaison de cela devrait aider. J'imagine q1 & q2 sont envoyés si ils sont utilisés ou non.

4

$ q2 est défini même si aucune valeur n'est entrée. C'est un champ de formulaire valide (bien qu'il contienne une chaîne vide).

2
if ($q1 != '' && $q2 != '') { 
    $var = "$q1, $q2"; 
} elseif($q1 != '') { 
    $var = "$q1"; 
} 
Questions connexes