3

私はまだPHPに慣れていないので、ご容赦ください。私は正しい軌道に乗っていると思いますが、それを完全に理解することはできません。

目的は、ラジオ ボタンとチェックボックスを使用して簡単な注文フォームを作成することです。ただし、それらは制限です。この場合、チョコレート アイス クリームにチョコレートをふりかけたり、ピーナッツ バター アイス クリームにクルミをふりかけたりすることはありません。私は、1つをチェックしてからもう1つをチェックする方法を見つけるために、ほぼ4時間試みてきました。

助けていただければ幸いです。

HTML コード:

    <DOCTYPE xhtml>
    <head>
    <title>Lab 4 - Ice Cream</title>
    <link rel="stylesheet" type="text/css" href="lab4.css">
    </head>
    <body>
    <div id="container">
    <h3>Ice Cream Order Form</h3>
    <hr>
    <form action="lab4.php" method="post">
    Please choose a flavor:
    <ul><li><input type="radio" name="flavor" value="Vanilla" checked="checked">Vanilla</li>
    <li><input type="radio" name="flavor" value="Chocolate">Chocolate</li>
    <li><input type="radio" name="flavor" value="Peanut Butter">Peanut Butter</li>
    </ul>

    Please choose your toppings:
    <ul>
    <li><input type="checkbox" name="toppings[0]" value="Cherries">Cherries</li>
    <li><input type="checkbox" name="toppings[1]" value="Chocolate Sprinkles" id="chocsprink">Chocolate Sprinkles</li>
    <li><input type="checkbox" name="toppings[2]" value="Pineapple">Pineapple</li>
    <li><input type="checkbox" name="toppings[3]" value="Walnuts">Walnuts</li>
    <li><br /></li>
    <li><input id="submit" type="Submit" name="Submit" value="Submit"><input id="reset" type="Reset" name="Reset" value="Reset"></li>

    <div id="note">
    <span>Please note: We are unable to put chocolate sprinkles on chocolate ice cream.        </span><br />
    <span>Please note: We are unable to put walnuts on peanut butter ice cream.</span>
    </div>
    </div>
    </form>


    </body>
    </html>

PHP コード:

    $toppings=$_POST['toppings'];
    $flavor=$_POST['flavor'];
    $break='<br>';

    if (isset($_POST['toppings[1]'])) { 
        $choc = True;}

    if (isset($_POST['flavor'])==Chocolate){
        $flav = True;}

    if($choc == True && $flav === True){
    echo 'We are sorry, but you can not put chocolate sprinkles on chocolate ice cream.';}

        else {
        echo 'Thank You. <br /><br ?>';
        echo 'Your order has been placed<br /><br />';
        echo '';
        echo "You have chosen the <u><b>$flavor</b></u> ice cream with the following toppings:<br />";
    }
    if (!empty($_POST['toppings'])) {
        foreach($_POST['toppings'] as $alltoppings) {
            echo $alltoppings . $break;}}

    ?>
4

1 に答える 1

4

これ:

if (isset($_POST['flavor'])==Chocolate){

間違っている。isset値が設定されているかどうかを確認し、ブール値を返します。Chocolateこれにより、未定義の定数であり、値が文字列として使用されるという警告も発生します。

存在とその値を確認したい場合は、次のようにします。

if (isset($_POST['flavor']) && $_POST['flavor']=="Chocolate"){

それに加えて(他の人が指摘しているように)、トッピングを別の方法で参照する必要があります。

if (isset($_POST['toppings'][1])) { 

エラー報告を有効にして、すべてのエラーを表示してください。より堅牢なスクリプトを作成するのに役立ちます。

于 2013-10-10T07:05:16.227 に答える