1

私はPHP、HTML、およびWeb開発全般に不慣れです。

連想配列からエントリを読み込むためのリストボックスを取得しようとしていましたが、それはなんとかできました。問題は、オプションが選択されているときに、正しい値にアクセスできないように見えることです。どのオプションを選択しても、常に同じ応答 (「ロンドン」) が生成されるようです。$city を ["listBox"] に置き換えてみましたが、出力は 'selected="selected"' でした。

誰かが私を助けてくれれば、その理由を理解しようと多くの時間を費やしました。事前に感謝します。

コードは以下のとおりです。

<!DOCTYPE html lang="en"/>`    
<html>
    <head>
        <title>Array Section: ex5.php</title>
    <charset = "utf-8">
    </head>
    <body>
        <?php
        // Create an associate array 
        $countriesWithCities = array(
            "Japan" => "Tokyo",
            "Mexico" => "Mexico City",
            "USA" => "New York City",
            "India" => "Mumbai",
            "South Korea" => "Seoul",
            "China" => "Shanghai",
            "Nigeria" => "Lagos",
            "Brazil" => "Sao Paulo",
            "Egypt" => "Cairo",
            "England" => "London"
        );
        ?>
        <form action="ex5b.php" method="POST" />
        <h1>Ex5b.php </h1>
        <h3>"listBox">Please choose a country from the list box. </h3>
        <select name="listBox" id="listBox" size="9" >
            <?php foreach ($countriesWithCities as $individualCountry => $city) { ?>
                <option value= <?php $city; ?> selected="selected">
                    <?php echo $individualCountry;
                    >
                } ?></option>
        </select>

        <input type="submit" name="submitButton" id="submitButton" value="Submit form" />
        <form>
            <?php
            if (isset($_POST["submitButton"])) {
                echo "You chose " . $city;
            }
            ?>
    </body>
</html>
4

3 に答える 3

1

$city の前に echo がなく、$individualCountry の後に余分な > がありませんでした。同様</option>に、foreach ループの閉じ中かっこ (}) の後に終了タグがありました。

<select name="listBox" id="listBox" size="9" > 
<?php 
    foreach($countriesWithCities as $individualCountry=>$city)
    {
?>
    <option value="<?php echo $city; ?>" selected="selected"> <?php echo $individualCountry; ?>
    </option> 
<?php } ?>
</select>
于 2013-03-28T23:31:35.787 に答える
0

正しいコード

<!DOCTYPE html lang="en">
<?php
$countriesWithCities = array(
   "Japan" => "Tokyo",
   "Mexico" => "Mexico City",
   "USA" => "New York City",
   "India" => "Mumbai",
   "South Korea" => "Seoul",
   "China" => "Shanghai",
   "Nigeria" => "Lagos",
   "Brazil" => "Sao Paulo",
   "Egypt" => "Cairo",
   "England" => "London"
);
?>
<form action="ex5b.php" method="POST">
<h1>Ex5b.php </h1>
<h3>Please choose a country from the list box. </h3>
<select name="city" id="listBox">
   <?php foreach($countriesWithCities as $individualCountry=>$city){?>
   <option value=<?php echo $city; ?>> <?php echo $individualCountry; ?></option>
   <?php } ?>
</select>
   <input type="submit" name="submitButton" id="submitButton" value="Submit form" />
</form>

<?php if(isset($_POST["submitButton"]))
{
   echo "You chose " . $_POST['city'];
}
?>
</body>
</html>

修正

  1. このコードを本 (PDF?) からコピーした可能性があるため、doctype の後に PHP タグを開始すると、配列名が欠落していました。
  2. フォームに終了タグがありませんでした
  3. <select>name属性がありませんでした
  4. $city代わりにPHPコードで探していた$_POST['city']

あなたの質問からコードをコピーした後、または不完全なコードをコピーしただけで、多くのことが起こりました:D

于 2013-03-28T23:37:32.077 に答える
0
<option value= <?php $city; ?> selected="selected">

への変更

<option value= <?php echo $city; ?> selected="selected">
于 2013-03-28T23:38:39.183 に答える