За последние 24 часа нас посетили 49732 программиста и 1731 робот. Сейчас ищут 624 программиста ...

Как разбить запись в БД из 1 формы

Тема в разделе "PHP для новичков", создана пользователем ekip, 1 июн 2010.

  1. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    Подскажите пожалуйста, есть форма заказа книг в книжном магазине
    HTML:
    1. <form method="post" action="script.php">
    2. Пользователь: <input name="name" type="text">
    3. Сумма: <input name="summa" type="text">
    4. Заявка: <input name="zayavka" type="text">
    5. Книга 1<input name="check1" type="checkbox" value="1">
    6. Книга 2<input name="check2" type="checkbox" value="2">
    7. Книга 3<input name="check3" type="checkbox" value="3">
    8. <input name="submit" type="Submit" value="Заказать">
    9. </form>
    10. </html>
    Пользователь заполняет поля и указывает чекбоксы, какие бы книги он хотел заказать, после нажатия кнопки заказать
    данные передаются php скрипту, который должен записать в базу данных mysql этот заказ. Но мне нужно выполнить несколько записей в таблицу, в каждой записи будет указана книга, т.е. разбить входящие данные чекбоксы в цикл.
    Как можно реализовать.

    Т.е. если пользователь указал чекбоксами 3 книги, запись должна быть подобного вида

    id | zayavka | kniga | summa |
    ---------------------------------------
    1 | 1 | 1 | 200 |
    ---------------------------------------
    2 | 1 | 2 | 200 |
    ---------------------------------------
    3 | 1 | 3 | 200 |
    ---------------------------------------


    У меня же получается так:


    id | zayavka | kniga | summa |
    ------------------------------------------
    1 | 1 | 1,2,3 | 600 |
    ------------------------------------------
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    замени на
    HTML:
    1. <form method="post" action="script.php">
    2. Пользователь: <input name="name" type="text">
    3. Сумма: <input name="summa" type="text">
    4. Заявка: <input name="zayavka" type="text">
    5. Книга 1<input name="check[]" type="checkbox" value="1">
    6. Книга 2<input name="check[]" type="checkbox" value="2">
    7. Книга 3<input name="check[]" type="checkbox" value="3">
    8. <input name="submit" type="Submit" value="Заказать">
    9. </form>
    10. </html>
    получишь массив по которому можно пройтись
     
  3. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    Сделал следующим образом:

    HTML:
    1. <meta http-equiv="content-type" content="text/html; Charset=UTF-8" />
    2. <form method="post" action="script.php">
    3. Пользователь: <input name="name" type="text">
    4. Сумма: <input name="summa" type="text">
    5. Заявка: <input name="zayavka" type="text">
    6. Книга 1<input name="check[]" type="checkbox" value="1">
    7. Книга 2<input name="check[]" type="checkbox" value="2">
    8. Книга 3<input name="check[]" type="checkbox" value="3">
    9. <input name="submit" type="Submit" value="Заказать">
    10. </html>
    И script.php


    PHP:
    1. <?php
    2. include 'config.php';
    3. $_POST['check'] = $check;
    4. $_POST['name'] = $name;
    5. $_POST['zayavka'] = $zayavka;
    6. $_POST['summa'] = $summa;
    7. $numcheck =  count($check);
    8. $onesum = $summa / $numcheck;
    9. foreach ( $check as $colvalue=>$checkvalue ) {
    10. mysql_query ("INSERT INTO tables
    11. (name,
    12. zayavka,
    13. kniga,
    14. summa)
    15. VALUES
    16. ('".$name."',
    17. '".$zayavka."',
    18. '".$checkvalue."',
    19. '".$onesum."')");
    20. }  
    21. ?>
    Корректно ли так?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    угу

    только надо обезопаситься. а то мало ли чего понасовать могут в переменные. а ты их прямо в базу непроверив пихаешь.

    вот тут по-соседству тема http://www.php.ru/forum/viewtopic.php?t=25857