Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В базу как записать ?
 
 автор: vorobey   (07.04.2010 в 17:15)   письмо автору
 
 

$razmer = array("80*190/200","90*190/200", "120*190/200","140*190/200","150*190/200","160*190/200","180*190/200");


как записать в базу массив?
Пробовал так
$query="INSERT INTO test (razmer) VALUES ('$razmer')";
($result_add_user=mysql_query($query));

записывает array

  Ответить  
 
 автор: Diplex   (07.04.2010 в 17:30)   письмо автору
 
   для: vorobey   (07.04.2010 в 17:15)
 

Потому что, чтобы записать, нужно "вводить" каждое значение массива:
$razmer[0] ...1,2,3.....

Чтобы провести такую манипуляцию, можно воспользоваться for.
Также надо посчитать количество значений в массиве, через count

for ($i=0; $i < count($razmer[0]); $i++)
 {
Здесь строка добавления записи, только не $razmer, а $razmer[$i]. Таким образом, выше через count мы посчитали сколько значений в массиве, а потом пропустили через for нужное количество раз. А в квадратных скобках у нас подставляются числа от 0 до значения count.
}

  Ответить  
 
 автор: sim5   (07.04.2010 в 17:50)   письмо автору
 
   для: Diplex   (07.04.2010 в 17:30)
 

Вы уверены, что обязательно через цикл?

  Ответить  
 
 автор: Diplex   (07.04.2010 в 19:43)   письмо автору
 
   для: sim5   (07.04.2010 в 17:50)
 

Вовсе не обязательно, это первое, что в голову пришло :) Давно не работал с БД, уже изрядно забыл, как и что там :)

  Ответить  
 
 автор: vorobey   (07.04.2010 в 21:27)   письмо автору
 
   для: Diplex   (07.04.2010 в 17:30)
 

получилось, только без [0] , так зносит последнее значение.
Но меня интересует запись/чтение всего массива в одну ячейку, а так получается каждое значение с новым id - не совсем устраивает.
Как записать более компактно, все в одну ячейку, ну и конечно чтобы была возможность распарсить это дело обратно?

  Ответить  
 
 автор: Trianon   (07.04.2010 в 21:30)   письмо автору
 
   для: vorobey   (07.04.2010 в 21:27)
 

Вам придется из массива сделать строку. Задача эта к БД прямого отношения не имеет.
И Вы совершенно правы, строку придется делать такую, которую Вы потом сможете распарсить в массив.

  Ответить  
 
 автор: vorobey   (07.04.2010 в 21:36)   письмо автору
 
   для: Trianon   (07.04.2010 в 21:30)
 

>Задача эта к БД прямого отношения не имеет.
я уже понял
>из массива сделать строку. Cтроку придется делать такую, которую Вы потом сможете распарсить в массив.
А как ?
Как она должна выглядеть ?
$razmer[0] => 80/100

и скажите слэш при записи будет экранироватся? " \ "

  Ответить  
 
 автор: Trianon   (07.04.2010 в 21:57)   письмо автору
 
   для: vorobey   (07.04.2010 в 21:36)
 

это уж как придумаете.
например, можно перечислить все элементы через запятую. Или через пробел.
Тут нужно определяться, учитывая то, как Вы потом эту строку на составляющие распускать будете.

Только учтите, что поиск и отбор в БД по отдельным элементам выполнить будет уже нельзя.

Слэш-то зачем экранировать?
Экранирование не относится к этой задаче.
Экранирование - один из приемов, позволяющий создавать строки в коде SQL-запроса.

  Ответить  
 
 автор: vorobey   (07.04.2010 в 22:13)   письмо автору
 
   для: Trianon   (07.04.2010 в 21:57)
 

Как Вы считаете можно ее будет прямо в таблицу записать целой строкой? Вот так.
"80*190/200","90*190/200", "120*190/200","140*190/200","150*190/200","160*190/200","180*190/200"

А потом ее целиком извлечь и подставить в

$myrow=mysql_query("SELECT razmer FROM table.....);
$massiv=$myrow
$razmer = array ($massiv);
//и далее использовать ......
for ($r=0; $r<count($razmer); $r++)
echo  "<th title=' ".$razmer[$r]." '><div>".$razmer[$r]."</div></th>";

  Ответить  
 
 автор: Trianon   (08.04.2010 в 00:30)   письмо автору
 
   для: vorobey   (07.04.2010 в 22:13)
 

а кавычки-то зачем?
и зачем пробел после второй запятой?

всё это делается вызовом функции implode()
и обратно - explode()

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования