2016-11-29 67 views
0


我有必要檢查複選框中哪些值在數據庫中可用,並且我還需要顯示其他選項avaialable。
我正在嘗試,因爲我使用兩個循環它重複相同的複選框,並檢查每個實例中的不同值。
我需要在第一個循環中檢查相應的複選框。有沒有辦法實現這個
下面是我的輸出 Output of the code
以下是我使用使用2個循環從服務器端數據填充複選框

$sid;//Retrived from DB 
$iDLst=array(); 
$sql1 = "SELECT 
`id1` 
FROM `tbl1` 
where `tbl1_sid`='" . $sid . "'"; 
$result1 = $conn->query($sql1); 
if ($result1->num_rows > 0) { 
    while ($row = $result1->fetch_assoc()) { 
     $iDLst[]=$row['id1']; 
    } 
} 
foreach ($iDLst as $id){ 
    $sql2 = "SELECT 
    `id`, 
    `nme` 
    FROM `tbl2`; 
    "; 
$result2 = $conn->query($sql2); 
    if ($result2->num_rows > 0) { 
     while ($rowC = $result2->fetch_assoc()) { 

      if (strpos($rowC['id'], $id) !== FALSE) { 
       echo ' <input value="' . $rowC['id'] . '" type="checkbox" name="upD[]" checked/> <label>' . $rowC['nme'] . ' &nbsp;&nbsp;&nbsp;</label>'; 


      } else { 
       echo ' <input value="' . $rowC['id'] . '" type="checkbox" name="upD[]" /> <label>' . $rowC['nme'] . ' &nbsp;&nbsp;&nbsp;</label>'; 
      } 


     } 
    } 
} 

注意代碼:我已經更改爲通用代碼,有一個在代碼中沒有錯誤。我正在看顯示器。我需要相關的邏輯部分的解決方案...

回答

0

我已經找到了一些研究後的方式。
我這樣做的方式只有一半。
以下代碼將完成所提供代碼的工作。

//Print the checkbox with checeked for the values in array 
foreach ($iDLst as $id){ 
    $sql2 = "SELECT 
    `id`, 
    `nme` 
    FROM `tbl2`; 
    "; 
$result2 = $conn->query($sql2); 
    if ($result2->num_rows > 0) { 
     while ($rowC = $result2->fetch_assoc()) {                    
      echo ' <input value="' . $rowC['id'] . '" type="checkbox" name="upD[]" checked/> <label>' . $rowC['nme'] . ' &nbsp;&nbsp;&nbsp;</label>';            
       } 
     } 
    } 
    //Print the checkbox without checeked for the values Not in array 
    $sql3 = "$sql2 = "SELECT 
    `id`, 
    `nme` 
    FROM `tbl2` where id NOT IN (" . implode(',', array_map('intval', $iDLst)) . "); "; 

    $result3 = $conn->query($sql3); 
    if ($result3->num_rows > 0) { 
      while ($rowC = $result3->fetch_assoc()) {            

      echo ' <input value="' . $rowC['id'] . '" type="checkbox" name="upD[]"/> <label>' . $rowC['nme'] . ' &nbsp;&nbsp;&nbsp;</label>'; 

      } 
    } 

以下問題導致我的方式做到這一點
MySQL PHP - SELECT WHERE id = array()? [duplicate]

mysql syntax on not equal many values

0

我認爲你可以取代這個:

if (strpos($rowC['id'], $id) !== FALSE) { 
       echo ' <input value="' . $rowC['id'] . '" type="checkbox" name="upD[]" checked/> <label>' . $rowC['nme'] . ' &nbsp;&nbsp;&nbsp;</label>'; 


      } else { 
       echo ' <input value="' . $rowC['id'] . '" type="checkbox" name="upD[]" /> <label>' . $rowC['nme'] . ' &nbsp;&nbsp;&nbsp;</label>'; 
      } 

與此:

echo ' <input value="' . $rowC['id'] . '" type="checkbox" name="upD[]" ' . strpos($rowC['id'], $id) ? 'checked ' : '' . '/> <label>' . $rowC['nme'] . ' &nbsp;&nbsp;&nbsp;</label>'; 

這是一個三元聲明中說,如果strpos($ rowC ['id'],$ id)計算結果爲true,'checked'將在echo語句中,否則''將在封閉的echo語句中。

+0

不,同樣的結果..... – Kuru

+0

我看不出'$ id'是被設置。 – jcorry

+0

它在foreach循環中 – Kuru