A
A
Alexander2017-09-11 21:59:05
JavaScript
Alexander, 2017-09-11 21:59:05

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;
}




      /* / Вывод записей из БД */
?>

I do the example: https://www.youtube.com/watch?v=790eRMnM7vQ&list=P...
1:26:20
but I get an error...

Answer the question

In order to leave comments, you need to log in

1 answer(s)
0
0xD34F, 2019-05-24
@nastya_zholudeva

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 question

Ask a Question

731 491 924 answers to any question