У меня есть проект CodeIgniter Я бы хотел «обновить» :) В одной части этого я выбираю значение (первичный ключ) из таблицы и отображаю все данные из это запись. В настоящее время я использую раскрывающееся меню для выбора и кнопку для запуска запроса, который затем отображает данные на той же странице. Таблица имеет следующие поля:Заполнение нескольких текстовых полей из выпадающего списка - CodeIgniter/PHP
claim_id - primary key
repair_type
type
block
condition
defect
symptom
repair
addition
Моя модель:
class Claim_m extends MY_Model
{
protected $_table_name = 'claim';
protected $_order_by = 'repair_type';
protected $_primary_key = 'claim_id';
public function __construct()
{
parent::__construct();
}
public $rules_claim = array(
'repair_type'=>array(
'field'=>'claim_id',
'label'=>'ID Claima',
'rules'=>'required'
)
);
public function daj_dropdown() //creates dropdown
{
$rezultat = $this->db->select('claim_id,repair_type')->get('claim')->result_array();
$dropdown = array();
foreach($rezultat as $r)
{
$dropdown[$r['claim_id']] = $r['repair_type'];
}
return $dropdown;
}
}
Мой контроллер:
class Claims extends Frontend_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('claim_m');
}
public function choice()
{
//validation
$rules = $this->claim_m->rules_claim;
$this->form_validation->set_rules($rules);
if($this->form_validation->run() == TRUE)
{
$claim_id = $this->input->post('claim_id');
$this->data['zapisi'] = $this->claim_m->daj($claim_id,TRUE);
}
//dropdown
$this->data['dropdown'] = $this->claim_m->daj_dropdown();
//set subview
$this->data['subview'] = 'claim/zapis';
$this->load->view('_main_layout', $this->data);
}
}
My View (zapis.php):
<?php echo form_open();?>
<table class="table">
<tr>
<td>Type of repair:</td>
<td><?php echo form_dropdown('claim_id',$dropdown); ?></td>
</tr>
<tr>
<td></td>
<td><?php echo form_submit('submit', 'Izaberi', 'class="btn btn-primary"'); ?></td>
</tr>
</table>
<?php echo form_close(); ?>
<?php
if(!isset($zapisi))
{
echo 'no records';
}
else
{ ?>
<section>
<h2>Claim pattern - <u> <?php echo($zapisi->repair_type); ?> </u></h2>
<i>Defect type: </i><font color="red"><?php echo($zapisi->type); ?></font></br>
<i>Defect block: </i><font color="red"><?php echo($zapisi->block); ?></font></br>
<i>Condition code: </i><font color="red"><?php echo($zapisi->condition); ?></font></br>
<i>Defect code: </i><font color="red"><?php echo($zapisi->defect); ?></font></br>
<i>Symptom code: </i><font color="red"><?php echo($zapisi->symptom); ?></font></br>
<i>Repair code: </i><font color="red"><?php echo($zapisi->repair); ?></font></br>
<i>Other: </i></br><font color="red"><?php echo($zapisi->addition); ?></font></br>
</section>
<?php } ?>
Все это прекрасно работает, но мне нужно сделать его без кнопки на вид. В основном мне нужно записывать все остальные поля, когда выбор изменяется в выпадающем меню без необходимости нажатия кнопки. Я узнал об учебном пособии, когда требуется один файл, но мне нужно представить (после изменения в раскрывающемся меню) 7 полей из таблицы базы данных MySQL (тип, блок, состояние, дефект, симптом, ремонт, добавление).
Я не знаю много о jQuery или Ajax, но я предполагаю, что это необходимо для чего-то подобного. Если кто-то может помочь мне с этим или указать мне на правильный учебник, я был бы благодарен. Спасибо заранее!
Edit: функция Daj() из MY_Model
public function daj($id = NULL, $single = FALSE)
{
if ($id != NULL)
{
$filter = $this->_primary_filter;
$id = $filter($id);
$this->db->where($this->_primary_key,$id);
$method = 'row';
}
elseif($single == TRUE)
{
$method = 'row';
}
else
{
$method = 'result';
}
$this->db->order_by($this->_order_by);
return $this->db->get($this->_table_name)->$method();
}
Не могли бы вы отремонтировать свой вопрос и включить 'Claim_m-> daj()' в код модели? – DFriend
Hi DFriend Я добавил его. – DigitalMandrake
Что вы знаете, это отправить форму на кнопку, а затем показать данные об обновлении? Вы хотите сделать это, не перегружая страницу, или перезагрузка в порядке, вы просто хотите вызвать ее при изменении выпадающего списка? – trajchevska