2016-03-11 64 views
-1

是否有可能while循環整個選擇標籤有多個下拉菜單? 我想要實現的是在表格中充滿下拉菜單的列。雖然循環整個選擇標籤

這是我到目前爲止已經試過

<?php 
    $DNS_FROM = $DNS."_port-%"; 
    $select = "SELECT * FROM `uplink_port_mapping` WHERE DNS_From LIKE '$DNS_FROM'"; 
    $select1 = mysqli_query($conn, $select); 
    $select2 = "SELECT DNS_From FROM `uplink_port_mapping` WHERE DNS_From NOT LIKE '$DNS_FROM' AND DNS_To = ''"; 
    $select3 = mysqli_query($conn, $select2); 
    while($uplink_from = mysqli_fetch_assoc($select1)){ 
     echo "<tr>"; 
     echo "<td>".$uplink_from['DNS_From']."</td>"; 
     echo "<td>"."<select name = 'uplink_to' multiple='multiple'> 
     <option value = '".$uplink_from['DNS_To']."' selected='selected'>". $uplink_from['DNS_To']."</option>"; 

     while ($uplink_to = mysqli_fetch_assoc($select3)){ 
       echo "<option value='".$uplink_to['DNS_From']."'>".$uplink_to['DNS_From']."</option>"; 
     } 

     echo"</select>"; 
     echo"</td>"; 
     echo"</tr>"; 
    } 
?> 

How it is right now.

+1

你什麼試過? – Gopalakrishnan

+0

如果您嘗試將之內,則不起作用。現在讓我們更多的細節。 – Qrzysio

+0

@Gopal是的,我已經嘗試過。它確實創建了多個下拉菜單。但是,它只會填充第一個下拉列表。 – Deepak

回答

1

的原因第二while循環只工作一次是, mysqli_fetch_assoc($result)將使$ result recource的指針結束。 所以,當你嘗試第二次循環時,mysqli_fetch_assoc($result)不會在$結果林資源的最後返回任何東西(因爲它是

兩個possibilites:

重置指針開始:

<?php 
.... 
while($uplink_from = mysqli_fetch_assoc($select1)){ 
    echo "<tr>"; 
    echo "<td>".$uplink_from['DNS_From']."</td>"; 
    echo "<td>"."<select name = 'uplink_to' multiple='multiple'> 
    <option value = '".$uplink_from['DNS_To']."' selected='selected'>". $uplink_from['DNS_To']."</option>"; 

    // here's the change: 
    mysql_data_seek($select3, 0); 

    while ($uplink_to = mysqli_fetch_assoc($select3)){ 
      echo "<option value='".$uplink_to['DNS_From']."'>".$uplink_to['DNS_From']."</option>"; 
    } 

    echo"</select>"; 
    echo"</td>"; 
    echo"</tr>"; 
} 
.... 
?> 

還是 - 我認爲這是更好的解決方案 - 將數據存儲到一個數組,然後再通過陣列走:

<?php 
... 
$select2 = "SELECT DNS_From FROM `uplink_port_mapping` WHERE DNS_From NOT LIKE '$DNS_FROM' AND DNS_To = ''"; 
$result2 = mysqli_query($conn, $select2); 
$dns_from = Array(); 
while ($uplink_to = mysqli_fetch_assoc($select3)){ 
    $dns_from[] = $uplink_to; 
} 

.... 
// inside your first while loop: 
foreach($dns_from as $dns) { 
    echo "<option value='".$dns['DNS_From']."'>".$dns['DNS_From']."</option>"; 
} 
.... 
// note that I left out a bunch of your code, that doesn't change. 
?> 
+0

非常感謝。解決了問題 – Deepak

+0

我會堅持第一個解決方案。謝謝雖然:) – Deepak

+0

第一個解決方案是一個快速修復,但留給你沒有很好的結構化代碼。您從數據中提取數據越多,顯示效果越好。也習慣於更有意義的變量名稱。 – Jeff

0

多重選擇下拉基本的例子

$array = [ 
'Apple' => 1, 
'Orange' => 0, 
'Banana' => 1, 
]; 
echo '<select multiple>'; 
foreach ($array as $fruit => $sel) { 
    $selected = 0; 
    if ($sel == 1) { 
     $selected = 'selected'; 
    } 
    echo '<option value="' . $fruit . ' " ' . $selected . '>' . $fruit . '</option>'; 
} 
echo '</select>';