Я пытаюсь сделать свой дневник бронирования с помощью php, sql и html.
Я хотел бы иметь возможность предотвратить обнаружение бронирования в моей форме бронирования, проверив мою базу данных, чтобы увидеть, существует ли запись, прежде чем разрешить выполнение инструкции insert.
В идеале я хотел бы иметь возможность сделать заявку на выбор, чтобы проверить, существует ли уже бронирование. ЕСЛИ ВРЕМЯ И ДАТА НЕ СУЩЕСТВУЮТ Я бы хотел, чтобы RADIO BUTTON PRESENT ELSE ЕСЛИ ВРЕМЯ И ДАТА Я бы хотел, чтобы радиокнопка NOT PRESENT.
Я думал долго и упорно, но не может придумать способ, чтобы сделать это.
Могу ли я получить некоторые предложения о том, как я могу преодолеть свою проблему?
благодаря
Моя таблица SQL выглядит следующим образом: ТАБЛИЦЫ (bDate Date, bTime Time, bName CHAR (30), bNumber CHAR (30), bReg CHAR (30), bMakeModel CHAR (30))
Это то, что у меня есть до сих пор, но я не могу думать, как это сделать, я думаю, что, возможно, я ошибаюсь, и, возможно, более подходящий цикл будет лучше:
<?php
$result = mysqli_query($con,"SELECT * FROM Bookings WHERE bDate = '$_POST[bDate]' ORDER
BY bTime;");
while($row = mysqli_fetch_array($result)){
if $_POST["bDate"] = $row['bDate'] AND $_POST["bTime"] = !$row['bTime']{
<input type="radio" name="bTime" value="08:00:00"> 8:00
}
?>
<input type="radio" name="bTime" value="08:00:00"> 8:00
<input type="radio" name="bTime" value="09:00:00"> 9:00
<input type="radio" name="bTime" value="10:00:00"> 10:00
<input type="radio" name="bTime" value="11:00:00"> 11:00<br>
<input type="radio" name="bTime" value="13:00:00"> 13:00
<input type="radio" name="bTime" value="14:00:00"> 14:00
<input type="radio" name="bTime" value="15:00:00"> 15:00
<input type="radio" name="bTime" value="16:00:00"> 16:00<br>
Кажется, никто не ответил на ваш вопрос. Вот немного стартового кода для вас. Не забудьте заменить на сервер базы данных, пользователя, пароль и базу данных для подключения к mysql:
<?php
$mysqli = new mysqli("host", "user", "password", "database");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>sans titre</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 1.23.1" />
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<p>Date : <input type="text" id="bDate" name="bDate" value="" /></p>
<p>Time : <input type="text" id="bTime" name="bTime" value="" /></p>
<input type="submit" value="Send" />
</form>
<hr />
<?php
/* Check if form is submitted */
if (isset($_POST["bDate"])) {
// Need a bDate format = 'YYYY-MM-DD'
if (!preg_match("/^\d{4}\-[0-1][0-9]\-[0-3][0-9]$/", $_POST["bDate"])) {
printf("dDate pattern error for SQL. Waiting YYYY-MM-DD");
exit();
}
/* Execute query */
$query = "SELECT 'bDate' , 'bTime' , 'bName' , 'bNumber' , 'bReg' , 'bMakeModel' FROM 'Bookings' WHERE 'bDate' = '". $_POST["bDate"] . "' ORDER BY 2";
$result = $mysqli->query($query);
/* Parsing result set */
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
printf ("%s (%s)<br />", $row["bDate"], $row["bTime"]);
if ($_POST["bDate"] == $row["bDate"] && $_POST["bTime"] != $row["bTime"]) {
printf ("<input type=\"radio\" id=\"bTime\" value=\"%s\" /> %s<br />", $row["bTime"], $row["bTime"]);
}
}
/* free result set */
$result->free();
}
/* close connection */
$mysqli->close();
?>
</body>
</html>
У вас есть проверка на соединение mysql, переменная POST dDate. Также используйте бесплатный набор результатов, который больше не нужен. Надеюсь, это поможет вам.
Пока вы не разместите какой-либо код для лучшей помощи, структуру базы данных и, в конечном счете, пример одной или двух строк. Вот шаги.
Для проверки части (формы): Если вы не отправили свою форму, используйте AJAX для проверки в своей базе данных. Если вы отправили форму, просто выполните запрос в своей базе данных.
Для части SQL: простой счетчик может выполнить трюк (return 0, если строки не найдены и n, если n строк найдено), но получение идентификатора лучше (NULL, если строки не найдены). Если вам нужна помощь по запросу, опишите структуру таблицы и поля, которые вы проверяете.
Для последней части (показывается или нет метка: на PHP просто нужно протестировать возврат SQL и выполнить тест условия на значение count (> 0 или нет) или ID (NOT NULL, если найденная строка, иначе NULL). Вы можете добавить переключатель (или нет) в зависимости от результата теста
Совет. Использование идентификатора лучше, потому что вы можете добавить его в скрытый тег INPUT, если вы нашли строку. Если позже вы решите его обновить, это будет возможно с этим идентификатором.
Изменить (с вашим кодом сейчас): в вашем PHP-коде у вас много ошибок: → ваше условие не окружено круглыми скобками → Логические операторы в инструкции PHP не похожи на SQL: AND (SQL) = && (PHP)
→ Внутри вашего if, входной тег не находится в эхо. входной тег HTML не PHP
Советы: - Вы уверены, что у вас есть хорошая связь ($con
) ressource с базой данных? - В строке sql нет необходимости добавлять финальную полуточку ";" - Всегда о SQL, используя псевдоним звезды в запросе, выполняется медленнее, чем перечисление каждого поля. Если однажды вам нужно получить огромный набор результатов, это будет оптимизация