复选框值将显示在同一页面中

时间:2015-03-07 08:53:20

标签: php mysql smarty

我有一个包含多行和多列的页面。

enter image description here

因此,当用户登录时,如果后端有任何条目,则应显示在前端。显示,如果后端表中的值为1,则如果0位于后端,则应取消选中。

                        {$i=0}
                        {foreach from=$last7days item=date}
                        <tr>

                             <td><b>&nbsp;&nbsp;{$date}</b><input type='hidden' name='date[]' value ='{$date}'></td>
                             <td><input type='checkbox' name='BREAKFAST[]' value='1' ><input type='hidden' name='BREAKFAST[]' value='0'></td>
                              <td><input type='checkbox' name= 'LUNCH[]' value='1'><input type='hidden' name= 'LUNCH[]' value='0'></td>
                             <td><input type='checkbox' name= 'EVENING[]' value='1'><input type='hidden' name= 'EVENING[]' value='0'></td>
                             <td><input type='checkbox' name= 'DINNER[]' value='1'><input type='hidden' name= 'DINNER[]' value='0'></td>
                              <td><input type='checkbox' name= 'MIDNIGHT[]' value='1'><input type='hidden' name= 'MIDNIGHT[]' value='0'></td>
                        </tr>
                        {/foreach}

对于php: -

   $show_details =   mysql_query("select id,user,date,BREAKFAST,LUNCH,EVENING,DINNER,MIDNIGHT,timeUpdate from phpgroupware_new.foodPlan
                        user='$name'");

表: -

mysql> select * from foodPlan;
+----+------------+------------+-----------+-------+---------+--------+----------+---------------------+
| id | user       | date       | BREAKFAST | LUNCH | EVENING | DINNER | MIDNIGHT | timeUpdate          |
+----+------------+------------+-----------+-------+---------+--------+----------+---------------------+
|  1 | monisha.md | 2015-03-07 |         1 |     1 |       1 |      1 |        1 | 2015-03-07 11:43:45 |
|  2 | monisha.md | 2015-03-08 |         0 |     0 |       0 |      0 |        0 | 2015-03-07 11:43:45 |
|  3 | monisha.md | 2015-03-09 |         0 |     0 |       0 |      0 |        0 | 2015-03-07 11:43:45 |
|  4 | monisha.md | 2015-03-10 |         0 |     0 |       0 |      0 |        0 | 2015-03-07 11:43:45 |
|  5 | monisha.md | 2015-03-11 |         0 |     0 |       0 |      0 |        0 | 2015-03-07 11:43:45 |
|  6 | monisha.md | 2015-03-12 |         0 |     0 |       0 |      0 |        0 | 2015-03-07 11:43:45 |
|  7 | monisha.md | 2015-03-13 |         0 |     0 |       0 |      0 |        0 | 2015-03-07 11:43:45 |
|  8 | admin      | 2015-03-07 |         1 |     1 |       0 |      0 |        0 | 2015-03-07 12:35:57 |
|  9 | admin      | 2015-03-08 |         1 |     1 |       0 |      0 |        0 | 2015-03-07 12:35:57 |
| 10 | admin      | 2015-03-09 |         1 |     1 |       0 |      0 |        0 | 2015-03-07 12:35:57 |
| 11 | admin      | 2015-03-10 |         1 |     1 |       0 |      0 |        0 | 2015-03-07 12:35:57 |
| 12 | admin      | 2015-03-11 |         1 |     1 |       0 |      0 |        0 | 2015-03-07 12:35:57 |
| 13 | admin      | 2015-03-12 |         1 |     1 |       0 |      0 |        0 | 2015-03-07 12:35:57 |
| 14 | admin      | 2015-03-13 |         1 |     1 |       0 |      0 |        0 | 2015-03-07 12:35:57 |
+----+------------+------------+-----------+-------+---------+--------+----------+---------------------+
14 rows in set (0.00 sec)

2 个答案:

答案 0 :(得分:0)

试试这个,

<input type="checkbox" <?php
echo($breakfast == 1)? 'checked="checked"' : ''?> name="BREAKFAST[]" value="<?php echo $breakfast; ?>" > 

$ breakfast是来自for循环的db的值。

答案 1 :(得分:0)

我认为您应该删除定义不同值0的其他隐藏输入,并且只包含值为1的第一个输入。也许这可以帮助您启动,除非我误解了您的问题

if (isset($_POST['BREAKFAST'])
{
$breakfast = $_POST['BREAKFAST'];

foreach($breakfast as $item) 
if($item == 1) //that means box is checked
// what do you want to do
else
// what you want to do if box is not checked
}

你实际上并不需要使用数组作为输入,只需一个变量就可以了