За последние 24 часа нас посетили 22302 программиста и 1100 роботов. Сейчас ищут 655 программистов ...

Вставка объекта в mysqli. Данные объекта берутся из формы.

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

Метки:
  1. Koyta

    Koyta Новичок

    С нами с:
    12 июл 2017
    Сообщения:
    3
    Симпатии:
    0
    Всем привет!
    Только начал учить и уже завис на такой проблеме. Беру данные для объекта из формы
    Объект:
    PHP:
    1. class Client
    2. {
    3.     private $companyName;
    4.     private $phone;
    5.     private $email;
    6.     private $website;
    7.  
    8. public function __construct(array $data)
    9.     {
    10.         $this->companyName = isset($data['company_name']) ? $data['company_name'] : 'undefined';
    11.         $this->phone = isset($data['phone']) ? $data['phone'] : 'undefined';
    12.         $this->email = isset($data['email']) ? $data['email'] : 'undefined';
    13.         $this->website = isset($data['site']) ? $data['site'] : 'undefined';
    14.     }
    15.  
    16. //Стандартные геттеры и сеттеры для полей $companyName, $phone, $email, $website
    17. }
    База данных:
    PHP:
    1. Class ClientsDB extends mysqli
    2. {
    3.   ...
    4.  
    5.     public function __construct()
    6.     {
    7.         $this->connection = new mysqli($this->host, $this->username, $this->password, $this->db);
    8.         $this->checkConnection();
    9.     }
    10.  
    11.     public function insert($companyName = 'undefined', $phone = 'undefined', $email = 'undefined', $website = 'undefined')
    12.     {
    13. //      Escaping string for prevent SQL Injections
    14.         $companyName = $this->connection->escape_string($companyName);
    15.         $phone = $this->connection->escape_string($phone);
    16.         $website = $this->connection->escape_string($website);
    17.         $email = $this->connection->escape_string($email);
    18.  
    19.         $sql = "INSERT INTO clients.clients (company_name, phone, email, site) "
    20.             . "VALUE ('$companyName', '$phone', '$email', '$website' )";
    21.  
    22.         echo '<p>Result of query: </p>' . $this->connection->query($sql) ? 'true' : 'false';
    23.     }
    24. }
    Форма:
    HTML:
    1.  
    2. <form action="index.php" method="post" autocomplete="off">
    3.  
    4.     <input placeholder="Company Inc." required type="text" name="companyName">
    5.  
    6.     <input type="tel" placeholder="+79001202030" name="phone">
    7.  
    8.     <input required type="text" placeholder="e-mail@domain.com" name="email">
    9.  
    10.     <input required type="text" placeholder="website.net" name="website">
    11.  
    12.     <button type="submit" class="btn btn-raised btn-primary" name="add_client">Add client</button>
    13.  
    14. </form>
    15.  
    Отлов POST'а
    PHP:
    1. if (isset($_POST['add_client'])) {
    2.     $company_name = $_POST['companyName'];
    3.     $site = $_POST['website'];
    4.     $phone = $_POST['phone'];
    5.     $email = $_POST['email'];
    6.  
    7.     $c_data = [
    8.         $company_name,
    9.         $phone,
    10.         $email,
    11.         $site
    12.     ];
    13.     $c = new Client($c_data);
    14.     echo $c;
    15.     $database->insert($c->getCompanyName(), $c->getPhone(), $c->getEmail(), $c->getWebsite());
    16. }
    На выходе в таблице получаю четыре поля undefined в строке (я их инициализировал в функции insert класса ClientsDB), что говорит о том, что в POST не передались (либо я плохо их поймал) значения companyName, phone, email, website.

    Что я делаю не так? Нужны именно введенные значения из формы в таблице. И код в стиле ООП. Хелп :)
     
  2. Koyta

    Koyta Новичок

    С нами с:
    12 июл 2017
    Сообщения:
    3
    Симпатии:
    0
    Выглядит таблица так после вставки. Первые три записи руками вбил
    upload_2017-7-14_21-50-43.png
     
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Тут ни у кого нет интерпретатора в голове. Отлаживайте. Но если вы считаете, что это ООП, то вы глубоко заблуждаетесь
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Maputo нравится это.
  5. Koyta

    Koyta Новичок

    С нами с:
    12 июл 2017
    Сообщения:
    3
    Симпатии:
    0