CodeIgniter表单助手

时间:2013-02-23 14:05:08

标签: php forms codeigniter html-table

Pic

我有一个表,其中包含数据库中的行,对于该表,我像往常一样获取行。图片在上面。

我的项目需要为表格中的行设置操作按钮,因此我创建了复选框(一切顺利)。现在我的问题是,当我的表单由于某种原因完全填写时我点击提交按钮时按钮什么都不做。我在项目的其他页面中使用了表单助手,没有任何问题。现在我遇到了第一个问题。

这是我对该表的看法:

<table id='waiting' class='display'>
    <thead>
        <tr>
            <th>ID</th>                       
            <th>A Number</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Reason for visit</th>
            <th>Comments</th>
            <th>Aid Year</th>
            <th>Staff Comments</th>
            <th>Staff Member</th>
            <th>Options</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($waiting as $row) { ?>                 
        <tr>
            <td><?php echo htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'); ?></td>               
            <td><?php echo htmlspecialchars($this->encrypt->decode($row['anum']), ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php echo htmlspecialchars($row['first'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php echo htmlspecialchars($row['last'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php echo htmlspecialchars($row['reason'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php echo htmlspecialchars($row['studentcomments'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php echo htmlspecialchars($row['aidyear'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php echo htmlspecialchars($row['counselorcomments'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td>
                <?php echo form_open('studentqueue_controller/counselorscreen'); ?>
                <?php echo form_dropdown('namedrop', $names) ?></td>
            <td>
                <input type="checkbox" name="options" value="start" <?php echo form_checkbox('options','start') ?>Start</input>
                <input type="checkbox" name="options" value="stop" <?php echo form_checkbox('options','stop') ?>Incactive</input>
            </td>
        </tr>
        <?php } ; ?>
        <?php echo form_submit('submit', 'Start Action'); ?>
        <?php echo form_close(); ?>

我在循环中打开表单,因为我需要表中的所有行来对它们执行操作(启动和终止)

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

您打开表单两次,因此忽略第二个表单之前的所有内容。 删除这一行:

 <?php echo form_open('studentqueue_controller/counselorscreen'); ?>

从命名之前开始,应该没问题。看看你的pastebin,第51和83行都打开了相同的形式。

答案 1 :(得分:0)

 <h3>Students Waiting</h3>
                <table id='waiting' class='display'>
                    <thead>
                        <tr>
                            <th>ID</th>                       
                            <th>A Number</th>
                            <th>First Name</th>
                            <th>Last Name</th>
                            <th>Reason for visit</th>
                            <th>Comments</th>
                            <th>Aid Year</th>
                            <th>Staff Comments</th>
                            <th>Staff Member</th>
                            <th>Options</th>
                        </tr>
                    </thead>
                    <tbody>

                        <?php
                        foreach ($waiting as $row) 
                        { 
                            ?>                
                        <tr>
                            <td><?php echo htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'); ?></td>               
                            <td><?php echo anchor('studentqueue_controller/history/'.urlencode($row['anum']). '', $row['anum'], 'target="_blank"'); ?></td>
                            <td><?php echo htmlspecialchars($row['first'], ENT_QUOTES, 'UTF-8'); ?></td>
                            <td><?php echo htmlspecialchars($row['last'], ENT_QUOTES, 'UTF-8'); ?></td>
                            <td><?php echo htmlspecialchars($row['reason'], ENT_QUOTES, 'UTF-8'); ?></td>
                            <td><?php echo htmlspecialchars($row['studentcomments'], ENT_QUOTES, 'UTF-8'); ?></td>
                            <td><?php echo htmlspecialchars($row['aidyear'], ENT_QUOTES, 'UTF-8'); ?></td>
                            <td><?php echo htmlspecialchars($row['counselorcomments'], ENT_QUOTES, 'UTF-8'); ?></td>
                            <td>
                                <?php echo form_open('studentqueue_controller/counselorscreen'); ?>
                                <?php echo form_dropdown('namedrop', $names) ?></td>
                            <td>
                                <input type="checkbox" name="options" value="start" <?php echo form_checkbox('options','start') ?>Start</input>
                                <br />
                                <input type="checkbox" name="options" value="stop" <?php echo form_checkbox('options','stop') ?>Delete</input>
                                <?php echo form_submit('submit', 'Start Action'); ?>                        
                                <?php echo form_close(); ?>
                            </td>
                        </tr>

                        <?php
                         } ?>
                    </tbody>    
                </table>

我把form_open和form都放在foreach中,这就是诀窍。