Какие данные хранятся внутри моей формы ввода POST a SELECT

#php #mysql #forms

#php #mysql #формы

Вопрос:

Проблема

У меня есть форма с выпадающим списком, и мне нужны POSTDATA из нее для ввода в запрос mysql, но я не могу преобразовать в datetime.

То, что я пробовал

первое, что я попробовал: все значения в datetime взяты из таблицы сервера. Затем пользователь выбирает время, и это время затем сохраняется внутри переменной с использованием POST. Затем я пытаюсь преобразовать значение внутри переменной обратно во время, которое можно использовать внутри запроса. Но это выдает следующую ошибку: Предупреждение: mysql_query () ожидает, что параметр 2 будет ресурсным, значение null указано в reserveren.php в строке 57

вторая вещь, которую я попробовал: прямое использование сообщения внутри запроса, но это выдает следующую ошибку: Предупреждение: mysql_query () ожидает, что параметр 2 будет ресурсным, значение null указано в reserveren.php в строке 57

третья вещь, которую я попробовал: все еще преобразую значение, но другим методом, и это выдает эту ошибку: Исправляемая неустранимая ошибка: объект класса DateTime не удалось преобразовать в строку в reserveren.php в строке 60

Используемый код

Код для 1-й попытки выглядит следующим образом:

 $Tijd = date_create();
$Tijd->format(DateTime::ISO8601);

$result = mysql_query ("SELECT Voorstellingsnummer FROM voorstelling v WHERE Tijd = '$Tijd' AND v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);
  

Код для 2-й попытки выглядит следующим образом:

 $result = mysql_query ("SELECT Voorstellingsnummer FROM voorstelling v WHERE Tijd = '" . $_POST["Tijd"] . "' AND v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);
  

Код для 3-й попытки выглядит следующим образом:

 $time = $_POST["Tijd"];
$Tijd = new DateTime("$time"); 

$result = mysql_query ("SELECT Voorstellingsnummer FROM voorstelling v WHERE Tijd = '$Tijd' AND v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);
  

Это код формы:

 $resultaat = mysql_query ("SELECT Tijd FROM voorstelling v WHERE v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);

$_SESSION["Tijd"] = $resultaat; //the selected Tijd records in this query are in datetime format on the server.

echo "<form action='reserveren.php' method='post'>
    <H3>Kies een Tijd</H3><br>
    <select name='Tijd'> ";
while ($row = mysql_fetch_array($_SESSION["Tijd"])) {
    echo "<option value='" . $row['Tijd'] ."'>" . $row['Tijd'] ."</option>";
}
echo "</select>
    <input type='submit' name='Reserveer' value='Reserveren'>
    </form>";
  

В настоящее время я получаю только ошибки, но я хочу, чтобы переменная $ Tijd успешно использовалась в моем запросе mysql. Итак, какие данные я получаю из select и конвертирую ли я их в пригодное для использования значение datetime?

Комментарии:

1. Mysql_ * устарел, перейдите на mysqli_ * или PDO

2. @devpro Я не могу. Это для школьного проекта, где мы изучаем Mysql, извините, если это проблема, но из-за назначения я не могу использовать ничего, кроме Mysql

3. @devpro Я также не уверен, что мой учитель хотел бы, чтобы я начал добавлять mysqli_ * в мой проект, но если преобразование простое, что кажется, потому что вам просто нужно добавить ‘i’ после всего mysql_, я мог бы это сделать и посмотреть, что он думает. Но испортит ли это мой код? Проект должен завершиться на следующей неделе, и я почти закончил, и если преобразование приведет к беспорядку в моем коде, я бы предпочел не делать этого прямо сейчас.

4. Вы не можете просто изменить mysql на mysqli к сожалению, некоторые функции принимают разные параметры.

5. Сообщение об ошибке, которое вы получаете при первых 2 попытках, говорит о том, что вы не установили соединение с базой данных. Где ваше $db = mysql_connect(...) утверждение?

Ответ №1:

Проблема вроде как исправлена прямо сейчас из-за @Nick. Используя код со 2-й попытки, он перестает выдавать мне ошибки. Я поместил запрос перед моим подключением к базе данных, которое было ошибкой.

Это все еще не исправило мой код, но теперь я, по крайней мере, знаю, как продвигаться дальше.