#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-й попытки, он перестает выдавать мне ошибки. Я поместил запрос перед моим подключением к базе данных, которое было ошибкой.
Это все еще не исправило мой код, но теперь я, по крайней мере, знаю, как продвигаться дальше.