Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача данных заказа из корзины в базу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Как занести заказ в базу и обратно
AYRON
Отправлено: 23 Октября, 2013 - 21:58:54
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Прошу совета!! Мой уровень - новичек.
Есть корзина, в ней формируется заказ, допустим несколько позиций, где разное количество и соответственно цена. Как можно данные из корзины поместить в базу и затем, например в админке, эти данные считать. Собственные мысли: занести данные заказчика это не проблема, например по id, взятая из сессии, через функцию пробежки по таблице пользователя. А вот как в одну таблицу еще поместить и заказ из корзины, да еще потом его вытащить в админку?
Наткнулся на один пример, где запись делается в одну ячейку таблицы, вот такого вида -
a:1:{i:1;a:2:{s:5:\"price\";s:3:\"299\";s:5:\"count\";i:1;}} , но что это и что с этим делать потом, не ясно.
Очень прошу, если кто может помогите - помогите.
Думаю, это будет многим интересно, так как в сети, доступной информации не нашел.
 
 Top
esterio
Отправлено: 23 Октября, 2013 - 22:02:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




 
 Top
AYRON
Отправлено: 23 Октября, 2013 - 22:04:59
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




спасибо, что отозвались. не совсем для меня понятно - unserialize. Описание прочитал, но не совсем понятно.
 
 Top
esterio
Отправлено: 23 Октября, 2013 - 22:07:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




а что там может быть не так. Ето сериализированые данные. Тоесть любые данные можна представить в строковом виде, а потом обратно превратить в ети саммые данные
 
 Top
AYRON
Отправлено: 23 Октября, 2013 - 22:12:48
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Схема понятна. понятно, что данные преабразуются в страку, а потом обратно,.....если можно простенький пример или ссылку на пример., что бы уже понять наглядно.....
 
 Top
esterio
Отправлено: 23 Октября, 2013 - 22:16:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




http://php.net/manual/ru/function.serialize.php
Там и примеры есть
 
 Top
AYRON
Отправлено: 23 Октября, 2013 - 22:17:52
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Спасибо.
(Добавление)
Буду разбираться...
 
 Top
AYRON
Отправлено: 24 Октября, 2013 - 22:58:24
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Без использования базы все получается с serialize и unserialize.
Может, кто сможет подсказать, как правильно добавить данные после преобразования в serialize в базу, таблицу. И если не трудно, обратно их вытащить. Очень надо. Не спал всю ночь, под утро заснул и искал решение в голове - как результат опоздал на работу.
 
 Top
keysi_
Отправлено: 24 Октября, 2013 - 23:13:37
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2009  


Помог: 1 раз(а)




Как обычную строку:
PHP:
скопировать код в буфер обмена
  1. INSERT INTO `cart`
  2. ( `id` , `item` )
  3. VALUES
  4. ( '1' , 'a:1:{i:1;a:2:{s:5:\\"price\\";s:3:\\"299\\";s:5:\\"count\\";i:1;}}' );
  5. ");
 
 Top
AYRON
Отправлено: 24 Октября, 2013 - 23:19:07
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Пробовал, не получается.
PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("INSERT INTO cart (id,item) VALUES ( '1' ,$text) ");
  3.  

по идеи должно все просто быть, но видно мои лыжи не едут, не работает.
(Добавление)
$text - это после serialize
 
 Top
caballero
Отправлено: 24 Октября, 2013 - 23:22:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




в кавычки полагается брать строковые данные а не целые


а вообще хранить это в Бд в сериализованном виде - глупо


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
AYRON
Отправлено: 24 Октября, 2013 - 23:24:00
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Вот мой код
PHP:
скопировать код в буфер обмена
  1.  
  2. //отправляем в базу
  3. db_connect();//функция подключения к базе mysql и таблицам
  4.  
  5. //создаем массив
  6. $exz = array();//создаем массив пустой
  7. $exz['apple']="яблоко";//заносим в массив значения
  8. $exz['red']="красное";//заносим в массив значения
  9. $exz['taste']="сладкое";//заносим в массив значения
  10.  
  11.  
  12.  
  13. // Преобразовываем полученный массив $arr в строку с помощью функции serialize():
  14. $text = (serialize($exz));
  15.  
  16. mysql_query("INSERT INTO user (id,text) VALUES ('1',$text )");
  17. $id = insert_id();
  18.  
  19. if($id)
  20. {
  21.     echo "Добавлено в таблицу";
  22. }
  23. else
  24. {
  25.    echo "Ошибка при добавлении";
  26. }
  27.  

он не работает...
(Добавление)
Где-то прочитал, что так удобней хранить напримаер данные из корзины интернет-магазина.
Вот и заморочился.
(Добавление)
не совсем понял - в кавычки полагается брать строковые данные а не целые,
(Добавление)
caballero пишет:
в кавычки полагается брать строковые данные а не целые


а вообще хранить это в Бд в сериализованном виде - глупо


что значит брать в ковычки строковые данные, а не целые?
(Добавление)
немного поменял код, но все равно не работает
PHP:
скопировать код в буфер обмена
  1.  
  2. //отправляем в базу
  3. db_connect();//функция подключения к базе mysql и таблицам
  4.  
  5. //создаем массив
  6. $exz = array();//создаем массив пустой
  7. $exz['apple']="яблоко";//заносим в массив значения
  8. $exz['red']="красное";//заносим в массив значения
  9. $exz['taste']="сладкое";//заносим в массив значения
  10.  
  11. // Преобразовываем полученный массив  в строку с помощью функции serialize():
  12. $text = (serialize($exz));
  13. print_r($text);//вывод для проверки
  14.  
  15. $result = mysql_query("INSERT INTO user (text) VALUES ($text)");
  16.  
  17. if($result)
  18. {
  19.     echo "Добавлено в базу";
  20. }
  21. else
  22. {
  23.     echo "Ошибка...";
  24. }
  25.  


В таблице две строки - id и text. Где я ошибаюсь?
(Добавление)
не добавляется
(Добавление)
Сам нашел ошибку $text, нода заключить было в одиночные ковычки, так как сама это переменная, подразумевает строку.
теперь буду стараться вытащить данные их базы и вернуть их в начальное состояние.
 
 Top
caballero
Отправлено: 25 Октября, 2013 - 00:15:09
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
В таблице две строки - id и text.

id - не строка


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
keysi_
Отправлено: 25 Октября, 2013 - 11:16:47
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2009  


Помог: 1 раз(а)




Хм, странно, у меня пример отлично работает
Попробуйте поменять строку:
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("INSERT INTO user (text) VALUES ($text)");

На
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query('INSERT INTO `user` (`text`) VALUES ("'.$text.'")');


Потому что я не зря взял ваши сериализованные данные в кавычки.Надо учитывать что в Mysql улетает чистый текст а не переменная и поэтому кавычки внутри текста воспринимаются как конструкции sql
И желательно любой текст предварительно обработать функцией mysql_real_escape_string();

И, напишите, ошибку которую возвращает sql, сложно разбираться почему у вас ни чего не работает на основе догадок.
 
 Top
AYRON
Отправлено: 25 Октября, 2013 - 17:51:27
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




спасибо, что не оставляете меня одного плавать в море информации. Код переделал (как умею, напомню, что это просто для пробы), он у меня работает -
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //отправляем в базу
  4. db_connect();//функция подключения к базе mysql и таблицам
  5.  
  6. //создаем массив
  7. $exz = array();//создаем массив пустой
  8. $exz['apple']="яблоко";//заносим в массив значения
  9. $exz['red']="красное";//заносим в массив значения
  10. $exz['taste']="сладкое";//заносим в массив значения
  11. ?>
  12.  
  13. <div><?PHP echo $exz['apple'];?></div><div><?PHP echo $exz['red'];?></div><div><?PHP echo $exz['taste'];?></div>
  14. <?PHP
  15. // Преобразовываем полученный массив  в строку с помощью функции serialize():
  16. $text = (serialize($exz));//
  17.  
  18. //добавляем форму для отправки
  19. ?>
  20.  
  21. <form action="index.php?view=list2" method="POST">
  22. <input type="submit" name="send" value="отправить"/>
  23. </form>
  24.  
  25.  
  26.  
  27. <?PHP
  28. //добавляем в таблицу
  29. if(isset($_POST['send']))
  30. {
  31.     $text = $text;
  32.     $result = mysql_query("INSERT INTO user (text) VALUES ('$text')");//
  33.  
  34.     if($result)//
  35.     {
  36.         echo "<br/>Добавлено в базу<br/>";//
  37.     }
  38.     else
  39.     {
  40.         echo "<br/>Ошибка...<br/>";//
  41.     }
  42.  
  43. ?>
  44. <div>-------------------------------------------------------</div>
  45. <div>выводим из таблицы</div>
  46. <?PHP
  47. //функция определения последнего id
  48. $idset = id_set();
  49. $id = $idset['id'];
  50.  
  51. //берем данные из базы
  52. $query = "SELECT * FROM user WHERE user.id = $id ";//
  53. $result = mysql_query($query);//
  54. $row = mysql_fetch_array($result);//переменной присваиваем данные
  55.  
  56. echo "<br/>выводим id строки - ".$row['id']."<br/><br/>";
  57. echo "выводим не обработанную строку - <br/>".$row['text']."<br/><br/>";
  58.  
  59. $xxx = unserialize($row['text']);//
  60.  
  61. echo $xxx['apple'];
  62.  
  63. }
  64. ?>
  65.  


Но возникла новая проблема, как $еуче передать через форму. Пробовал, не получается, ошибки не выдает, но в ячейку записывается, как $text и уже unserialize не потдается. Какое может быть решение, в какую сторону искать ответа?
(Добавление)
Как передать данные в serialize через $_post?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB