复选框在PHP中未被提交

4

我正在尝试获取三个复选框的值,以后将它们发送到数据库中,但是测试时它们在PHP中没有被发出。

<table width="200" border="0">
 <tr>
  <td><img src="images/image1.jpg" ></td>
  <td><img src="images/image2.jpg" ></td>
  <td><img src="images/image3.jpg" ></td>
 </tr>
 <tr>
  <td><input type="checkbox" id="checkbox65" class="css-checkbox med"     name="avatar" value="image1"/>
   <label for="checkbox65" class="css-label med elegant" /></label></td>
  <td><input type="checkbox" id="checkbox66" class="css-checkbox med" name="avatar" value="image2"/>
   <label for="checkbox66" class="css-label med elegant" /></label></td>
  <td><input type="checkbox" id="checkbox67" class="css-checkbox med" name="avatar" value="image3"/>
   <label for="checkbox67" class="css-label med elegant"  ></label></td>
  </tr>
 </table><br>

我正在另一页发布:

<?php 
if(isset($_POST['submit'])){$avatar=$_POST['avatar'];} 
echo $avatar; ?>

但我遇到了问题。
 Undefined index: avatar on line 14

我有表单标签,所有内容都是正确的,但这是一个不同的问题,除此之外页面上的其他一切都能正确提交,只有这个问题不能提交。


1
你的表单标签在哪里? - Rizier123
也许你根本没有<form>标签,只有输入框之类的东西,那就用它来包装表格。 - Kevin
我已经编辑了我的帖子并在评论中写道,我有表单标签,我有多个正确发布在页面上的内容,除了这个。 - s.K.
复选框所有的名称属性都相同,需要将它们视为数组进行处理;您尚未这样做,反而覆盖了所有其他选择的复选框。因此,您需要对该数组进行循环遍历。 - Funk Forty Niner
@s.K. 看一下他们给你的链接中的代码。我希望他们能改进他们的答案,为你提供一个解决方案。然而,那个链接包括将数组考虑在内的代码。name="avatar[]" 适用于所有情况。 - Funk Forty Niner
显示剩余10条评论
1个回答

5
我认为您需要在输入框周围放置一个<form>标签。在该标签中,您应该指定(作为操作)将接收数据的php文件;)
请查看此链接:http://www.html-form-guide.com/php-form/php-form-checkbox.html

编辑:

根据您的原始帖子,您需要将复选框视为数组。

附注:您应该始终在原始问题下方进行编辑,并标记为编辑,以避免覆盖原始内容。

即:在每个具有相同名称属性的元素周围添加括号 name="avatar[]"。然后,您需要在使用条件语句的同时,在循环中使用 POST 数组及其变量。

<form action="reg_test.php" method="post">
                                Username:<br>
                                <input type="text" name="username"><br>

                                Password:
                                <input type="password" name="password" ><br>

                                E-mail:
                                <input type="text" name="email" ><br>

                                Avatar:

   <table width="200" border="0">
  <tr>
    <td><img src="images/avatars/image1.jpg" ></td>
    <td><img src="images/avatars/image2.jpg" ></td>
    <td><img src="images/avatars/image3.jpg" ></td>
  </tr>
 <tr>
<td><input type="checkbox" id="checkbox65" class="css-checkbox med" name="avatar[]" value="image1"/>
    <label for="checkbox65" class="css-label med elegant" /></label></td>
<td><input type="checkbox" id="checkbox66" class="css-checkbox med" name="avatar[]" value="image2"/>
    <label for="checkbox66" class="css-label med elegant" /></label></td>
<td><input type="checkbox" id="checkbox67" class="css-checkbox med" name="avatar[]" value="image3"/>
    <label for="checkbox67" class="css-label med elegant"  ></label></td>
</tr>
</table><br>
<input type="submit" value="Register" name="submit">
</form>

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

if(isset($_POST['submit'])){
    $username=$_POST['username'];
    $password=$_POST['password'];
    $email=$_POST['email'];

if(isset($_POST['avatar'])){

    $avatar=$_POST['avatar'];

   foreach ($avatar as $avatars=>$value) {
             echo "Avatars : ".$value."<br />";
        }

echo $username.",".$password.",".$email."</br>";

    }

} // brace for if(isset($_POST['submit']))

?>

1
嗯,只是试试,在HTML中在你的“avatar”末尾添加“[]”,但不要在PHP中添加,并告诉我它是否有效。 - Guillaume Munsch
我确实说过这不是我的完整代码,但除了表单标签之外,其余部分并不重要,因为它可以正确地发布。 - s.K.
2
@s.K. 好的,重新加载答案。我不得不将 $avatar=$_POST['avatar']; 放在另一个条件语句 if(isset($_POST['avatar'])) 中。 - Funk Forty Niner
1
@Fred-ii- 我爱你。它起作用了,感谢你的帮助! - s.K.
1
@LeZohan68,您现在拥有足够的声望点数,在问题下发表评论,这是您发布的原始答案http://stackoverflow.com/revisions/30261427/1以及另一个链接http://stackoverflow.com/revisions/30261427/3中添加的内容,都被视为评论。如果您在以后的回答中这样做,可能会被投票否决。一些人在这里给了您机会(包括我自己),您很幸运。但下次您可能就没有那么幸运了;-) - Funk Forty Niner
显示剩余11条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接