За последние 24 часа нас посетили 20634 программиста и 1105 роботов. Сейчас ищут 343 программиста ...

Запись в базу данных mysql с помощью веб приложения

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

Метки:
  1. SjCAM66

    SjCAM66 Новичок

    С нами с:
    1 окт 2018
    Сообщения:
    2
    Симпатии:
    0
    Пытаюсь научится php. Памагите

    Задача заключается в создании веб-страницы с 2 полями и кнопкой. Табличка состоит из столбцов - Имя, Телефон.

    Вопрос 1. Нажимая кнопку происходит сохранение информации из текстовых полей в таблицу БД. Так же должна быть проверка заполнения полей (на столбцах таблицы есть ограничение not null) при нажатии кнопки. Как это реализовать?

    Вопрос 2. Поле ввода номера телефона должно предусматривать проверку корректности номера с помощью рег. выражений на стороне сервера (например ^((8|+7)[- ]?)?((?\d{3})?[- ]?)?[\d- ]{7,10}$). В случае ввода некорректного номера - выводится сообщение об ошибке с примерами правильного заполнения. Не понимаю как должна выглядеть функция.

    На данный момент имеется: форма ввода forma.html
    HTML:
    1. <!DOCTYPE html>
    2.   <head>
    3.   <metacharset="utf-8">
    4.   <title>Форма ввода</title>
    5. </head>
    6.  
    7. <formaction="action.php"method="post"enctype="multipart/form-data">
    8.     Ваше имя: <inputtype="text"name="name"/><br/>
    9.     Ваш телефон: <inputtype="text"name="phone"/><br/>
    10.     <inputtype="submit"value="Отправить форму"/>
    11. </form>
    12. </body>
    13. </html>
    Код обработчика: Файл action.php
    PHP:
    1. $name=$_POST['name'];
    2. $phone=$_POST['phone'];
    3. //соединение с базой
    4. $db  =  new  PDO('mysql:dbname=db_name; host=localhost',"user_name","user_password");
    5.  
    6. //далее сам запрос
    7. $sql="insert into `table_name` (name,phone) values (:name, :phone)";
    8. $sth=$db->prepare($sql);
    9. $sth->bindValue(':name', $name);
    10. $sth->bindValue(':phone', $phone);
    11. $sth->execute();
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.787
    Симпатии:
    646
    Прямо, как написано. На клиенте или на сервере. Если на сервере, то перед записью при непрохождении проверки редирект на страницу с сообщением (или индикация ошибки и отдача сообщения в случае использования AJAX).

    Почти так же, как я написал в пред. предложении.
     
  3. SjCAM66

    SjCAM66 Новичок

    С нами с:
    1 окт 2018
    Сообщения:
    2
    Симпатии:
    0
    К сожалению,не могу понять как это реализовать. Нельзя ли привести пример кода?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.787
    Симпатии:
    646
    Нету примера. Делайте по условию редирект на страницу с формой, добавив к адресу, например, ?error=1, а на странице с формой при наличии этого модификатора выводите сообщение. При некорректности значения хотя бы одного поля все данные можно терять – пусть пользователь все вводит повторно.
     
  5. Batman

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

    С нами с:
    9 окт 2006
    Сообщения:
    72
    Симпатии:
    2
    Алгоритм такой:
    1. Проверяете пустой ли глобальный массив $_POST (т.е. данные в принципе к нам отправлены или нет)
    2. Проверяете валидны ли переданные данные (непустые, номер телефона в правильном формате)
    - если нет, то делаете перенаправление на форму с GET-параметрами, которые будут указывать, в каких полях ошибки
    - если все поля валидны, производите вставку записи в таблицу БД, и выводите сообщение, что все ок.
     
  6. SeApps

    SeApps Новичок

    С нами с:
    3 апр 2018
    Сообщения:
    27
    Симпатии:
    1
    PHP:
    1. $name=$_POST['name'];
    2. $phone=$_POST['phone'];
    3. $submit = $_POST['submit'];
    4. if (isset($submit)){
    5.     // проверка
    6.     if (preg_match('/^((8|+7)[- ]?)?((?\d{3})?[- ]?)?[\d- ]{7,10}$/', $phone)){
    7.         echo 'Ошибка';
    8.     } else{
    9.         // идем дальше
    10.     }
    11. }