2016-11-23 20 views
0

私は、ユーザーが部門名を入力できるフォームを持っています。そして、この部門で働いている複数の従業員の位置/タイトルがある複数の選択ボックス。記録はその後、結果として私にこれを与えているのforeach()ループを介して私のSQLテーブルに保存されます。PHP/MySQLi - テーブルの配列データを表示

enter image description here

私は今、ユーザーが自分の提出部門を編集できるようにする方法を探していますし、したがって、フィールドに格納されたレコードを再度表示したい場合は、配列フィールドを選択フィールドに戻す問題が残っています。<select>フィールドには別のforeachを使用しようとしましたが、これまで運がなかった。私はこの問題は、単に不正なコードがあるかどうかわからないですか、選択2プラグインは...ここにも私に問題を与えている場合

PHP(アップデート2)

<?php 
    // Start MySQLi connection 
    $db = new mysqli($dbhost,$dbuser,$dbpass,$dbname); 

    if($db->connect_errno > 0){ 
     die('Unable to connect to database [' . $db->connect_error . ']'); 
    } 

    // Build basic query, Admins can see all records 
    $sql = ("SELECT * FROM qci_departments GROUP BY Department ORDER BY Department"); 

    // run the query or show an error message 
    if(!$result = $db->query($sql)){ 
     echo('There was an error selecting data from the table [' . $db->error . ']'); 
    } 

    while($row = mysqli_fetch_array($result)){ 
     $dept_id = $row['ID']; 
     $dept_name = $row['Department']; 
     $dept_positions = $row['Positions']; 
     echo " 
      <tr> 
       <td> 
        <input type=\"text\" class=\"form-control\" id=\"editDeptName\" name=\"editDeptName\" value=\"$dept_id\"> 
       </td> 
       <td>$dept_name</td> 
       <td> 
        <select id=\"editDeptPositions\" name=\"editDeptPositions\" class=\"form-control\" multiple> 
         <option value='".$dept_positions."'>".$dept_positions."</option>"; 
         //$position_query = ("SELECT distinct Positions FROM qci_departments"); 
         $position_query = ("SELECT distinct Positions FROM qci_departments where Department = '".$row['Department']."'"); 
         if(!$result_positions = $db->query($position_query)){ 
          echo('There was an error selecting data from the table [' . $db->error . ']'); 
         } else { 
          while($row_positions = mysqli_fetch_assoc($result_positions)){ 
           echo "<option value='".$row_positions['Positions']."'>".$row_positions['Positions']."</option>"; 
          } 
         } 
        echo "</select> 
       </td> 
      </tr>"; 

誰もが正しい方向に私を指すでしください。 ?私はあなたに2つのソリューション

ファーストを与える

+0

を移入しながら、内側のforeachを作るOKらしいですか? 'echo"

";print_r($dept_positions);echo"
";' –

+0

を実行して期待した値を持っていることを確認してください。この場合、foreachがしばらく時間がかかります。 –

+0

@RafaelShkembiそれは本当です、 'echo"

答えて

1

下記のポスターによって提案された変更を反映するためのコードを更新: は、 A2K

EDITありがとう

while($row = mysqli_fetch_array($result)){ 
    $dept_id = $row['ID']; 
    $dept_name = $row['Department']; 
    $dept_positions = $row['Positions']; 
    echo " 
     <tr> 
      <td> 
       <input type=\"text\" class=\"form-control\" id=\"editDeptName\" name=\"editDeptName\" value=\"$dept_id\"> 
      </td> 
      <td>$dept_name</td> 
      <td> 
       <select id=\"editDeptPositions\" name=\"editDeptPositions\" class=\"form-control select2\"> 
        <option value='".$dept_positions."'>".$dept_positions."</option>"; 
        $position_query = ("SELECT distinct Positions FROM qci_departments"); 
        if(!$result_positions = $db->query($position_query)){ 
         echo('There was an error selecting data from the table [' . $db->error . ']'); 
        } else { 
         while($row_positions = mysqli_fetch_assoc($result_positions)){ 
          echo "<option value='".$row_positions['Positions']."'>".$row_positions['Positions']."</option>"; 
         } 
        } 
       echo "</select> 
      </td> 
     </tr>"; 
} 

を2番目のクエリを作成しますその中でポジションを取得し、選択オプションを設定します。

第二://私はこの1つ

$positions_arr = array(); 
$position_query = ("SELECT distinct Positions FROM qci_departments"); 
if(!$result_positions = $db->query($position_query)){ 
    echo('There was an error selecting data from the table [' . $db->error . ']'); 
} else { 
    while($row_positions = mysqli_fetch_assoc($result_positions)){ 
     $positions_arr[] = $row_positions['Positions']; 
    } 
} 
while($row = mysqli_fetch_array($result)){ 
    $dept_id = $row['ID']; 
    $dept_name = $row['Department']; 
    $dept_positions = $row['Positions']; 
    echo " 
     <tr> 
      <td> 
       <input type=\"text\" class=\"form-control\" id=\"editDeptName\" name=\"editDeptName\" value=\"$dept_id\"> 
      </td> 
      <td>$dept_name</td> 
      <td> 
       <select id=\"editDeptPositions\" name=\"editDeptPositions\" class=\"form-control select2\"> 
        <option value='".$dept_positions."'>".$dept_positions."</option>"; 
        foreach($positions_arr as $value){ 
         echo "<option value='".$value."'>".$value."</option>"; 
        } 
       echo "</select> 
      </td> 
     </tr>"; 
} 

を好むすべての位置の配列を作成し、後からオプションを選択

+0

ありがとうございます。複数の要素を持つ 'select'フィールドがあります.2番目のオプションに従えば、選択フィールドは空のままです。オプション1を使用すると、関連部門の最初のポジションのみが設定されますが、他のポジションは欠落します。変更を反映するようにコードを更新しました。ありがとうございました! – Armitage2k

+0

その場合は最初のクエリを使用できますが、クエリを変更する必要があります。私のコードを更新してみましょう –

+1

最初の解決策でthis-> $ position_query =( "qci_departmentsから部門を選択してください( 'Department' = $" [Department '] "'")); –

関連する問題