2014-05-20 60 views
1

我一直在試圖填充一個複選框列表,其中的值和名稱也是從MySQL中檢索的。我相信我需要將兩個iD匹配在一起才能夠將其標記爲已檢查,但目前我不確定。如何使用MySQL中的數據填充複選框?

$boardsiD = $pClass->checkedBoards(); 

foreach($pClass->retrieveBoards() as $data) 
{ 
    $boardiD = $data['boardiD']; 
    $boardName = $data['boardName']; 

    if($boardiD == $boardsiD) ------------------ 1 --------------------- 
    { 
     $checked = 'checked="1"'; 
    } 

    echo ' 
     <li><input '.$checked.' type="checkbox" value="'.$boardiD.'">'.$boardName.'</li> 
    '; 
} 

凡在中間的頭號破折號是,我有檢查,如果主板ID是相同的,如果是這樣那麼應用checked="1"。但它似乎並沒有工作。

以下是$ boardsiD的輸出;這些是在數據庫中加入的複選框;保存了我正在嘗試匹配的ID($boardiD = $data['boardiD'],這是ID的全部列表(約30個ID))。

Array (
     [0] => Array 
        ([board_iD] => 106468047379795203) 
     [1] => Array 
        ([board_iD] => 286119451265381250) 
     [2] => Array 
        ([board_iD] => 136234026166934321) 
     [3] => Array 
        ([board_iD] => 468022654964640361) 
     [4] => Array 
        ([board_iD] => 409757334785529893) 
     [5] => Array 
        ([board_iD] => 409757334785575605) 
     [6] => Array 
        ([board_iD] => 490681390589888313) 
     ) 

我不知道我是否可以使用的preg_match這還是我甚至應該的,我試過,但它沒有很好地工作,任何想法,爲什麼下面不工作?

+3

旁註:如果你想要它被檢查,你會做$ check ='checked';'如果這是你的意圖。除非你想讓你的檢查值顯示爲'

+0

以上是fred的正確答案,謝謝。如果id與從MySQL檢索到的任何內容相匹配,我希望框輸入框設置爲1(checked =「1」)。這是我的目標。 – iBrazilian2

+0

不客氣。問題解決了? –

回答

1

checked =「1」是無效的HTML。正確的語法爲HTML4將

<input type="checkbox" value="someValue" checked> 

或HTML5

<input type="checkbox" value="someValue" checked="checked" /> 

要檢查你的$板卡ID是你可以做以下$ boardsID值:

$checked = ''; 

for($i = 0; !$checked && $i < sizeof($boardsID); $i++) 
    if($boardID == $boardsID[$i]['board_iD']) 
    $checked = 'checked="checked"'; 
+0

感嘆,謝謝。編輯了一點,但同樣的想法。 – iBrazilian2

+0

編輯一下?怎麼樣? @ iBrazilian2我很好奇大聲笑 –

+0

@ Fred-ii-,這是幾乎相同的想法,它幾乎被認爲是相同的,但我確實有一個問題。爲什麼沒有foreach()工作,但for()工作得很好,我雖然那個foreach()也計算了從MySQL返回的所有內容.. – iBrazilian2

1

您的$boardsiD是一個2維數組,因此可以先將其轉換爲單維數組。

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($boardsiD)); 
$newBoardIDs = iterator_to_array($it, false); 

然後,

foreach($pClass->retrieveBoards() as $data) 
{ 
    $boardiD = $data['boardiD']; 
    $boardName = $data['boardName']; 

    if(in_array($boardID,$newBoardIDs)) 
    { 
     $checked = 'checked="1"'; 
    } 

    echo ' 
     <li><input '.$checked.' type="checkbox" value="'.$boardiD.'">'.$boardName.'</li> 
    '; 
} 

應該解決您的問題。

+1

你有意見嗎? –

相關問題