0

選択したオプションを送信すると、データは保存されません。検証が失敗した場合にデータをポストバックする方法を知りたいだけです

次の行は、実際には機能しません。

    <select id="numbers" name="numbers" value="<?php echo (isset($_POST['numbers'])) ? $_POST['numbers'] : " "; ?>"/>

誰かが私に手を貸してくれたら?

どうもありがとう、これが私のコードです

<?php

if(isset($_POST['numbers']) &&($_POST['fruits']) && $_POST['numbers'] != "null" && $_POST['fruits'] !== "null")
{
  echo "Thank you!";
} elseif  (isset($_POST['numbers']) && $_POST['numbers'] = "null") {
    echo "you forgot to choose a number";
    }
    elseif(isset($_POST['fruits']) && $_POST['fruits'] = "null")
{
    echo "you forgot to choose fruit name";
    }

?>



  <form id="form" name="form"  method="post" action="">

      <label for="expiry">Select</label>
                <select id="numbers" name="numbers" value="<?php echo (isset($_POST['numbers'])) ? $_POST['numbers'] : " "; ?>"/>
                <option value="null" selected="selected">-</option>
                <option  value="01">01</option>
                <option value="02">02</option>
                <option value="03">03</option>
              </select>

                <select id="fruits" name="fruits" value="<?php echo (isset($_POST['fruits']))? $_POST['fruits'] : ''; ?>"/>
                <option value="null" selected="selected">-</option>
                <option value="Apple">Apple</option>
                <option value="Banana">Banana</option>
                <option value="Pear">Pear</option>

              </select>

   <input type="submit" value="Send"  />
  </form>

解決しました。おそらく最善の方法ではありませんが、少なくとも並べ替えました:

<?php
$item = null; # 
$itemyear = null; 

if(isset($_POST['numbers'])){
$item = $_POST['numbers'];
}
if(isset($_POST['fruits'])){
$itemyear = $_POST['fruits'];
}



if(isset($item) && isset($itemyear) && $item != "null" && $itemyear !== "null")
{
  echo "Thank you!";
} elseif  ($item == "null") {
    echo "you forgot to choose a number";
    }
    elseif($itemyear == "null")
{
echo "you forgot to choose fruit name";
}



?>



  <form id="form" name="form"  method="post" action="">

      <label for="expiry">Select</label>
            <select id="numbers" name="numbers" />
                <option value="null" selected="selected">-</option>
                <option  value="01" <?php if($item == '01'): echo "selected='selected'"; endif; ?>>01</option>
                <option value="02" <?php if($item == '02'): echo "selected='selected'"; endif; ?>>02</option>
                <option value="03" <?php if($item == '03'): echo "selected='selected'"; endif; ?>>03</option>
              </select>

              <select id="fruits" name="fruits" />
                <option value="null" selected="selected">-</option>
                <option value="Apple"<?php if($itemyear == 'Apple'): echo "selected='selected'"; endif; ?> >Apple</option>
                <option value="Banana"<?php if($itemyear == 'Banana'): echo "selected='selected'"; endif; ?>>Banana</option>
                <option value="Pear"<?php if($itemyear == 'Pear'): echo "selected='selected'"; endif; ?>>Pear</option>

              </select>

   <input type="submit" value="Send"  />
  </form>


<?php 
echo $item ."-". $itemyear;
?>
4

3 に答える 3

0

ああ、なるほど。

通常の方法はわかりませんが、1つの方法は、ユーザーをリダイレクトするときにすべてのデータをクエリ文字列として配置することです。$ _POSTグローバルにとどまらない理由は、投稿したページにのみ保持され、その後消えてしまうためです。

したがって、ユーザーをリダイレクトすると

if(validationFailed)
{
    header("Location: page.php?data=example");
}

次に、を使用してpage.phpでデータを取得できます。

$data = $_GET['data']; // contains "example"
于 2012-07-17T13:11:20.620 に答える
0

PHP の isset() 関数は、true または false を返します (入力が...まあ...設定されているかどうかによって異なります)。

これを使用したいでしょう: value='<?php echo (isset($_POST['numbers'])) ? $_POST['numbers'] : ""; ?>

于 2012-07-17T02:56:18.047 に答える
0

valueに属性を設定することはできません<select>。正しいものを見つけて、<option>そのselected属性を設定する必要があります。個人的には、にdata-default属性を設定して<select>から、JavaScript を使用してオプションをループし、適切なオプションを見つけます。

于 2012-07-17T04:14:06.100 に答える