【发布时间】: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->Szkolenie_m->pobierz(); 放入
if ($this->form_validation->run() == FALSE)
{
$this->load->view('formularz', $data);
}
这是我得到的错误:
【问题讨论】:
-
您可以添加您的视图代码吗??
-
请注意,PHP 错误指出:
views/formularz.hp -> Line 81那是发生错误转换的地方。 -
@NiranjanNRaju @Bonatti 我刚刚从视图中添加了复选框代码。此代码无需验证或成功验证即可正常工作。这是第 81 行:
<label><input id="szkolenie<?php echo $szkolenie->id; ?>" type="checkbox" name="formChecks[]" value="<?php echo set_value('formChecks[]'); ?>"> <?php echo $szkolenie->nazwa_szkolenia; ?></label>
标签: php forms codeigniter validation