2012-11-11 123 views
0

這是問題。我有一個名爲pymnt_meth_pref的數據庫列,其中包含從多選形式中選擇的以逗號分隔的一系列付款方式。從數組中選擇多選表格

<td>Payment Methods Used:<br /> 
       <input type="checkbox" name="pyment_meth_pref[]" value="Cash">I can pay with cash.<br /> 
       <input type="checkbox" name="pyment_meth_pref[]" value="Check">I can pay by check.<br /> 
       <input type="checkbox" name="pyment_meth_pref[]" value="Credit Card">I can pay by credit card.<br /> 
       <input type="checkbox" name="pyment_meth_pref[]" value="Paypal">I can pay with Paypal.<br />    </td> 

這個陣列發佈到一個變量,並變成一個逗號分隔的字符串

if (isset($_POST['pyment_meth_pref'])) 
    $pymntmethpref = implode(", ", $_POST['pyment_meth_pref']); 

    if (isset($_POST['pyment_meth_acc'])) 
    $pymntmethacc = implode(", ", $_POST['pyment_meth_acc']); 

這隨後被插入到數據庫中爲逗號分隔的字符串。

我想要做的是,當用戶返回表單並「預先選擇」複選框時,取這個字符串並將值應用到原始表單,表明用戶已經選擇了以前的值,如果他們選擇編輯表單中的任何其他信息,將這些值保存在數據庫中。

我假設這將需要用JavaScript來完成,但如果有辦法用PHP來做到這一點,我寧願這樣做。

回答

2

嘗試爆炸()。如下

$valuesArr = explode(',', $dbresult); 

,並在你的HTML代碼使病情每個checkboxs,如下:

echo '<input type="checkbox" name="pyment_meth_pref[]" value="Cash"'. 
     (in_array('Cash', $valueArr) ? 'checked="checked"' : '').' /> 
     '<input type="checkbox" name="pyment_meth_pref[]" value="Check"'. 
     (in_array('Check', $valueArr) ? 'checked="checked"' : '').' />'; 

等。

我希望這能幫到

+0

這很完美。我知道有一種方法來完成它,我只是不記得in_array。謝謝。 – Budove

+0

不客氣 –

1
<?php 

# Assumed that $pymntmethpref and $pymntmethacc are the DB comma-delimited values 

$pm_pref = explode(', ' , $pymntmethpref); 
$pm_acc = explode(', ' , $pymntmethacc); 
$html_sel = 'checked="checked" '; 

?> 
<td>Payment Methods Used:<br /> 
    <input type="checkbox" name="pyment_meth_pref[]" <?php echo (in_array('Cash' , $pm_pref) ? $html_sel: ''); ?>value="Cash">I can pay with cash.<br /> 
    <input type="checkbox" name="pyment_meth_pref[]" <?php echo (in_array('Check' , $pm_pref) ? $html_sel: ''); ?>value="Check">I can pay by check.<br /> 
    <input type="checkbox" name="pyment_meth_pref[]" <?php echo (in_array('Credit Card' , $pm_pref) ? $html_sel: ''); ?>value="Credit Card">I can pay by credit card.<br /> 
    <input type="checkbox" name="pyment_meth_pref[]" <?php echo (in_array('Paypal' , $pm_pref) ? $html_sel: ''); ?>value="Paypal">I can pay with Paypal.<br /> 
</td> 
+0

謝謝。我贊成你回答,因爲你基本上是對的,但穆罕默德的回答是第一次。 – Budove