使用GET获取两个文本输入的值

时间:2011-09-25 02:27:07

标签: php html forms

我在获取两个文本输入的值时遇到了一些困难:

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

这是search.php页面:

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

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

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

如果q1q2都已填写并发送,则效果非常好。但是,当只填写并发送q1输入(将q2留空)时,它仍会使用第一个if语句创建$var - if(isset($q1) && isset($q2) - 而不是第二个 - if(isset($q1) && empty($q2)。为什么会这样?

5 个答案:

答案 0 :(得分:4)

您正在设置$q1$q2,因此isset($q1)isset($q2)将始终返回true。尝试

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

或测试空值:

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

答案 1 :(得分:4)

$ q2即使没有输入任何值也会设置。它是一个有效的表单字段(虽然包含一个空字符串)。

答案 2 :(得分:2)

您在执行作业时设置$ q1和$ q2:

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

如果用户没有填写第二个字段,$ q2只会被设置为空字符串。

字符串为空与字符串为空不相同。

从PHP手册中查看有关isset的页面:http://php.net/manual/en/function.isset.php

答案 3 :(得分:2)

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

答案 4 :(得分:0)

他们都被传递 - 但没有填补?我认为条件更像是:

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

这样的一些组合应该有所帮助。我想象q1&amp;无论是否正在使用,都会发送q2。