0

前端代码

    <form action="search.php" method="POST">

    <ul data-role="listview" data-filter="true" data-inset="true" data-filter-       reveal="true"  data-filter-placeholder="Search by Ingredients">

                    <!-- 1-10 -->
                   <li>
                        <input type="checkbox" name="search" id="ing1" class="custom" value="Passion Fruit"/>
                        <label for="ing1">Passion Fruit</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing2" class="custom" value="Banana"/>
                        <label for="ing2">Banana</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing3" class="custom" value="Mango"/>
                        <label for="ing3">Mango</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing4" class="custom" value="Orange Juice"/>
                        <label for="ing4">Orange Juice</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing5" class="custom" value="Ice"/>
                        <label for="ing5">Ice</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing6" class="custom" value="Sausages"/>
                        <label for="ing6">Sausages</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing7" class="custom" value="Bacon"/>
                        <label for="ing7">Bacon</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing8" class="custom" value="Eggs"/>
                        <label for="ing8">Eggs</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing9" class="custom" value="Beans"/>
                        <label for="ing9">Beans</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search" id="ing10" class="custom" value="Milk"/>
                        <label for="ing10">Milk</label>
                    </li>

            </ul>

    <br />
    <input type="submit" action="search.php" value="Search For Recipes">
    </form>

PHP代码

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

     $choices = $_POST["search"];
     $count = count($choices);

     echo "<h1>" . $count . "</h1>";
     echo "<h1>" . $choices . "</h1>";

     }

当我选中某些框时没有返回任何内容,所以这向我表明该复选框没有被正确选中:S HELPP!!!!我正在制作一个网络应用程序可搜索列表,因此为此使用了 cod

4

7 回答 7

4

复选框不是单选按钮。他们的名字必须不同,否则你只返回最后一个!

如果要全部检索它们,则必须将每个复选框名称从 更改searchsearch[]。这样,您就可以将它们全部检索到一个数组中,该数组位于$_REQUEST['search'](*)

相反,如果您只想有一个可能的选择,请将输入类型从复选框更改为单选按钮并保留当前名称。

(*)$_REQUEST是一个超全局变量,其中包含您在$_POSTor中可以找到的相同值$_GET。通常编写灵活的脚本是最好的选择(您可能必须更改表单的方法,并且$_REQUEST您不必在后端重写整个 PHP 脚本。

于 2013-05-03T09:02:48.613 回答
2

而不是name="search"你可以使用name="search[]",那样,当$_POST在 PHP 中填充时,它会创建一个值数组。您现在拥有的只是其中一个元素,因为它们的所有名称都是相同的。

于 2013-05-03T09:01:41.903 回答
0

而不是name="search"您需要编写name="search[]",以便 PHP 可以从数组中获取值。

索引.php

<form action="search.php" method="POST">

    <ul data-role="listview" data-filter="true" data-inset="true" data-filter-       reveal="true"  data-filter-placeholder="Search by Ingredients">

                    <!-- 1-10 -->
                   <li>
                        <input type="checkbox" name="search[]" id="ing1" class="custom" value="Passion Fruit"/>
                        <label for="ing1">Passion Fruit</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing2" class="custom" value="Banana"/>
                        <label for="ing2">Banana</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing3" class="custom" value="Mango"/>
                        <label for="ing3">Mango</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing4" class="custom" value="Orange Juice"/>
                        <label for="ing4">Orange Juice</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing5" class="custom" value="Ice"/>
                        <label for="ing5">Ice</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing6" class="custom" value="Sausages"/>
                        <label for="ing6">Sausages</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing7" class="custom" value="Bacon"/>
                        <label for="ing7">Bacon</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing8" class="custom" value="Eggs"/>
                        <label for="ing8">Eggs</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing9" class="custom" value="Beans"/>
                        <label for="ing9">Beans</label>
                    </li>

                    <li>
                        <input type="checkbox" name="search[]" id="ing10" class="custom" value="Milk"/>
                        <label for="ing10">Milk</label>
                    </li>

            </ul>

    <br />
    <input type="submit" value="Search For Recipes">
    </form>

搜索.php

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

 $choices = "";
 $count   = count($_POST["search"]);

 for($i=0;$i<$count;$i++) {

     $choices .= $_POST["search"][$i] . " ";
 }


 echo "<h1>" . $count . "</h1>";
 echo "<h1>" . $choices . "</h1>";

 }
于 2013-05-03T09:13:32.640 回答
0

已经给出了将元素名称从 search 更改为 search[] 的答案,这当然是正确的,但也请查看您的 php 代码:

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

 $choices = $_POST["search"];
 $count = count($choices);

 echo "<h1>" . $count . "</h1>";
 echo "<h1>" . $choices . "</h1>";

 }

我相信您想要的是列出正在选择的项目,然后您可以像这样在 foreach 循环中迭代选择:请注意,我使用的是 H2 而不是 H1,因为在 html 页面上使用多个 H1 不会正确验证。(当然你可以用一个span或别的什么,这只是一个例子)

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

 $choices = $_POST["search"];
 $count = count($choices);

 echo "<h1>" . $count . "</h1>";

 foreach($choices as $choice) {
  echo "<h2>" . $choice . "</h2>";
 }

 }

我不会像您那样制作复选框,而是将所有项目放入一个数组中,然后进行迭代以创建<li>-tags 及其内容。(因为它更灵活,你不必一遍又一遍地重写相同的东西)

代码看起来像这样:

<form action="search.php" method="POST">
<ul data-role="listview" data-filter="true" data-inset="true" data-filter-       reveal="true"  data-filter-placeholder="Search by Ingredients">

<!-- 1-10 -->                   
<?php
$ingredientsArray = array('Passion Fruit', 'Banana', 'Mango', 'Orange Juice', 'Ice', 'Sausages', 'Bacon', 'Eggs', 'Beans', 'Milk');

$cnt = 0;
foreach($ingredientsArray as $ingredient) {
    $cnt++;
    echo '<li>';
    echo '<input type="checkbox" name="search[]" id="ing' . $cnt . '" class="custom" value="' . $ingredient. '"/>';
    echo '<label for="ing' . $cnt . '">' . $ingredient. '</label>';
    echo '</li>';
}
?>
</ul>

<br />
<input type="submit" value="Search For Recipes">
</form>
于 2013-05-03T09:15:57.623 回答
0

用“search[]”更改复选框“search”的名称也从提交按钮中删除操作属性。

于 2013-05-03T09:05:37.503 回答
0

我认为您想要做的是将结果放入数组中,因为我可以看到您正在尝试执行:

$choices = $_POST["search"];
$count = count($choices);

如果你想让它工作,你必须更改name输入元素的属性。尝试以这种格式给他们一个名字:

<input type="checkbox" id="ing1" name="search[]" .../>
<input type="checkbox" id="ing2" name="search[]" .../>
<input type="checkbox" id="ing3" name="search[]" .../>

我相当确定您面临的问题是因为多个元素共享相同的名称,因此它们的值被覆盖。


如果您希望结果位于关联数组中,允许您单独按名称访问每个元素,您也可以在 name 属性中调整 id 属性的值 - 如下所示:

<input type="checkbox" id="ing1" name="search[ing1]" .../>
<input type="checkbox" id="ing2" name="search[ing2]" .../>
<input type="checkbox" id="ing3" name="search[ing3]" .../>

现在您将能够像这样访问元素:

$_POST["search"]['ing1']
$_POST["search"]['ing2']
...
于 2013-05-03T09:01:56.437 回答
0

尝试命名所有复选框:

<input type="checkbox" name="search[]" ...

进入php

if (isset($_POST['search'])) {
    print_r($_POST['search']);die();
}
于 2013-05-03T09:03:51.077 回答