2013-06-05 22 views
0

我有一個問題,從MySQL數組中檢索數據,我想要做的是,當用戶打開相同的窗體下次爲現有的ID,他應該看到哪選項被選中,而不是,所以,如果他提交表單而不更改任何內容(在複選框上),它會再次相同。如何從mysql數組中檢索數據,並使複選框在窗體中檢查

下面的代碼:

$media_array = $_POST['nesto1']; 
foreach ($media_array as $one_media) { 
$source .= $one_media.", "; 
} 
$nesto1 = substr($source, 0, -2); 

<label><input type="checkbox" name="nesto1[]" value="NewData" /> NewData </label> 
<label><input type="checkbox" name="nesto1[]" value="NewData2" /> NewData2 </label> 
<label><input type="checkbox" name="nesto1[]" value="NewData3" /> NewData3 </label> 

這是我如何檢索數據:

$result = mysql_query("SELECT * FROM `article` WHERE id=".intval($_GET["id"])." ORDER BY id ASC"); 
$row = mysql_fetch_array($result); 

我應該怎麼做在下一次打開時被選中的複選框選項,例如,NeData和NewData3,如果我在我的mysql行中的值爲:NewData,NewData3。

我試圖與in_array,但我沒有成功,這是我曾嘗試:提前

<label><input type="checkbox" name="nesto1[]" value="NewData"<?php echo in_array("NewData",$nesto1)?" checked="checked"":""; ?> />NewData</label> 
<label><input type="checkbox" name="nesto1[]" value="NewData2"<?php echo in_array("NewData2",$nesto1)?" checked="checked"":""; ?> />NewData2</label> 
<label><input type="checkbox" name="nesto1[]" value="NewData3"<?php echo in_array("NewData3",$nesto1)?" checked="checked"":""; ?> />NewData3</label> 

感謝。

新代碼(我已經改變的值,陣列和語法錯誤現在是固定的):

如果(isset($ _ POST [ 「名稱」])& & isset($ _ POST [ 「變化」])& & isset($ _ POST [「nesto2」])& & is_numeric($ _ POST [「change」])){ $ id = intval($ _ GET [「id」]);

$name = mysql_real_escape_string($_POST["name"]); 
$nesto1 = mysql_real_escape_string($_POST["nesto1"]); 
$nesto2 = mysql_real_escape_string($_POST["nesto2"]); 
$change = mysql_real_escape_string($_POST["change"]); 
$type= mysql_real_escape_string($_POST["category"]); 
$media_array = array(); 
foreach ($media_array as $one_media) { 
$source .= $one_media.", "; 
} 
$nesto1 = substr($source, 0, -2); 

$result = mysql_query("SELECT * FROM `article` WHERE id=".intval($_GET["id"])." ORDER BY id ASC"); 
$row = mysql_fetch_array($result); 

形式:

<label><input type="checkbox" name="nesto1[]" value="Kutija"<?php echo in_array("Kutija",$nesto1)?" checked=\"checked\"":""; ?> />Kutija</label> 
<label><input type="checkbox" name="nesto1[]" value="Punjač"<?php echo in_array("Punjač",$nesto1)?" checked=\"checked\"":""; ?> />Punjač</label> 
<label><input type="checkbox" name="nesto1[]" value="Baterija"<?php echo in_array("Baterija",$nesto1)?" checked=\"checked\"":""; ?> />Baterija</label> 

錯誤:警告:in_array()預計參數2爲陣列,在/home/smarthos/public_html/articles/article/edit.php空給定上線142

+0

有沒有人可以幫助我呢? – user2456581

回答

0

語法錯誤:

in_array("NewData",$nesto1)?" checked="checked"":"" 
          ^--  ^--  ^^--- 

不能使用相同類型的引號的字符串中,你所引用的整個字符串與。嘗試

in_array("NewData",$nesto1)?' checked="checked"':"" 
          ^--    ^-- 

in_array("NewData",$nesto1)?" checked=\"checked\"":"" 
             ^--  ^-- 

代替。

+0

當我改變這一點,我得到以下錯誤: 警告:in_array()期望參數2是數組,空行中給出的/home/smarthos/public_html/articles/article/edit.php在線142 /> – user2456581

+0

因此$ nesto1未在您的代碼中設置。例如你需要'$ nesto1 = $ _POST ['nesto1']'。 –

+0

我已經更新OP的建議,但我仍然收到警告...... 警告:in_array()期望參數2是數組,null在/home/smarthos/public_html/articles/article/edit.php中給出的行142 – user2456581

0

在您的foreach外觀中,檢查數據的數組值,如果數據存在呈現'檢查'。

foreach (as $key=>$value) { 
    echo '<label><input type="checkbox" name="nesto1[]" value="NewData"   

    //if data item is checked, render option as checked 
    if ($nesto1 == true) { 
     //this could also be done via CSS on the option element. 
     echo'checked'; 
    } 
    echo $value. 'NewData</label>'; 
} 

這應該讓你走上正軌。

0

在你的第一個代碼塊中,$nesto1不是一個數組,所以你不能使用in_array。嘗試:

$nesto1 = array(); 
foreach ($media_array as $one_media) { 
    $nesto1[] = $one_media; 
} 

此外,作爲@ marc-b指向,存在語法錯誤。

+0

不,不適合我。 – user2456581

相關問題