За последние 24 часа нас посетили 17585 программистов и 1725 роботов. Сейчас ищут 1652 программиста ...

Запись в базу данных заносится каждый раз на новую строку

Тема в разделе "PHP и базы данных", создана пользователем fullofbeans, 1 авг 2022.

  1. fullofbeans

    fullofbeans Новичок

    С нами с:
    1 авг 2022
    Сообщения:
    2
    Симпатии:
    1
    Всем привет, помогите с вопросов, тут на сайте не нашел похожих топиков, есть сайт-опросник на несколько страниц, на каждой странице есть кнопка, отправляющая информацию в бд и перенаправляющая на след страницу, так вот, необходимо, чтобы в базу данных информация от одного пользователя вносилась в одну строку, а выходит так, что он заполняет поля на первой странице на одной строке, проставляя нули в остальных поля, а потом смещается на одну вниз и заполняет дальше уже ее, и так с каждой страницей, в чем может быть проблема? Прикрепляю скрин пхп и бд
    PHP:
    1. try {
    2.     $conn = new PDO("mysql:host=$servername;dbname=$dbname", "$username", "$password");
    3. $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    4.     $sql = "Insert into anketa (q1fin, q1mat, q1duh, q1cult, q1obr, q1dru, q2gen, q2sem, q2semdr, q2rozhd, q3yaz, q4otn, q4stat, q4prof, q4samo) values ('$q1fin', '$q1mat', '$q1duh', '$q1cult', '$q1obr', '$q1dru', '$q2gen', '$q2sem', '$q2semdr', '$q2rozhd', '$q3yaz', '$q4otn', '$q4stat', '$q4prof', '$q4samo')";
    5.    
    6.     $conn->exec($sql);
    7.     echo "New record created successfully";
    8.     }
    9. catch(PDOException $e)
    10.     {
    11.     echo $sql . "<br>" . $e->getMessage();
    12.     }
    13.  
    14. echo "<meta http-equiv=refresh content=0;URL=http://co47377.tmweb.ru/anketa3.html>";
    снимок 2.PNG
     

    Вложения:

    #1 fullofbeans, 1 авг 2022
    Последнее редактирование модератором: 2 авг 2022
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Скрин этот нам нафиг не нужен. Никакой полезной информации. )))

    В базе данных нет понятия "смещается вниз". РСУБД работает с множествами, которые по определению не упорядочены. И в них нет указателя на "текущую запись".

    Учи основы: операция insert добавляет новую запись. Чтобы изменить существующую запись, используют операцию update. При этом указывают что-то уникальное, что отличает эту запись от остальных. Обычно для этого используют первичный ключ (ID).

    Погугли что-нибудь вроде "основы баз данных". Почитай про основные операции: select, insert, update, delete
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.839
    Симпатии:
    651
    Нужно как-то связывать страницы для одного пользователя. Обычная авторизация или сложный ключ в адресе. Типа:
    /anketa/fds3jf4dgjd5gjd6gjd7gjgmmrpsndbrpvboiy?p=3
     
  4. fullofbeans

    fullofbeans Новичок

    С нами с:
    1 авг 2022
    Сообщения:
    2
    Симпатии:
    1
    Уже решил вопрос, сейчас закрою топик
    --- Добавлено ---
    Мало ли кто столкнется, необходимо было подцепить id через lastInsertId, а затем передать остальным скриптам через сессии, мне кажется, это не идеальное решение, но оно рабочее
     
    artoodetoo нравится это.