dongwh1992 2015-07-08 08:42
浏览 8
已采纳

使用多个列表菜单和复选框php

Am retrieving some data from the DB and am allowing users to make multiple selection via check box and also selecting a level for each selected check box. when saving, i only get to see the selected check boxes in the DB but not the level selected.

Code for making selection

include ('mysql_connect.php');

$sql = mysql_query("SELECT * FROM competency WHERE department = '$department'");


while($row = mysql_fetch_array($sql))
{
echo "<tr>";
echo "<td>";
echo"<input type='checkbox' name='comp[]' value= ".$row['id']." /> ".$row['competency']." <br /> </td>";
echo"<td> <select name='level[]'value= ".$row['id']." >
            
                  <option></option>
                  <option>level 1</option> 
                  <option>level 2</option> 
                  <option>level 3</option> 
                  <option>level 4</option>
                  <option>level 5</option>  </select>                 </td> ";


}
echo "</tr>";
?>

<input name="submit" type="submit" value="submit" />
</form>
<?php
echo" </table>";

?>

.. Code for saving into the DB

session_start();
$id = $_SESSION['user_id'];

$hobb = $_POST['comp'];
$level  = $_POST['level'];
include ('mysql_connect.php');



 $N = count($hobb);

        
        for($i=0; $i < $N; $i++)
        {
            
            
            
            $var1=$hobb[$i];
            $var2 =  $level[$i];
            //include ('connect.php');
            include ('mysql_connect.php');
            $table = "INSERT INTO competency_result (user_id,competency_id,level) ".
                     "VALUES ('$id', '$var1', '$var2')";
            mysql_query($table) or die(mysql_error());
            $inserted_fid = mysql_insert_id();
            mysql_close();  
        }

</div>
  • 写回答

1条回答 默认 最新

  • dpli36193 2015-07-08 08:50
    关注

    Set the key the same for comp[] and level[], ie. $row['id'] -

    while($row = mysql_fetch_array($sql))
    {
    ...[your code]...
    
    echo "<input type='checkbox' name='comp[".$row['id']."]' value= ".$row['id']." /> ".$row['competency']." <br /> </td>";
    echo "<td> <select name='level[".$row['id']."]' >
    ...[your code]...
    }
    

    (note: the <select> does not have a value attribute. That is defined by the <option>)

    Then you can easily get the corresponding values using

    foreach($hobb as $key=>$val)
    {
        $var1=$hobb[$key];
        $var2=$level[$key];
        ...[your code]...
    }
    

    (also, it looks like you have <tr> inside your loop, but </tr> after. I would assume you would want to move the closing tag inside the loop to properly close each row)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog