2017-07-27 10 views
0

Mysqlから入力されたドロップダウンリストが文字列値ではなく数値を与える理由を理解できません。以下は、項目名を適切に表示するドロップダウンリストのコードです。問題は、選択した項目を後でプルするときに、ユーザーが選択した文字列項目名の代わりに数値を取得することです。PHP/Mysqlデータベースにドロップダウンリストが挿入されていて、文字列値の代わりにインデックス番号が出る

<select name="product1" class="form-control" id="sel1"> 
<?php 
    require('./PHPConnect.php'); 

    $dropdown = array(); 
    $downquery = "SELECT * FROM masterDESC"; 

    $response = @mysqli_query($dbc, $downquery); 

    if($response){ 
     while(($row = @mysqli_fetch_array($response,MYSQL_ASSOC))){ 
      $dropdown[] = $row['DESCRIPTION']; 
     } 
    } 

    foreach($dropdown as $key => $value){ 
     echo '<option value=' . $key . '>' . $value . '</option>'; 
    } 

    echo "</select>"; 
    mysqli_close($dbc); 
?> 

これは後で選択した項目をプルするために使用されるコードです。

$product1 = $_POST['product1']; 

答えて

0

私はそれを理解したことはありません。それはforeach上のキーバリューペアでした。過去に作成した同様のドロップダウンが必要でしたが、ここでは機能しませんでした。私はちょうどforeachを取り除き、それは働いた。

<select name="product1" class="form-control" id="sel1"> 
        <?php 
         require('./PHPConnect.php'); 

         //$dropdown = array(); 

         $downquery = "SELECT * 
           FROM masterDESC"; 

         $response = @mysqli_query($dbc, $downquery); 

         if($response){ 
          while(($row = @mysqli_fetch_array($response,MYSQL_ASSOC))){ 
           $dropdown = "<option value=\"{$row['DESCRIPTION']}\"> 
           {$row['DESCRIPTION']}</option>\n"; 
           echo $dropdown; 
          } 
         } 

         echo "</select>"; 
         mysqli_close($dbc); 
        ?> 
1

説明値である配列(この "$ dropdown [] = $ row ['DESCRIPTION'];)を取得しているので、インデックス番号を入力しています。記載されている何のキーがありません - 配列のインデックスは、$キーである - したがって、数

あなたはこれを次のように

foreach($dropdown as $key => $value){ 
    echo '<option value=' . $key . '>' . $value . '</option>'; 
} 

を変更して(表示される内容と同じにオプションの値を設定する必要があります番号を付けたままにして、後ほど$ dropdown [index]として参照してください。

foreach($dropdown as $value){ 
    echo '<option value="' . $value. '">' . $value . '</option>'; 
} 
関連する問題