в каком месте кода сериализовать данные

panda

Новичок
есть вывод из бд таблица "продукты" нескольких продуктов в виде формы заказ, пользователь должен поставить по каждому продукту необходимое ему кол-во и нажав кнопку "отправить заказ" все должно записать в таблицу "заказ" как один заказ пользователя одной строкой.

я знаю, что надо записать в таблицу в одну строку данные через сериализацию.

вопрос - в каком месте кода сериализовать?

PHP:
$query = "SELECT * FROM optproduct ORDER BY description";
$opt = mysql_query($query);

if(!$opt) puterror("Ошибка при запросе к таблице ");
  

while($optpro = mysql_fetch_array($opt))     {

echo "<table align=center  cellspacing=0 cellpadding=0 border=1>
		<tr>"; ?>

   <FORM METHOD=POST ACTION=postoptorder.php ENCTYPE=multipart/form-data>
        <?
        echo "<td>".$optpro['description']."</td>
        ";?>
       <td><input required size=5 type=text name=quantity value=<? echo $optpro['quantity']; ?>></td>
       <td><input type=text name=id_optproduct value=<?php echo $optpro['id_optproduct']; ?>></td></tr>

    <?
    }  ?>
      <tr><td><INPUT TYPE=submit VALUE="Отправить заказ"></td></tr>
					</FORM>
					</table>
в файле обработчике формы идет только insert в таблицу.

помогите с логикой
 

panda

Новичок
пользователь выставит к-ва по разным продуктам и все что он выберет надо записать в одну строку в бд заказ с одним номером заказа
 

panda

Новичок
может кто то подскажет логику как такое реализовать?


яблоки - 10
груши - 15
арбузы - 12


продукты вытаскиваются из бд, к-во по каждому проставляет пользователь

отправляет заказ и все это должно записаться в бд order в одну строку с одним № заказа, одному логину
 

Linker

Новичок
panda

можно просто "склеить" в одну строчку, через какой-нибудь символ-разделитель, в чём проблема-то?

но вот мне сразу в глаза бросилось:
во-первых в форме зачем-то два поля ввода "<input type=text ..>"
можно ведь одно оставить, пользователь только количество указывает, так ведь?
т.е. будут поля вида:
<input type="text" name="q_<?php echo $optpro['id_optproduct']; ?>" value=<? echo $optpro['quantity']; ?>>

а в обработчике будет что-то вроде:
PHP:
foreach ($_POST as $k=>$v)
{

     if (strstr($k,'q_')
     {
     list($prefix,$pid) = explode('_',$k);
     // обработка значения поля $v для товара с идентификатором $pid
     }

}
а ещё, теоретически, в базе для этого заводятся две таблицы, первая для заказов, вторая, для позиций заказов, т.е. каждая позиция заказа (например "Яблоки" 15) это отдельная запись в таблице позиций заказа, а сами данные заказа (дата, время, связь с пользователем или заказчиком, статус заказа и т.д.) в таблице заказов.
 

baev

‹°°¬•
Команда форума
отправляет заказ и все это должно записаться в бд order в одну строку с одним № заказа, одному логину
— это неправильно. А если Вам, к примеру, понадобится вывести статистику по «яблокам, проданным за определённый срок», Вы будете регулярками эти данные «выдирать»?

Читайте про нормализацию БД.
 

panda

Новичок
— это неправильно. А если Вам, к примеру, понадобится вывести статистику по «яблокам, проданным за определённый срок», Вы будете регулярками эти данные «выдирать»?

Читайте про нормализацию БД.


подскажите рациональный вариант???
 

panda

Новичок
я просто ключ продукта из таблицы 1 беру, и к-во которое вводит пользователь, только это пойдет в бд order, вся остальная инфа в других таблицах хранится
 

Beavis

Banned
Почитай про нормализацию баз данных, тебе же уже сказали
 

panda

Новичок
вы предлогаете записывать в бд построчно, аля
иванов - яблоки - 10
петров - груши - 12

так?
 

Linker

Новичок
panda

нет, Ивановы с Петровами (точнее их идентификаторы, а точнее внешние ключи на их идентификаторы) пишутся в таблицу ЗАКАЗЫ
а вот позиции каждого заказа, пишутся в таблицу ПОЗИЦИИ ЗАКАЗОВ

получается примерно так:
таблица ЗАКАЗЫ имеет записи вида
идентификатор заказа | дата и время заказа | идентификатор пользователя | статус заказа | ...
таблица ПОЗИЦИИ ЗАКАЗА имеет записи вида
идентификатор позиции (не обязательно) | идентификатор заказа (внешний ключ на таблицу ЗАКАЗЫ) | идентификатор товара (внешний ключ на таблицу ТОВАРЫ, там, где яблоки и груши) | количество товара | ...

вот как-то так, примерно
 

Jon

Новичок
Таблица 1 - продукты
goods_id | tittle

Таблица 2 - заказы
order_id | date | user_info

Таблица 3 - связь заказ-продукт
Id | order_id | goods_id | count

Сама примитивная схема базы
 

Redjik

Джедай-мастер
Jon
в Таблица 3 - id избыточный (если мы все делаем правильно - many_many и pk составной)
 
Сверху