2016-12-14 3 views
0

$ row変数にユーザー情報を取得するフォームがありますので、データベースが存在する場合はフォームが作成されますが、$ _POSTグローバル変数ユーザーがフォーム上の別の場所で間違いを犯した場合などに使用します。それはすべて素晴らしい作品です。PHPを使用してhtml5ドロップダウンフォームでEchoが選択されました

<label for="qualification2">Grade:</label> 
     <input type="text" name="qualification2" id="grade2" class="form-control" 
     value="<?php if(isset($_POST['qualification2'])) { 
     echo $_POST['qualification2']; 
     } else { echo ($row ['qualification2']); } ?>"> 

私は選択のドロップダウンボックスを使用して同様の操作を行いたいが、コードは、ドロップダウンボックスで同じように機能していないようだと、私は私が間違っているのか、これがさらに可能であればてるのだろうか。

私も変数$行からエコー試してみたが、それが動作しないか

<?php if($row['qualMonth2'] == 'February') { echo ' selected'; } ?> 

これは私のコードです:

<select input type="text" name="qualMonth2" id="qualMonth2" value="Select Month"> 
     <option value="January" <?php if(isset($_POST['qualMonth2']) == 'January') { echo ' selected'; } ?>>January</option> 
      <option value="February" <?php if(isset($_POST['qualMonth2']) == 'February') { echo ' selected'; } ?>>February</option> 
      <option value="March" <?php if(isset($_POST['qualMonth2']) == 'March') { echo ' selected'; } ?>>March</option> 
      <option value="April" <?php if(isset($_POST['qualMonth2']) == 'April') { echo ' selected'; } ?>>April</option> 
      <option value="May" <?php if(isset($_POST['qualMonth2']) == 'May') { echo ' selected'; } ?>>May</option> 
      <option value="June" <?php if(isset($_POST['qualMonth2']) == 'June') { echo ' selected'; } ?>>June</option> 
      <option value="July" <?php if(isset($_POST['qualMonth2']) == 'July') { echo ' selected'; } ?>>July</option> 
      <option value="August" <?php if(isset($_POST['qualMonth2']) == 'August') { echo ' selected'; } ?>>August</option> 
      <option value="September" <?php if(isset($_POST['qualMonth2']) == 'September') { echo ' selected'; } ?>>September</option> 
      <option value="October" <?php if(isset($_POST['qualMonth2']) == 'October') { echo ' selected'; } ?>>October</option> 
      <option value="November" <?php if(isset($_POST['qualMonth2']) == 'November') { echo ' selected'; } ?>>November</option> 
      <option value="December" <?php if(isset($_POST['qualMonth2']) == 'December') { echo ' selected'; } ?>>December</option> 
     </select> 
+0

は '$ row'に設定されていますか?それを共有するためのケア?また親愛なる神リファクタリングしてください。 – Pogrindis

+1

'isset()'が返すものは分かりますか? –

+0

PHPクライアント側を使用しようとしていますか?ページがクライアントに送られるまでには、PHPコードは存在しません。 – Carcigenicate

答えて

0

はあなたが書いたものを見てみましょう。..

<option value="February" <?php if(isset($_POST['qualMonth2']) == 'February') { echo ' selected'; } ?>>February</option> 

qualMonth2(true/false)の値が設定されている場合は、もう一度比較してください文字列..

だからあなたは真実を比較している||文字列に対してfalseを返します。

isset($_POST['qualMonth2'])はtrueを返します。false。

だから、どれも選択されません。

<?php 
$month = ""; 

if(isset($_POST['qualification2'])){ 
    $month = $_POST['qualification2']; 
} 
?> 

そして比較値として$monthを使用..それをリファクタリング。

<option value="July" <?php if($month == 'July') { echo ' selected'; } ?>>July</option> 
+0

これは私にとって最も理にかなっていますが、実際にはまだ動作していませんが、私のコードで、おそらく他の場所でやることです。私は努力し続けます、あなたの助けをありがとう – user7269149

1

issetは、変数が設定されているかどうかに基づいて、trueまたはfalseに検証します。あなたはissetだけで値をチェックすることはできません。

は、状態を確認するために小さなユーティリティ関数を使用します。

function checkSelected($value) { 
    if(isset($_POST['qualMonth2']) && $_POST['qualMonth2'] == $value) { 
     return true; 
    } else { 
     return false; 
    } 
} 

あなたのselect要素は、次のようになります。

<select input type="text" name="qualMonth2" id="qualMonth2" value="Select Month"> 
    <option value="January" <?php echo checkSelected('January') ? 'selected':'' ?>>January</option> 
    <option value="February" <?php echo checkSelected('February') ? 'selected':'' ?>>February</option> 
    <option value="March" <?php echo checkSelected('March') ? 'selected':'' ?>>March</option> 
    <option value="April" <?php echo checkSelected('April') ? 'selected':'' ?>>April</option> 
    <option value="May" <?php echo checkSelected('May') ? 'selected':'' ?>>May</option> 
    <option value="June" <?php echo checkSelected('June') ? 'selected':'' ?>>June</option> 
    <option value="July" <?php echo checkSelected('July') ? 'selected':'' ?>>July</option> 
    <option value="August" <?php echo checkSelected('August') ? 'selected':'' ?>>August</option> 
    <option value="September" <?php echo checkSelected('September') ? 'selected':'' ?>>September</option> 
    <option value="October" <?php echo checkSelected('October') ? 'selected':'' ?>>October</option> 
    <option value="November" <?php echo checkSelected('November') ? 'selected':'' ?>>November</option> 
    <option value="December" <?php echo checkSelected('December') ? 'selected':'' ?>>December</option> 
</select> 
0

は、私はJavascriptを(私はjQueryのを好む)にこれらのチェックを実行することを好む、私は思いますコードをクリーンアップしますが、生成された月のループを使用することでこれを大幅に簡素化することもできます。出力

<select input type="text" name="qualMonth2" id="qualMonth2" value="Select Month"> 
<?php 
for($i=1; $i<=12; $i++) { 
    $dateObj = DateTime::createFromFormat('!m', $i); 
    $monthName = $dateObj->format('F'); 
    echo "<value>" . $monthName . "</option>"; 
} 
?> 
</select> 

このアプローチは、DRY(繰り返さないでください)アプローチをとるための1-12通じ

ループ。何かを変更する必要がある場合は、1行のコードと12行のコードを変更するだけです。($ _POST [「qualMonth2」]が設定されていない場合は1月にデフォルト)値を選択するための

のjQuery:

<script> 
    $('#qualMonth2').val("<?php echo (isset($_POST['qualMonth2'])) ? $_POST['qualMonth2'] : 'January' ?>"); 
</script> 

あなたは、あなたがこの回答から、私はちょうどあなたの二つの可能性を示しますどのような乗りあなたが望むなら、確かにループのチェックを追加することでJavascriptを避けることができます。

関連する問題