#php #codeigniter #checkbox
#php #codeigniter #флажок
Вопрос:
опубликовать значение выбранного флажка из формы php для просмотра в codeigniter framework
форма php
<input type='checkbox' value="<?php echo $row_id ?>">
<input type='hidden' name='asap[]' value="1 " >
<input type='hidden' name='asap[]' value="2 " >
<input type='hidden' name='asap[]' value="3 " >
контроллер
$asap=> $this->input->post('asap')
Вид
echo $asap;
значение флажка не отображается в представлении
Комментарии:
1. В чем вопрос?
$asap
был бы массив ( я думаю )2. о, я забыл об этом .. просмотр не отображает сообщение, которое я ввожу
3.
echo $asap[0];
Может быть?4. Неопределенный индекс: как можно скорее, но я уже определяю его как $this-> load-view(‘просмотр’);
5. все еще не могу получить его, вот мой полный контроллер
public function view() { $this->layout->buffer ( array( 'asap' =>$this->input->post('asap') )); $this->load->view('view'); }
Ответ №1:
Вид:
<input type='checkbox' name='cname' value="<?php echo 'cvalue'; ?>">//changes
<input type='hidden' name='asap[]' value="1" >
<!--removed right space from value-->
<input type='hidden' name='asap[]' value="2" >
<!--removed right space from value-->
<input type='hidden' name='asap[]' value="3" >
<!--removed right space from value-->
контроллер:
//here you have syntax error use `=` instead `=>`
$postData = $this->input->post();
//you get all your post data, if you added `name` attribute only
print_r($postData);
//it will return you first hidden value
print_r($postData['asap'][0]);
echo '------------';
echo 'loop values';
$asap = $this->input->post('asap');
foreach($asap as $row){
echo $row.'<pre>';
}
вывод:
Array
(
[cname] => cvalue
[asap] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
1
----------
loop values
1
2
3
Комментарии:
1. Он использует CodeIgniter 🙂
2. @Eddie, я что-то упустил?
3. Я вообще не знаком с CI, но я уверен, что у него есть правильный способ получения
post
данных, а не$data = $_POST
4. хорошо обновленный код, я предположил, что он, прочитал все из руководства пользователя, спасибо @Eddie
5. спасибо, сэр, я могу получить значение сейчас, но как я могу повторить их по строкам?
<td><?php echo $asap>
илиforeach ($asap as sap) {
эхо 1 на 1 или массив по строкам
Ответ №2:
вы хотите получить значение флажка, поэтому вам нужно поместить его в массив.
В контроллере
public function update() {
$completed_asap = $this->input->post('asap');
// No need to echo $completed_asap. If you want then please do below line.
// var_dump($completed_asap);
foreach ($completed_asap as $asap_id) {
echo 'The asap with id = ' . $asap_id. ' is marked as completed.<br>';
}
}
По вашему мнению
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple CodeIgniter</title>
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1>Todos</h1>
<?php echo form_open('controller_name/update'); ?>
<div class="list-group">
<?php foreach ($todos as $todo) { ?>
<div class="list-group-item clearfix">
<?php echo form_checkbox('asap[]', $asap->id, $asap->completed); ?>
<?php echo $asap->task; ?>
</div>
<?php } ?>
</div>
<button type="submit">Submit</button>
<?php echo form_close();
</div>
</body>
</html>