PHP提交表单错误

时间:2015-10-09 16:43:16

标签: php html forms checkbox

错误如下:我正在尝试查看用户从复选框中选择的内容。

  

注意:未定义的变量:第42行的/Applications/XAMPP/xamppfiles/htdocs/ProjectOne/index.php中的ch1       ch1

HTML代码:

<form action='submit.php' method="GET">

<div id="self">
<input type='text' name='Name' value='Name' />
    <br>
<input type='text' name='Cwid' value='CWID' />
    <br>
</div>

<div id='gender'>
<strong>Gender:</strong><input type="radio" name="sex" value="male"checked>Male
Or
<input type="radio" name="sex" value="female">Female
<br>
<div>

<div id='class'>
<strong>Class:</strong> <select name='class'>
<option value='Freshman'> Freshman </option>
<option value='Sophomore'> Sophomore </option>
<option value='Junior'> Junior </option>
<option value='Senior'> Senior </option>
</select>
</div>
<br>
<div id='pref'>
<strong>Student Preferences</strong>
<br>
<!-- line 42 -->
<input type="checkbox" name="ch1" value="ch133" /> <?PHP echo $ch1; ?>  ch1 <br />
<input type="checkbox" name="ch2" value="Laundry on Premise" /> Laundry on Premise<br />
<input type="checkbox" name="ch3" value="Fully Equipped Kitchen" /> Fully Equipped Kichen<br />

</div>
<div id='submit'><input type="submit"  name='submit' value="Submit" />   </div>

</form>

以下PHP代码:

<?php
$ch1 = 'unchecked';
$ch2 = 'unchecked';
$ch3 = 'unchecked';
if(isset($_GET['submit'])) 
{
$name = $_GET['Name'];
$cwid = $_GET['Cwid'];
$sex = $_GET['sex'];
$class = $_GET['class'];
$ch1 = $_GET['ch1'];
$ch2 = $_GET['ch2'];
$ch3 = $_GET['ch3'];
    if (isset($ch1)) {
    $ch1 = $_GET['ch1'];

    if ($ch1 == 'ch1') {
        $ch1 = 'checked';
    }
}
}
?>

1 个答案:

答案 0 :(得分:0)

您的代码中存在多处不一致。

  

注意:未定义的变量:第42行ch1上的/Applications/XAMPP/xamppfiles/htdocs/ProjectOne/index.php中的ch1

读取此内容,它会显示 Not 错误的NOTICE,即变量ch1($ch1)未定义。所以没有设置为$ch1的值。

因此,您需要做的是在脚本到达第42行之前为$ch1设置一个值。

你的html说:

 <input type="checkbox" name="ch1" value="ch133" />

这意味着当您向网页提交数据时,您使用的$_POST / $_GET / $_REQUEST系统将返回 ch133 的值变量 ch1

因为它是一个复选框,你可以得到这个值,或者什么都没有,所以PHP中的代码永远不会是你想要的输出,因为:

$ch1 = $_GET['ch1'];

    if (isset($ch1)) {
    //you can only reach this point if the value is already set, 
    //Below, so there's no point setting the value twice. 
    $ch1 = $_GET['ch1']; 
    if ($ch1 == 'ch1') {
        //$ch1 can only be the value of $_GET['ch1'] and so it can 
       // never ever be 'ch1' as it's value, it can be NULL or ch133
       //only. So this IF statement will never ever run. 
        $ch1 = 'checked'; 
    }
}

另请注意,您的echo $ch1声明位于HTML复选框之外,因此复选框永远不会标记为勾选。您需要将代码调整为:

  <input type="checkbox" name="ch1" value="ch133"  <?php print $ch1;?> />

我希望这有助于澄清您的问题和方法。 : - )