Я хочу вставить массив в ОДНОМ поле в базе данных mysql, используя PHP ..
это нормально работает:
HTML:
anotherField :<input type="text" name="anotherField" />
fax :<input type="text" name="f[]" />
email :<input type="text" name="f[]" />
phone :<input type="text" name="f[]" />
PHP (я использую кадр CodeIgniter):
<?php
function addCustomRow($tableName)
{
$arr = $this->input->post('f');
$field = implode("|", $arr);
$data = array(
'anotherField' => $this->input->post('anotherField'),
'field' => $field
);
$this->db->insert($tableName, $data);
}
?>
и я получаю данные в mysql следующим образом
fax|email|phone
НО ..
У меня вопрос ... Я хочу, чтобы в одном поле было много массивов .. Вот так:
fax|email|phone :br: fax|email|phone :br: fax|email|phone ..
Я пробовал что-то вроде этого:
HTML:
First array :
fax :<input type="text" class="inp" name="f[0][0]" />
email :<input type="text" class="inp" name="f[0][1]" />
phone :<input type="text" class="inp" name="f[0][2]" />
Second array :
fax :<input type="text" class="inp" name="f[1][0]" />
email :<input type="text" class="inp" name="f[1][1]" />
phone :<input type="text" class="inp" name="f[1][2]" />
PHP:
<?php
function addCustomRow($tableName)
{
$arr = $this->input->post('f[]');
$field = implode(":br:", $arr);
$data = array(
'anotherField' => $this->input->post('anotherField'),
'field' => $field
);
$this->db->insert($tableName, $data);
}
?>
но там написано Неверно [Уровень важности: Уведомление: преобразование массива в строку]
и я получаю данные в MySQL, как это
array :br: array
РЕДАКТИРОВАТЬ:
Я хочу сделать это так, потому что у меня есть таблица категорий ..
и у каждого кота есть свои детали (поля) .. поэтому, когда я добавляю нового кота, я просто делаю что-то вроде этого
name of cat : <input type="text" name="name" />
<!-- Fields -->
Fields //
Field 1 :
title of the filde : <input type="text" name="f[0][0]" />
type : <input type="text" name="f[0][1]" /> <!-- 1= text , 2= select , 3= textarea .. -->
default value : <textarea rows="8" cols="20" name="f[0][2]"> </textarea> <!-- if select type write value1::value2::value3 ... -->
Field 2 :
title of the filde : <input type="text" name="f[1][0]" />
type : <input type="text" name="f[1][1]" /> <!-- 1= text , 2= select , 3= textarea .. -->
default value : <textarea rows="8" cols="20" name="f[1][2]"> </textarea> <!-- if select type write value1::value2::value3 ... -->
Field 3 :
title of the filde : <input type="text" name="f[2][0]" />
type : <input type="text" name="f[2][1]" /> <!-- 1= text , 2= select , 3= textarea .. -->
default value : <textarea rows="8" cols="20" name="f[2][2]"> </textarea> <!-- if select type write value1::value2::value3 ... -->
и я могу добавить любое количество полей здесь ..
в базе данных. Я хочу, чтобы данные вставлялись так:
[nameOfBook|1|anyName :br: noOfPages|1|anyNo ]
а у другой кошки вот так например:
[colorOfcar | 2 | красный :: черный :: зеленый: br: цена | 1 | любая цена]
любая помощь?
заранее спасибо ..
@ Джастин Джонсон
спасибо за ваш ответ, но он не работает.
Я должен использовать $ data var, чтобы вставить все данные, но я использую ваш ответ, как этот
function addCustomRow($tableName)
{
$data = array(
'name' => $this->input->post('name'),
'fields' => serialize($this->input->post('f[]'))
);
$this->db->insert($tableName, $data);
}
и я получаю данные mysqyl вот так (b: 0;) !!
//
@ Суку, спасибо .. Я использовал его, прежде чем спрашивать, но я не знал, как .. Как я могу использовать его в моем случае здесь? ..
@ Alex
потому что у меня есть таблица с именем (категории), и у каждого кота есть свои поля, такие как:
carsCat >
type :
color:
details:
BooksCat >
nameOfbook:
writer:
numberOfpage:
и так далее ..
Я нахожу этот путь лучшим способом, может быть, в моем случае .. какие-либо предложения?