2013-06-24 28 views
0

我有一个窗体,其中包含从表中加载的复选框组。表字段是MySQL TINYINT字段,其中1表示真,0表示假,并且因此命名为:frequency_sun,frequency_monfrequency_tue, frequency_wed,frequency_thu,frequency_fri, frequency_sat尝试从窗体中检索复选框值

的形式设置这样:

<?php 
$checked = ($frequency_sun==1) ? 'checked="checked"' : ''; 
        echo "<input type=\"checkbox\"" . $checked . "name='frequency[sun]' value=".$frequency_sun." >Sunday"; 
$checked = ($frequency_mon==1) ? 'checked="checked"' : ''; 
        echo "<input type=\"checkbox\"" . $checked . "name='frequency[mon]' value=".$frequency_mon." >Monday"; 
$checked = ($frequency_tue==1) ? 'checked="checked"' : ''; 
        echo "<input type=\"checkbox\"" . $checked . "name='frequency[tue]' value=".$frequency_tue." >Tuesday"; 
$checked = ($frequency_wed==1) ? 'checked="checked"' : ''; 
        echo "<input type=\"checkbox\"" . $checked . "name='frequency[wed]' value=".$frequency_wed." >Wednesday"; 
$checked = ($frequency_thu==1) ? 'checked="checked"' : ''; 
        echo "<input type=\"checkbox\"" . $checked . "name='frequency[thu]' value=".$frequency_thu." >Thursday"; 
$checked = ($frequency_fri==1) ? 'checked="checked"' : ''; 
        echo "<input type=\"checkbox\"" . $checked . "name='frequency[fri]' value=".$frequency_fri." >Friday"; 
$checked = ($frequency_sat==1) ? 'checked="checked"' : ''; 
        echo "<input type=\"checkbox\"" . $checked . "name='frequency[sat]' value=".$frequency_sat." >Saturday"; 
        ?> 

我怀疑这是一部分是不必要的和/或笨拙,但是这不是我的主要问题,至少不会立即。 无论如何,复选框组正在正确加载。我想通过一个变量设置为$_POST数据检索表单数据:

$frequency = $_POST['frequency']; 

//然后我设置变量在SQL UPDATE使用这样的:

$frequency_sun = (isset($frequency['sun']) ? $frequency['sun'] : $frequency_sun); 
$frequency_mon = (isset($frequency['mon']) ? $frequency['mon'] : $frequency_mon); 
$frequency_tue = (isset($frequency['tue']) ? $frequency['tue'] : $frequency_tue); 
$frequency_wed = (isset($frequency['wed']) ? $frequency['wed'] : $frequency_wed); 
$frequency_thu = (isset($frequency['thu']) ? $frequency['thu'] : $frequency_thu); 
$frequency_fri = (isset($frequency['fri']) ? $frequency['fri'] : $frequency_fri); 
$frequency_sat = (isset($frequency['sat']) ? $frequency['sat'] : $frequency_sat); 

在检查特定复选框时似乎没有返回值。对于我的测试,我在表中将frequency_wed设置为0,并且想将其设置为1,但是我无法弄清楚我要出错的地方。

+0

复选框在检查时报告'on'。 – DevZer0

回答

0

要保持你的编码方式,你可以做这样的事情

<? 
    if($frequency_sun == 1) $checked_sun = 'checked="checked"'; 
    if($frequency_mon == 1) $checked_mon = 'checked="checked"'; 
    if($frequency_tue == 1) $checked_tue = 'checked="checked"'; 
    if($frequency_wed == 1) $checked_wed = 'checked="checked"'; 
    if($frequency_thu == 1) $checked_thu = 'checked="checked"'; 
    if($frequency_fri == 1) $checked_fri = 'checked="checked"'; 
    if($frequency_sat == 1) $checked_sat = 'checked="checked"'; 
?>  

    <input type="chexkbox" name='frequency[sun]' value="<?=$frequency_sun?>" <?=$checked_sun?> />Sunday<br /> 
    <input type="chexkbox" name='frequency[mon]' value="<?=$frequency_mon?>" <?=$checked_mon?> />Monday<br /> 
    <input type="chexkbox" name='frequency[tue]' value="<?=$frequency_tue?>" <?=$checked_tue?> />Tuesday<br /> 
    <input type="chexkbox" name='frequency[wed]' value="<?=$frequency_wed?>" <?=$checked_wed?> />Wednesday<br /> 
    <input type="chexkbox" name='frequency[thu]' value="<?=$frequency_thu?>" <?=$checked_thu?> />Thursday<br /> 
    <input type="chexkbox" name='frequency[fri]' value="<?=$frequency_fri?>" <?=$checked_fri?> />Friday<br /> 
    <input type="chexkbox" name='frequency[sat]' value="<?=$frequency_sat?>" <?=$checked_sat?> />Saturday<br /> 

接下来,你需要从你的频率阵列获取值

$frequency = $_POST['frequency']; 
$frequency_sun = $frequency['sun']; 
"UPDATE yourtable SET sunday = '$frequency_sun', ..... WHERE something = 'value'"; 

然后选择

"SELECT * FROM yourtable WHERE something = 'value'" 

最后你的价值

$frequency_sun = $query_result['sunday']; 
. 
. 
. 

当然,您需要在表单之前从数据库中获取值。

+0

我已经为自己做了一个小小的标志,简单地说:如果您的设计问题可以通过“是”或“否”来回答,并且没有其他问题,请使用血腥的无线电按钮。谢谢大家试图帮助一个可怜的傻瓜,我很抱歉有人不得不忍受这一点。现在让我们再也不说这个了...... – user2514764

+0

你能解决它吗?如果是的话,编辑你的问题,如果我的答案不是,则将它设置为你的答案。 –

+0

Bleah。是的,我会标记它解决了。我保留了复选框,因为尽管只存储了布尔值,但可能会应用多个选择。我对复选框进行了硬编码(星期日为'value = 1',星期一为'value = 2'等),然后测试它们是否被检查;如果选中,存储一个1,否则存储一个0.我将遇到一个问题,以找出没有被检查过的盒子,但这是另一个问题。再次感谢您的帮助。 – user2514764