Answer the question
In order to leave comments, you need to log in
What is the correct way to re-request the page in this context?
Hello! What is the correct way to re-request the page in this context? In this example, the browser throws an error "ERR_TOO_MANY_REDIRECTS":
<?php
/* Основные настройки */
define(DB_HOST, "localhost");
define(DB_LOGIN, "root");
define(DB_PASSWORD, "12345");
define(DB_NAME, "gbook");
$link = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME); // соединение с БД и выбор БД
/* / Основные настройки */
/* Сохранение (добавление) записи в БД */
// отфильтровать данные:
function clearStr($data) {
return trim(strip_tags($data));
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // проверить, была ли отправлена форма
$name = clearStr($_POST['name']); // принять и отфильтровать данные из формы
$email = clearStr($_POST['email']);
$msg = clearStr($_POST['msg']);
$sql = "INSERT INTO msgs (name, email, msg)
VALUES ('$name', '$email', '$msg')";
// создать таблицу "msgs" с полями "name, email, msg" и вставить данные '$name', '$email', '$msg' в соответствующие поля
$result = mysqli_query($link, $sql); // отправить запрос в БД
// еще можно написать проверку "все ли поля пришли" - http://www.cyberforum.ru/php-beginners/thread1035651.html
}
echo mysqli_error($link);
header('Location: ' . $_SERVER['REQUEST_URI']); // засада
exit;
/* / Сохранение (добавление) записи в БД */
/* Удаление записи из БД */
if (isset($_GET['del'])) {
$del = abs((int)$_GET['del']);
if ($del) { // true - положительное число
$sql = "DELETE FROM msgs WHERE id = $del"; // формирование запроса на удаление записи
mysqli_query($link, $sql); // выполнение запроса на удаление
}
}
/* / Удаление записи из БД */
?>
<h3>Оставьте запись в нашей Гостевой книге</h3>
<form method="post" action="<?= $_SERVER['REQUEST_URI']?>">
Имя: <br /><input type="text" name="name" /><br />
Email: <br /><input type="text" name="email" /><br />
Сообщение: <br /><textarea name="msg"></textarea><br />
<br />
<input type="submit" value="Отправить!" />
</form>
<?php
/* Вывод записей из БД */
// Сформируйте SQL-запрос на выборку всех данных из таблицы msgs в обратном порядке:
$sql = "SELECT id, name, email, msg,
UNIX_TIMESTAMP(datetime) as dt
ORDER BY id DESC";
$res = mysqli_query($link, $sql);
echo mysqli_error($link); // вывести сообщение об ошибке (если ошибка есть)
mysqli_close($link); // закрыть соединение с БД
while ($row = mysqli_fetch_assoc($res) ) {
$id = $row['id'];
$name = $row['name'];
$email = $row['email'];
$dt = date('d-m-Y H:i:s', $row['dt']);
$msg = $row['msg'];
// $row - результат выборки, количество записей
// вывести результат выборки:
echo <<<HTML
<hr>
<p>
<a href="mailto:$email"> $name </a> @ $dt
<br> $msg
</p>
<p align='right'>
<a href="{$_SERVER['REQUEST_URI']}&del=$id">Удаление</a> <!-- здесь улетает запрос на удаление записи (методом GET - ссылка) -->
</p>
HTML;
}
/* / Вывод записей из БД */
?>
Answer the question
In order to leave comments, you need to log in
What does "simplify" mean? He's pretty simple as it is. Can be shortened. But it won't get any easier, rather the opposite:
selected.push(...[
(isAllTypes || array.contains('akt')) && 'akt',
isDTypes && 'd',
isKType && 'k',
].filter(Boolean).map(type => ({ type })));
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question