Codeigniter - 如何创建具有未定义输入数量的表单?

时间:2016-04-24 09:19:51

标签: php mysql forms codeigniter

因此,我一直在尝试为比赛表创建一个“添加”功能,该比赛表也与加入表相关联,因为比赛有许多与之相关的体育赛事(体育赛事也将包含在许多比赛中) )。我已设法创建如下,但它仅限于在下拉列表中根据所选游戏在连接表中添加一行。

现在,如果我不知道可能有多少体育赛事,我该如何创建表格呢?如果使用一个下拉列表,网站将如何创建另一个下拉列表,以便可以选择更多的体育赛事?类似地,控制器如何知道选择了多少个下拉列表,因此x要添加到连接表中的行数?

如果我使用不正确或含糊不清的术语来描述我的问题,我很抱歉。我最近才开始学习和创建网站。

谢谢。

更新: 我可能会根据以下更新的代码找到解决方案。但是我现在停留在插入数据库页面。出于某种原因,当我单击提交时,下一页加载但没有错误,也没有插入行。请帮助:)

查看

<h1>Add New Contest</h1>

<?php
echo form_open('contests/add/');
?>

<?php
echo "<br />" "<br />"

echo "Contest Name";
$data = array(  'name'          =>      'contest_name',
    'value'         =>      set_value('contest_name'),
);
echo form_input($data);
echo "<br />" "<br />"

echo "Game";
?>
   <div class="field_wrapper">
<div>
    <select name="field_name[]">
        <option value="" disabled selected>Select Game</option>
        <?php
        foreach($events_lists->result() as $row) {
            $sports_events_id = $row->sports_events_id;
            $sports_events_start_date = $row->sports_events_start_date;
            $sports_events_start_time = $row->sports_events_start_time;
            $home_team_shorthand = $row->home_team_shorthand;
            $away_team_shorthand = $row->away_team_shorthand;
            ?>
            <option value="<?php echo $sports_events_id; ?>"><?php echo $home_team_shorthand; ?> v <?php echo $away_team_shorthand; ?> - <?php echo $sports_events_start_date; ?>  <?php echo $sports_events_start_time; ?></option>
        <?php } ?>
    </select>
        <a href="javascript:void(0);" class="add_button" title="Add field"><img src="add-icon.png"/></a>
    </div>
</div>
    <?php
    echo "<br />" "<br />"

    $data = array(  'value'         =>      'Add Contest',
        'name'          =>      'submit',
        'class'         =>      'submit-btn',
    );
    echo form_submit($data);

    echo form_close();
    ?>

控制器

function add()
    {
        $league_id = $this->uri->segment(3);

        $this->load->module('leagues');
        $data['leagues_list'] = $this->leagues->get_where($league_id);
        foreach ($data['leagues_list']->result() as $row) {
            $league_insert_id = $row->id;

            $this->load->module('sports_events');
            $data['events_lists'] = $this->sports_events->get_events_list($league_insert_id);
        }

        if ($this->form_validation->run() == FALSE) {

            $data['view_file'] = 'add_contest';
            $this->load->module('template');
            $this->template->cmslayout($data);

        } else {

        $data1 = array(
            'contest_name'      =>      $this->input->post('contest_name')
        );

        if(isset($_REQUEST['submit'])) {
            $data2 = $_REQUEST['field_name'];
        }

        if ($this->_transactions_new_contest($data1, $data2)) {
            return $query;
            $this->session->set_flashdata('team_phase_created', 'The team phase has been set');
            redirect('/contests/');
        }

    }

}

模型

function _transactions_new_contest($data1, $data2){
    $this->db->trans_start();
    $this->db->insert('contests', $data1);
    $contest_id = $this->db->query('SELECT contests.id FROM contests ORDER BY contests.id DESC limit 1');
    foreach ($contest_id->result() as $row) {
        $contest_result_id = $row->id;
        foreach($data2 as $value){
        $this->db->query('INSERT INTO contests_has_sports_events (contests_id, sports_events_id) VALUES (' . $contest_result_id . ', ' . $value . ')');
    } }
    $this->db->trans_complete();
}

0 个答案:

没有答案