PHP и SQL - как превратить этот идентификатор в переменную?

Я создаю веб-сайт на PHP и хочу, чтобы мой идентификатор пользователя загружался в таблицу билетов, когда вы заказываете билет. Существует веб-страница, на которой вы можете выбрать билет, сумму и идентификатор, который уже указан в виде ярлыка.

Первый код добавляет данные в мою базу данных

    function best(){
    global $db, $errors;

    // receive all input values from the form
    $ticket     = e($_POST['tickety']);
    $aantall    = e($_POST['aantal']);
    $usidd      = e($_POST['usid']);

    // form validation: ensure that the form is correctly filled
    if (empty($ticket)) { 
        array_push($errors, "Ticket is verplicht"); 
    }
    if (empty($aantall)) { 
        array_push($errors, "Aantal is verplicht"); 
    }

    // order ticket if there are no errors in the form
    if (count($errors) == 0) {
            $con = new PDO("mysql: host=localhost; dbname=website", "root", "");

            mysqli_query($db, $query);
            $_SESSION['success']  = "Ticket besteld";
            header('location: index.php');
            $query = "INSERT INTO tickety (ticket, aantal, userid) 
                      VALUES('$ticket', '$aantall', '$usidd')"; 
            mysqli_query($db, $query);


        }
    }

Этот код определяет поля ввода

<form method = "post" action = "ticketpag.php">

    <?php echo display_error(); ?>
    <div class = "input_group">
        ID
        </br>
        <input type='hidden' name='usid'>
        <h4><?php
        echo $_SESSION['user']['id']; 
        ?></h4>
        </input>
        Ticket
        </br>
        <select name='tickety'>

            <?php
            $query = "SELECT * FROM `stok`";
            $result = mysql_query($query);
            while($row=mysql_fetch_array($result, MYSQL_ASSOC)){                                                 
            echo "<option>".$row['naam']."</option>";
            }
            ?>
        </select>
        </br>
        Aantal
        </br>
        <select name = "aantal">
                <option value = "1">1</option>
                <option value = "2">2</option>
                <option value = "3">3</option>
                <option value = "4">4</option>
                <option value = "5">5</option>
                <option value = "6">6</option>
                <option value = "7">7</option>
                <option value = "8">8</option>
                <option value = "9">9</option>
                <option value = "10">10</option>
                <option value = "11">11</option>
                <option value = "12">12</option>
                <option value = "13">13</option>
                <option value = "14">14</option>
                <option value = "15">15</option>
                <option value = "16">16</option>
                <option value = "17">17</option>
                <option value = "18">18</option>
                <option value = "19">19</option>
                <option value = "20">20</option>
            </select>
    </div>
    <div class = "input-group">
        <button type = "submit" class = "btn" name = "bestel_btn"> Bestellen</button>
        &nbsp; <a href = "index.php"> Terug</a>
    </div>
</form>

Где у вас input/textarea с name=usid?

pavel 20.03.2018 13:49

Не рекомендуется выполнять код после заголовка перенаправления (например, header('location: index.php');). Вы должны сделать все, что вам нужно, до этого, а затем die();, чтобы убедиться, что текущая страница не пропускает какие-либо данные.

ADyson 20.03.2018 13:49

P.S. Почему вы смешиваете mysql_ и mysqli_? Не надо. mysql_ мертв, для начала. (см. php.net/manual/en/intro.mysql.php)

ADyson 20.03.2018 13:52

Дело не в этом, я хочу сначала исправить эту проблему

Jop Rill 20.03.2018 14:03

Пожалуйста, не включайте мусорный текст только для того, чтобы обойти фильтр, укажите более подробную информацию.

paper1111 20.03.2018 14:12

@JopRill Что вы видите, когда вставляете echo $_SESSION['user']['id']; в best()? Вы не должны использовать POST для доставки существующих данных SESSION.

mickmackusa 20.03.2018 14:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавить $ _SESSION ['user'] ['id']; в поле ввода вместо метки, и он должен работать.

Пример:

<input type = "hidden" name = "usid" id = "usid" value = "<?php echo $_SESSION['user']['id'];?>" />

Скрытые поля пользователю не показываются.

Добавление: Но, как упомянул @mickmackusa, отправка существующих данных SESSION с использованием запроса POST является плохой практикой. Вместо этого проверьте и посмотрите, что происходит, когда вы выводите $ _SESSION ['user'] ['id'] внутри best (). Вы не должны использовать POST для доставки существующих данных SESSION.

В какой области вы бы посоветовали?

Jop Rill 20.03.2018 13:50

Это все еще не дает мне идентификатор пользователя в моей базе данных

Jop Rill 20.03.2018 13:56

@JopRill Что произойдет, если вы выведете $ _SESSION ['user'] ['id']; ценность для браузера? Показывает ли это ценность? И является ли поле ввода частью from?

Yvo Linssen 20.03.2018 13:57

На веб-странице он показывает мне правильный идентификатор, но я думаю, что имя usid не связано с ним или что-то в этом роде, и я не знаю, как это исправить

Jop Rill 20.03.2018 14:02

@JopRill Не могли бы вы обновить свой вопрос и добавить к нему всю форму? Вы должны убедиться, что скрытое поле ввода также является частью вашей формы.

Yvo Linssen 20.03.2018 14:02

@JopRill Вы не устанавливаете значение в своем коде. Не могли бы вы заменить поле ввода моим образцом, приведенным выше? Поэтому замените: <input type = 'hidden' name = 'usid'> <h4> <? Php echo $ _SESSION ['user'] ['id']; ?> </h4> с <input type = "hidden" name = "usid" id = "usid" value = "<? php echo $ _SESSION ['user'] ['id'];?>" />

Yvo Linssen 20.03.2018 14:11

@Yvo С какой стати вы посоветуете OP отправлять идентификатор через POST, если он уже хранится в SESSION? Плохой совет.

mickmackusa 20.03.2018 14:18

@JopRill Вы получили плохой совет.

mickmackusa 20.03.2018 14:19

@mickmackusa Поскольку он спросил, как отправить его с помощью POST, я предположил, что он не может получить его в коде для обработки формы. Если он может получить СЕССИЮ в этом коде, то, конечно, это лучший способ.

Yvo Linssen 20.03.2018 14:20

Важно направлять неопытных программистов в правильном направлении, даже если они об этом не просят. Почему? Поскольку StackOverflow не является индивидуальным взаимодействием. Эту страницу будут просматривать тысячи будущих исследователей, и некоторые неосознанно скопируют эту плохую практику. По этой причине вам следует избегать использования плохих методов программирования для достижения большего блага.

mickmackusa 20.03.2018 14:25

@mickmackusa В этом есть смысл. Спасибо за совет. Так что в этом случае лучше удалить мой ответ?

Yvo Linssen 20.03.2018 14:26

Вы не можете удалить ответ с зеленой галочкой.

mickmackusa 20.03.2018 14:28

@mickmackusa Упомянул вас в моем комментарии и добавил ваше предложение ;-)

Yvo Linssen 20.03.2018 14:33

Спасибо, буду иметь это в виду, но пока это работает

Jop Rill 21.03.2018 10:54

Другие вопросы по теме