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!!!! 私はWebアプリの検索可能なリストを作成しているため、これのタラ

4

7 に答える 7

4

チェックボックスはラジオボタンではありません。それらの名前は異なる必要があります。そうしないと、最後の名前だけが返されます!

それらをすべて取得したい場合は、すべてのチェックボックス名を から に変更する必要がありsearchますsearch[]$_REQUEST['search']このようにして、それらすべてを(*)にある単一の配列に取得できます。

代わりに、可能な選択を 1 つだけにしたい場合は、入力タイプをチェックボックスからラジオボタンに変更し、現在の名前を保持します。

(*)はスーパーグローバル変数で、または$_REQUESTにあるのと同じ値を含みます。通常、柔軟なスクリプトを作成するのが最善の選択です (フォームのメソッドを変更する必要がある場合があり、バックエンドで PHP スクリプト全体を書き直す必要はありません。$_POST$_GET$_REQUEST

于 2013-05-03T09:02:48.613 に答える
2

name="search"を使用する代わりに、PHPname="search[]"にデータが入力されると、値の配列が作成されます。$_POSTすべての要素の名前が同じであるため、現在の要素は 1 つだけです。

于 2013-05-03T09:01:41.903 に答える
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

チェックボックスの名前「search」を「search[]」に変更し、送信ボタンからアクション属性を削除します。

于 2013-05-03T09:05:37.503 に答える
0

PHP が配列から値を取得できるように、代わりにname="search"を記述する必要があります。name="search[]"

index.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 に答える