2016-11-23 77 views
0
的数组数据

我有一个表单,用户可以输入部门名称,然后是多个选择框,其中多个员工职位/职位正在此部门工作。PHP/MySQLi - 显示来自表

enter image description here

我现在正在寻找一种方式,让用户编辑自己提交的部门和:然后将记录通过foreach()循环,这是给我这个结果保存到我的SQL表因此想要在一个字段中再次显示存储的记录,这留下了将数组数据返回到选择字段的问题...

我试图用另一个foreach填充<select>字段,但是到目前为止没有运气。我不知道,如果问题仅仅是糟糕的代码,或者如果选择二插件在这里给我的问题,以及...

PHP(UPDATE2)

<?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>"; 

任何人都可以点我在正确的方向,请? 谢谢 A2K

编辑:更新的代码,以反映海报下方

+0

似乎确定?检查你有'echo'

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

+0

您期望的值你在一段时间内在这种情况下foreach是无用的。 –

+0

@RafaelShkembi确实如此,应该是 'echo“”;' –

回答

1

建议改变我给你两个解决方案

第一:

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>"; 
} 

拨打第二查询在此期间获得职位并填充选择选项。

二://我喜欢这一个

$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>"; 
} 

使所有位置的阵列,后来做而里面的foreach来填充选择选项

+0

谢谢,但这两种解决方案都不适合我。我有一个带有多个元素的'select'字段,如果我遵循第二个选项,则选择字段保持空白。如果我使用选项1,它只填充有关部门的第一个位置,但错过其他部分。我更新了我的代码以反映更改。谢谢! – Armitage2k

+0

在这种情况下,您可以使用第一个,但您需要修改查询。让我更新我的代码 –

+1

将第一个解决方案中的查询更改为this-> $ position_query =(“SELECT distinct positions FROM qci_departments where Department ='”。$ row ['Department']。“'”);更新了 –