Я создаю веб-сайт cms, у меня есть одна проблема, которую я пытаюсь исправить, но не решаю, пожалуйста, может ли кто-нибудь помочь мне в этом. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь обновить свои записи, все загружается, кроме одной вещи, которая является опцией множественного выбора, если база данных содержит только одну опцию множественного выбора, которую он извлекает, но в случае, если их два или что-то еще больше, чем один в базе данных, он не извлекается. пожалуйста, может ли кто-нибудь помочь мне в этом, пожалуйста.
Ошибка, которую я получаю
A PHP Error was encountered Severity: Notice
Message: Array to string conversion
Filename: models/Contact_model.php
Line Number: 230
Backtrace:
File: C:\xampp\htdocs\CodeIgniter_try\application\models\Contact_model.php Line: 230 Function: _error_handler
File: C:\xampp\htdocs\CodeIgniter_try\application\controllers\Home.php Line: 444 Function: portfolio_update
File: C:\xampp\htdocs\CodeIgniter_try\index.php Line: 315 Function: require_once
Контроллер (Home.php)
//Updating the Records
public function portfolio_update($id)
{
//$id=$this->input->get('id');
$result['data']=$this->Contact_model->portfolio_byid($id);
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('type[]', 'Type');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('update_portfolio',$result);
}
else
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);
$title=$this->input->post('title');
$type= $this->input->post('type');
if ($this->upload->do_upload('filename'))
{
$fi= $this->upload->data('file_name');
$file = ("uploads/".$result['data'][0]->filename);
//delete the existing file if needed
if (file_exists($file)) {
unlink($file);
}
}
else
{
$fi= $result['data'][0]->filename;
}
$this->Contact_model->portfolio_update($title,$type,$fi,$id);
echo 'Successfully updated your record';
//exit();
}
}
Модель (Contact_model.php)
//Updatng the record
function portfolio_update($title,$type,$fi,$id)
{
$query=$this->db->query("update portfolio1 SET first_content='$title',type='$type',filename='$fi' where ID='".$id."'");
}
просмотр (update_portfolio.php)
<body>
<?php
$i=1;
foreach($data as $row)
{
?>
<form method = "post" enctype = "multipart/form-data">
<div class = "container">
<h5 style = "color:#ff1a1a">Select Section</h5>
<?php $array = array('Creative'=>'Creative','Photography'=>'Photography','Development'=>'Development');
echo form_multiselect('type[]',$array,$row->type);
?>
<span class = "text-danger"><?php echo form_error("type");?></span><br><br>
<br><input type = "submit" name = "update" class = "btn btn-success" value = "Update Records"/>
</div>
</form>
<?php } ?>
</body>
Произошла ошибка PHP. Серьезность: предупреждающее сообщение: implode (): переданы недопустимые аргументы Имя файла: controllers / Home.php Номер строки: 428 Backtrace: Файл: C: \ xampp \ htdocs \ CodeIgniter_try \ application \ controllers \ Home Строка .php : 428 Функция: implode Файл: C: \ xampp \ htdocs \ CodeIgniter_try \ index.php Строка: 315 Функция: require_once
как я получаю такие ошибки, сэр, когда их более одного значения в параметре выбора, тогда он отображается следующим образом
Все в порядке, сэр. Я исправил проблему. Мне пришлось использовать функцию разнесения, чтобы получить ее из базы данных. Я сделал это, ошибка исправлена. В любом случае спасибо за помощь






На самом деле ваше поле типа является значением массива флажков, поэтому вы не можете просто вставить массив в базу данных.
$type= $this->input->post('type');
это массив, который вы получаете, когда публикуете его на стороне сервера, поэтому вам нужно преобразовать в строку, разделенную запятыми, с помощью функции implode php, а затем вставить в базу данных. Также вы можете использовать значения, разделенные запятыми, чтобы отобразить выбранные значения, преобразовав их в массив с помощью функции разнесения.
Согласно сообщению об ошибке, сообщение: преобразование массива в строку в Имя файла: models / Contact_model.php. Но источник фактической ошибки от контроллера. Пожалуйста, попробуйте внести изменения в следующих разделах:
if ($this->upload->do_upload('filename'))
{
$fi= $this->upload->data('file_name');
$file = ("uploads/".$result['data'][0]->filename);
//delete the existing file if needed
if (file_exists($file)) {
unlink($file);
}
}
else
{
$fi= $result['data'][0]->filename;
}
$this->Contact_model->portfolio_update($title,$type,$fi,$id);
echo 'Successfully updated your record';
Изменено на это:
if ($this->upload->do_upload('filename'))
{
// $fi= $this->upload->data('file_name'); <-- Array
$get_file = $this->upload->data('file_name');
$fi = $get_file['file_name']; // <-- String
$file = ("uploads/".$result['data'][0]->filename);
if (file_exists($file)) {
unlink($file);
}
}
Надежда может вам помочь.
установите
$type = implode(',',$type)перед запросом в вашей модели, затем запустите запрос, поскольку ваша переменная $ type представляет собой массив, который вы должны преобразовать в строку, или просто измените логику ur, чтобы обновить данные