【问题标题】:Generating checkboxes from database after failed form validation in CodeIgniter在 CodeIgniter 中的表单验证失败后从数据库生成复选框
【发布时间】:2016-03-15 22:24:35
【问题描述】:

我正在 CodeIgniter 中创建一个带有验证的表单,但在将处理表单与验证混合时遇到了问题。在我的表单中,我有从数据库生成的复选框。一切正常,当有人正确提交表单(没有验证失败),但验证失败后,我的复选框没有正确生成(我有错误)。

我的控制器:

    public function form()
{
    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');

    /////////////////////////////////////////
    ////// MY PROCESSING CODE //////////////
    ////////////////////////////////////////
    //Generating checkbocks from database
    $data['szkolenia'] = $this->Szkolenie_m->pobierz();

    //Validation
    $this->form_validation->set_rules('imie', 'Imię', 'required');
    $this->form_validation->set_message('required', 'Błąd: wypełnij powyższe pole');

    //After form submit
            if (!empty($_POST))
    {
    $konsultant = $this->uri->segment(3);

    $dane = array(
        'email1' => $this->input->post('email'),
        'imie' => $this->input->post('imie'),
        'nazwisko' => $this->input->post('nazwisko'),
        'nazwa_firmy' => $this->input->post('firma'),
        'konsultant_id' => $konsultant,
    );

    //Saving selected checkboxes into another db
    $boxes = $_POST['formChecks'];
    $N = count($boxes);
    $ostatni_id = $this->Osoby_m->ostatni_id();

    for($i=0; $i < $N; $i++)
    {
        $this->Osoby_m->nowy_wpis_formularz($boxes[$i]);    
        //echo $boxes[$i];      
    }       

    //Adding data to DB
    $this->Osoby_m->nowa_osoba($dane);  

    }   

    /////////////////////////////////////////
    ////// PROCESSING CODE END //////////////
    ////////////////////////////////////////

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('formularz', $data);
    }
    else
    {
        $this->load->view('wyslano_formularz');
    }
}

我在视图中的复选框:

  <?php foreach ($szkolenia as $szkolenie): ?>
  <div class="checkbox">
        <label><input id="szkolenie<?php echo $szkolenie->id; ?>" type="checkbox" name="formChecks[]" value="<?php echo set_value('formChecks[]'); ?>"> <?php echo $szkolenie->nazwa_szkolenia; ?></label>
        <br>
    </div>
    <?php endforeach; ?>

在提交带有空白所需输入脚本的表单后,不会从数据库重新加载复选框并显示错误。这是发生的事件,当我将$data['szkolenia'] = $this-&gt;Szkolenie_m-&gt;pobierz(); 放入

if ($this->form_validation->run() == FALSE) { $this->load->view('formularz', $data); }

这是我得到的错误:

【问题讨论】:

  • 您可以添加您的视图代码吗??
  • 请注意,PHP 错误指出:views/formularz.hp -&gt; Line 81 那是发生错误转换的地方。
  • @NiranjanNRaju @Bonatti 我刚刚从视图中添加了复选框代码。此代码无需验证或成功验证即可正常工作。这是第 81 行:&lt;label&gt;&lt;input id="szkolenie&lt;?php echo $szkolenie-&gt;id; ?&gt;" type="checkbox" name="formChecks[]" value="&lt;?php echo set_value('formChecks[]'); ?&gt;"&gt; &lt;?php echo $szkolenie-&gt;nazwa_szkolenia; ?&gt;&lt;/label&gt;

标签: php forms codeigniter validation


【解决方案1】:

如果您想在验证错误时加载复选框,

使用set_checkbox('name', 'value');

这样,

set_checkbox('formChecks', 'value');

出现错误,因为您试图回显一个数组。

【讨论】:

  • 我应该把这段代码放在哪里?在$data['szkolenia'] = $this-&gt;Szkolenie_m-&gt;pobierz();之后的我的控制器中?
  • 用这个代替set_value()
  • 现在我没有错误,但是 - 保存选中的复选框不起作用:$boxes = $_POST['formChecks']; $N = count($boxes); $ostatni_id = $this-&gt;Osoby_m-&gt;ostatni_id(); for($i=0; $i &lt; $N; $i++) { $this-&gt;Osoby_m-&gt;nowy_wpis_formularz($boxes[$i]); echo $boxes[$i]; } 并且我的验证没有返回选中的复选框
猜你喜欢
  • 1970-01-01
  • 2021-11-19
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多