0

私は PHP と HTML から始めましたが、3 つのドロップダウン リスト (選択タグ) を使用して簡単なコードを実行したいと考えています。しかし、1 つから選択すると、他の 2 つの選択された値が消えます。送信時に値を保存してからエコーする必要がありますか。はいの場合、どうすればできますか。サンプルコードをいただければ幸いです。

    <?php // formtest_2.php 

$name_vid = $name_type = $name_model = "";

if (isset($_POST['vid']))$name_vid=($_POST['vid']);
else $name_vid="no";

if (isset($_POST['type']))$name_type=sanitizeString($_POST['type']);
else $name_type="no";

if (isset($_POST['model']))$name_model=sanitizeString($_POST['model']);
else $name_model="no";

echo <<<_END
<html>
    <head>
        <title>Form Test Two</title>
    </head>
    <body>

    Make your selection:

<form action="formtest_2.php" method="post">

    <select name="vid" size="1">

    <option value="" selected>Product</option>

    <option value = "apple">apple</option>
    <option value = "cherry">cherry</option>
    <option value = "orange">orange</option>

    </select>

<input type="submit"/><br />        

    <select name="type" size="1">

    <option value="" selected>Color</option>

    <option value = "green">green</option>
    <option value = "red">red</option>
    <option value = "orange">orange</option>

    </select>

<input type="submit"/><br />        

    <select name="model" size="1">

    <option value="" selected>Model</option>

    <option value = "1-a">1-a</option>
    <option value = "2-b">2-b</option>
    <option value = "3-c">3-c</option>

    </select>

<input type="submit"/><br />

    </form>
    </body>
</html>
_END;

echo "Your selection is: $name_vid and $name_type and $name_model"; 

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);

    return $var;
}
?>
4

2 に答える 2

1

送信後にドロップダウンの値を再選択する必要があると思います。次のコードは修正になります。

<?php // formtest_2.php 
$name_vid = $name_type = $name_model = "(nothing)";

if (isset($_POST['vid']) && $_POST['vid']) $name_vid=($_POST['vid']);

if (isset($_POST['type']) && $_POST['type']) $name_type=sanitizeString($_POST['type']);

if (isset($_POST['model']) && $_POST['model']) $name_model=sanitizeString($_POST['model']); 
?>
<html>
    <head>
        <title>Form Test Two</title>
    </head>
    <body>

    Make your selection:
    <form action="formtest_2.php" method="post">
        <select name="vid" size="1">    
            <option value="">Product</option>        
            <option value = "apple" <?php if($name_vid == 'apple') echo 'selected="selected"'; ?>>apple</option>
            <option value = "cherry" <?php if($name_vid == 'cherry') echo 'selected="selected"'; ?>>cherry</option>
            <option value = "orange" <?php if($name_vid == 'orange') echo 'selected="selected"'; ?>>orange</option>    
        </select>

        <br />

        <select name="type" size="1">
            <option value="">Color</option>    
            <option value = "green" <?php if($name_type == 'green') echo 'selected="selected"'; ?>>green</option>
            <option value = "red" <?php if($name_type == 'red') echo 'selected="selected"'; ?>>red</option>
            <option value = "orange" <?php if($name_type == 'orange') echo 'selected="selected"'; ?>>orange</option>    
        </select>

        <br />        

        <select name="model" size="1">    
            <option value="">Model</option>    
            <option value = "1-a" <?php if($name_model == '1-a') echo 'selected="selected"'; ?>>1-a</option>
            <option value = "2-b" <?php if($name_model == '2-b') echo 'selected="selected"'; ?>>2-b</option>
            <option value = "3-c" <?php if($name_model == '3-c') echo 'selected="selected"'; ?>>3-c</option>    
        </select>

        <input type="submit"/><br />
    </form>
    </body>
</html>
<?php
echo "Your selection is: $name_vid and $name_type and $name_model"; 

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);

    return $var;
}
?>

HTML を印刷するために、ヒアドキュメント構文 ("<<<")は使用しません。

于 2012-12-26T10:26:13.753 に答える
0

これを試してみてください。送信ボタンを1つ作成し、送信後に値を再選択しました:

<?php
// formtest_2.php

$name_vid = $name_type = $name_model = "";

if (isset($_POST['vid']))
    $name_vid = ($_POST['vid']);
else
    $name_vid = "no";

if (isset($_POST['type']))
    $name_type = sanitizeString($_POST['type']);
else
    $name_type = "no";

if (isset($_POST['model']))
    $name_model = sanitizeString($_POST['model']);
else
    $name_model = "no";


///////////////////
if($name_vid == 'apple')
{
    $v1 = 'selected';
}
elseif($name_vid == 'cherry')
{
    $v2 = 'selected';
}
elseif($name_vid == 'orange')
{
    $v3='selected';
}
 ////////////////////////
if($name_type == 'green')
{
    $t1 = 'selected';
}
elseif($name_type == 'red')
{
    $t2 = 'selected';
}
elseif($name_type == 'orange')
{
    $t3='selected';
}


///////////////////////
if($name_model == '1-a')
{
    $m1 = 'selected';
}
elseif($name_model == '2-b')
{
    $m2 = 'selected';
}
elseif($name_model == '3-c')
{
    $m3='selected';
}

?>
<html>
    <head>
        <title>Form Test Two</title>
    </head>
    <body>

        Make your selection:

        <form name="fruite_form" action="formtest_2.php" method="post">

            <select name="vid" size="1">

                <option value="" selected>Product</option>

                <option <?=$v1?> value = "apple">apple</option>
                <option <?=$v2?> value = "cherry">cherry</option>
                <option <?=$v3?> value = "orange">orange</option>

            </select>



            <select name="type" size="1">

                <option value="" selected>Color</option>

                <option <?=$t1?> value = "green">green</option>
                <option <?=$t2?>value = "red">red</option>
                <option <?=$t3?>value = "orange">orange</option>

            </select>



            <select name="model" size="1">

                <option value="" selected>Model</option>

                <option <?=$m1?> value = "1-a">1-a</option>
                <option <?=$m2?>value = "2-b">2-b</option>
                <option <?=$m3?>value = "3-c">3-c</option>

            </select>

            <input name="submitButtom" id="submitButton" type="submit"/><br />

        </form>
    </body>
</html>


<?
echo "Your selection is: $name_vid and $name_type and $name_model";

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);

    return $var;
}
?>

送信ボタンを自由に追加してください。ただし、それぞれに一意の名前を付け、フォームに名前を付けることを忘れないでください。また、良い習慣として、name 属性と同じ ID も付けてください。

更新:これは最初の質問なので、本当に投稿を受け取っていることを確認するために、コードの最後にこれを印刷してください

echo $_POST['vid'] . ' ' . $_POST['type'] . ' ' . $_POST['model'] . '<br/><br/>';

送信後に投稿が実際に値を保持しているかどうかを確認します。投稿から値を取得しても、割り当てられた変数からは取得しない場合は、値を割り当てるために上部で使用されている条件を確認してください。

// post が設定されていて、実際の値があるかどうかを確認する必要があります。それよりも、変数を割り当てる必要があります。シチューさんのおっしゃる通りです。

于 2012-12-26T10:54:43.027 に答える