2012-10-14 2 views
0

У меня есть две таблицы данных, как показано ниже.php dynamic dropdown box content

Таблица 1:

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

Таблица 2:

chkNo 
------ 
201 
203 

У меня есть выпадающий список, созданный динамически, который содержит таблицу 1 информацию, которая все ответы от 200 до 205. Другими словами, это выпадающее меню имеет 200 201,202 ... 205. Теперь мне нужно исключить числа в таблице 2 после создания раскрывающегося окна. Например, в раскрывающемся списке должно быть только 200,2004 и 2005, когда оно отображается.

Вот код, который я сделал для получения ответов между начальным и конечным номерами в соответствии с таблицей 1. Может кто-нибудь скажет мне, как я могу исключить номера таблицы 2 после создания выпадающего списка. Благодарю.

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

'' mysql_ * функция устарела использование PDO или MySQLi –

ответ

0

Я хотел бы предложить используя array_diff(), чтобы ограничить начальное создание выпадающего списка только те значения, которые не существуют в второй таблице, как это:

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

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

+0

Ошибка анализа: синтаксическая ошибка, неожиданный '$ table1_array' (T_VARIABLE) в E: \ xampp \ htdocs \ ss \ docs \ testone.php в строке 12 –

+0

Пропущен точка с запятой. :) Исправлена. – coderabbi

0

Попробуйте это. Это строит список исключений из table2 до здания выпадающего:

$con=mysql_connect('localhost','root') or die ("Server connection failure!"); 
$db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the database"); 


$exclude = array(); 
$query = 'SELECT * FROM table2'; 
$runx=mysql_query($query,$con) or die ("SQL Error"); 
$norx=mysql_num_rows($runx); 

while ($rec = mysql_fetch_array($runx)) 
{ 
    $exclude[] = $rec['chkNo']; 
} 



$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++) 
     { 
      if (!in_array($i, $exclude)) 
      { 
       echo "<option id='options' value='$i'>$i<br></option>"; 
      } 
     } 
    } 
+0

точка с запятой отсутствует набор час Иначе этот метод работает тоже. Спасибо! –

0
$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"; 
$SQLy="SELECT * FROM table2"; 
$runx=mysql_query($SQLx,$con) or die ("SQL Error"); 
$runy=mysql_query($SQLy,$con) or die ("SQL Error"); 
$norx=mysql_num_rows($runx); 

while ($rec = mysql_fetch_array($runx)) 
    { 
     for($i=$rec['sbstart']; $i<=$rec['sbend']; $i++) 
     { 
      $exist=0; 
      while($rec2=mysql_fetch_array($runy)){ 
       if($i==$rec2['chkNo']){ 
        $exist=1; 
       } 
      } 
      if ($exist==0) 
       echo "<option id='options' value='$i'>$i<br></option>"; 
     } 
    }