2016-11-09 10 views
0

サブミット/リフレッシュページの後にドロップダウン選択オプションを選択したいと思います。私は他の例を検索しますが、誰も私のコードでは動作しません。サブミット/ページリフレッシュ後にドロップダウン選択オプションを保持する方法

このコードでサブミット/リフレッシュ後に選択した値を保持する方法は?

<form name="test" action="test.php?id=<?php echo $row["id"]; ?>" method="post"> 
    <select id="test_email" name="test_email">  
     <option value="">...select</option> 
     <?php 
      $sql2 = "SELECT test_id, test_email FROM test WHERE status='Act'"; 
      $res = $db->query($sql2); 

      if ($res->num_rows > 0) { 
       while($row1 = mysqli_fetch_array($res)) { 
     ?> 
     <option value="<?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?>"><?php echo $row1['test_id'];?></option> 
     <?php 
       } 
      } 
     ?> 
    </select> 

このよう解決:私は$_POST['test_email']

  • explodeを使用するので、私は(デシベルに挿入する)1つの以上のポストを作る<?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?>
  • $_POST['test_email']を渡すことができませんでしたので

    • $test_temp = trim(mysqli_real_escape_string($db, $_POST['test_email']));私のドロップダウン値(文字列全体)をdbにする。
    • 私のフォームに隠し入力を追加しました<input id="test_temp" type="hidden" name="test_temp" value="<?php echo $row["test_temp"]; ?>">
    • そして、選択オプション行を<option value="<?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>"<?php if($row1['test_email'] . '-' . $row1['test_id'] == $row['test_temp']) echo ' selected="selected"' ; ?>><?php echo $row1['test_id'];?></option>に変更しました。

    おそらく、これはもっと簡単かもしれませんが、魅力的です。

    @ roberto06:ありがとうございます。

  • +0

    あなたは=オプションで「選択」を選択し使用していない理由は? – Rohit

    +0

    ありがとうございます。私はそれを使用し、それは最終的に動作します。 :) – Falcon

    答えて

    0

    $_POSTの値に一致するオプションにselected="selected"属性を追加する必要があります。

    <?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?><?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>に連結することもできますが、それはあなた次第です。

    ここで解決策があります(条件を一致させるには、は$row1['test_email'] . '-' . $row1['test_id']と等しいとします)。私はここshorthand if...elseを使用していますが、あなたはまた、古典的なifを使用することができます。

    <form name="test" action="test.php?id=<?php echo $row["id"]; ?>" method="post"> 
        <select id="test_email" name="test_email">  
         <option value="">...select</option> 
           <?php 
            $sql2 = "SELECT test_id, test_email FROM test WHERE status='Act'"; 
            $res = $db->query($sql2); 
            if ($res->num_rows > 0) { 
            while($row1 = mysqli_fetch_array($res)) { 
            ?> 
         <option value="<?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>"<?php echo (isset($_POST['test_email']) && $row1['test_email'] . '-' . $row1['test_id'] == $_POST['test_email']) ? ' selected="selected"' : ''; ?>><?php echo $row1['test_id'];?></option> 
            <?php 
             } 
             } 
            ?> 
        </select> 
    </form> 
    
    +0

    今、あなたの提案で私は "通知:未定義のインデックス:test_emailをC:\ xampp ..."としています。私は 'isset' POSTとplsが必要ですか?あるいは、問題はbeacuseです。test.phpのtest_emailでexplodeを使用していますか?とにかくありがとうroberto06 – Falcon

    +0

    ありがとう、私は問題を解決しました。あなたは私をたくさん助けます。 – Falcon

    関連する問題