dongxie8906 2012-10-14 06:47
浏览 119
已采纳

php动态下拉框内容

I've got two data tables like below.

Table 1:

--------------------
sbstart sbend totsb
--------------------
  200    205   6

Table 2:

chkNo
------
 201
 203

I have got a dropdown box created dynamically which contains table 1 information which is all the responses from 200 to 205. In other words that dropdown has 200,201,202...205. What I now need is to exclude the numbers in table 2 once the dropdown box is created. For instance then the dropdown should have only 200,2004 and 2005 when it is displayed.

Here is the code I've done to get all the responses between start and end number as per table 1. Can someone please tell me how do I exclude the table 2 numbers once the dropdown is created. Thanks.

    $con=mysql_connect('localhost','root') or die ("Server connection failure!");
$db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the database");
$SQLx="SELECT * FROM table1";
$runx=mysql_query($SQLx,$con) or die ("SQL Error");
$norx=mysql_num_rows($runx);

while ($rec = mysql_fetch_array($runx))
    {
        for($i=$rec['sbstart']; $i<=$rec['sbend']; $i++)
        {
        echo "<option id='options' value='$i'>$i<br></option>";
        }
    }
  • 写回答

3条回答 默认 最新

  • dongren9739 2012-10-14 07:09
    关注

    I would suggest leveraging array_diff() to limit the initial creation of the dropdown to only those values which don't exist in the second table, like this:

    //set up the db connection
    $con = mysql_connect('localhost','root') or die ("Server connection failure!");
    $db = mysql_select_db('regional_data', $con) or die ("Couldn't connect the database");
    
    //get the range of values from the first table
    $SQLx = "SELECT * FROM table1";
    $runx = mysql_query($SQLx, $con) or die ("SQL Error");
    $rec = mysql_fetch_array($runx);
    
    //create an array representing the range of values
    $table1_array = array();    
    for($i = $rec['sbstart']; $i <= $rec['sbend']; $i++)
    {
        $table1_array[] = $i;
    }
    
    //get the values to be omitted from the second table
    $SQLz = "SELECT * FROM table2";
    $runz = mysql_query($SQLz, $con) or die ("SQL Error");
    
    //create an array representing the values to be omitted
    $table2_array = array();
    while ($rec2 = mysql_fetch_array($runz))
    {
        $table2_array[] = $rec2['chkNo'];
    }
    
    //compare the arrays
    //this results in an array of only the values you wish to include
    $final_array = array_diff($table1_array, $table2_array);
    
    //create the dropdown from the resulting array
    foreach ($final_array as $value)
    {
        echo "<option id='options' value='$value'>$value<br></option>";
    }
    

    See: http://php.net/manual/en/function.array-diff.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 被蓝屏搞吐了,有偿求帮解答,Ai回复直接拉黑
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并