За последние 24 часа нас посетили 16567 программистов и 1578 роботов. Сейчас ищут 1008 программистов ...

Заполнение строки БД через несколько форм

Тема в разделе "PHP и базы данных", создана пользователем g431k, 25 ноя 2016.

  1. g431k

    g431k Новичок

    С нами с:
    25 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток, задача следующая:
    На 1 странице пользователь вводит номер телефона и почту
    HTML:
    1. <form action="2.php" name="myform" method="post">
    2.     <h2>Введите номер телефона:</h2>
    3.     <input type="text" name="phone" maxlength="11"><br><br>
    4.     <h2>Введите e-mail адрес:</h2>
    5.     <input type="text" name="email" maxlength="30"><br><br>
    6.     <input name="Submit" type=submit value="Отправить данные">
    7. </form>
    8.  
    На 2 странице происходит обработка данных с 1 страницы, и форма выбора вида организации (в виде радиокнопок)
    PHP:
    1. <?php
    2. $serverMySQL="localhost";
    3. $db="mdk_up";
    4. $dblog="root";
    5. $dbpass="";
    6. $table="inform";
    7.  
    8. $mi=new mysqli($serverMySQL, $dblog, $dbpass, $db);
    9. $mi->set_charset("utf8");
    10. if($mi->connect_errno):
    11.     die($mi->connect_error);
    12. endif;
    13. $phone=mysqli_real_escape_string($mi, $_POST['phone']);
    14. $email=mysqli_real_escape_string($mi, $_POST['email']);
    15. $mi->query("insert into `$table` set `phone`='$phone', `email`='$email'");
    16.  
    17. $wwid=$mi->insert_id;
    18. printf($wwid);
    19. ?>
    20.  
    21.  
    22. <form action="3.php" method="post">
    23.     <h2>Выберите вид организации:</h2><br>
    24.     <input type="radio" name="vidorg" value="1" /> ИП<br />
    25.     <input type="radio" name="vidorg" value="2" /> ООО<br />
    26.     <input name="Submit" type=submit value="Отправить данные">
    27. </form>
    На 3 странице обработчик должен внести данные с радиокнопок в строчку БД, пытаюсь это реализовать через UPDATE, но как получить id строки на 3 страницу - не могу понять
    PHP:
    1. <?php
    2. $serverMySQL="localhost";
    3. $db="mdk_up";
    4. $dblog="root";
    5. $dbpass="";
    6. $table="inform";
    7.  
    8. $mi=new mysqli($serverMySQL, $dblog, $dbpass, $db);
    9. $mi->set_charset("utf8");
    10. if($mi->connect_errno):
    11.     die($mi->connect_error);
    12. endif;
    13.  
    14. $vidorg=mysqli_real_escape_string($mi, $_POST['vidorg']);
    15. $ins_id=mysqli_real_escape_string($mi, $_POST['ins_id']);
    16. $mi->query("update `$table` set `vidorg`='$vidorg' where id='$ins_id'");
    17.  
    18. ?>
    Собственно, сабж: как получить id строки на 3 страницу?
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    cookie, сессия, да хоть GET-параметром передавать. Только зачем разбивать форму на несколько страниц? Если полей гораздо больше, чем вы показали, то можно разнести их по табам, при этом оставить в одной форме.
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    вариантов множество. можно например передавать значение в <input type="hidden">

    рассуждая логически, лучше создавать строку в базе только тогда, когда ВСЕ нужные данные собраны и проверены: иначе у нас таблице будут присутствовать записи в которых не все необходимые поля заполнены.

    самое простое решение — сделать одну форму и манипулируя стилями в каждый момент времени показывать только какую-то её часть.
    один тег <form>, один обработчик на сервере, один sql insert. а с точки зрения пользователя выглядит как набор последовательных шагов.

    https://github.com/artoodetoo/formToWizard
     
  4. g431k

    g431k Новичок

    С нами с:
    25 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Спасибо за советы, делаю как посоветовал artoodetoo.
    HTML:
    1. <form action="add.php" name="myform" method="post">
    2.     <div id="1" style="display:block">
    3.     <h2>Введите номер телефона:</h2>
    4.     <input type="text" name="phone" maxlength="11"><br><br>
    5.     <h2>Введите e-mail адрес:</h2>
    6.     <input type="text" name="email" maxlength="30"><br><br>
    7.     <input type="button" onclick="show();" value="Далее">
    8.     </div>
    9.    
    10.    
    11.     <div id="2" style="display:none">
    12.     <h2>Выберите вид организации:</h2><br>
    13.     <input type="radio" name="vidorg" value="1" /> ИП<br /><br>
    14.     <input type="radio" name="vidorg" value="2" /> ООО<br /><br>
    15.     <input type="button" onclick="show();" value="Далее">
    16.     </div>
    17.    
    18.    
    19.     <div id="3" style="display:none;">
    20.     <h2>Загрузите документы:</h2><br><br>
    21.     <input type="file" name="document"><br> <br>
    22.     <input name="Submit" type=submit value="Отправить данные">
    23.     </div>
    24. </form>
    Обработчик вывел в отдельный файл. Остался вопрос о скрытии DIV блоков.
    Код (Javascript):
    1. <script>
    2. show.visible = '1';
    3. show.hidden = '2';
    4. function show(){
    5.      show.hidden = show.visible;
    6.      show.visible = (show.visible === '1')?'2':'1';
    7.     document.getElementById(show.visible).style.display = 'block';
    8.     document.getElementById(show.hidden).style.display = 'none';
    9. }
    10. </script>
    Этим скриптом скрываю 1 блок и вывожу 2. А как быть с 3 блоком? Для него отдельный скрипт нужен или как лучше сделать?
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    скрывать всё, кроме нужного в данный момент. я ссылку давал, там есть готовый js + инструкция.