@yagyar001

Почему не исчезает GET запрос?

Всем привет. Ситуация следующая. При нажатии на кнопку "Добавить объявление", отлавливаю GET запрос и подключаю файл с формой для добавления объявления. При отправки этой формы (отправляется POST), GET запрос не исчезает и отправленная форма снова появляется, а это плохо и так быть не должно. Помогите разобраться в чем дело. Я только учусь))
5c8b34bdb7f19789034423.png
Файл index.php
<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900,900i" rel="stylesheet">
	<link rel="stylesheet" href="css/style.css?v=2">
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

	<title>Avito</title>
</head>
<body>
	<header>
		<?php include 'pages/header.php'; ?>
	</header>

	<div class="top_content">
		<?php 
			include 'pages/top_content.php';
		?>
	</div>
	<footer>
		
	</footer>
</body>
</html>

Файл header.php (тут ссылка с GET запросом)
<?php include './connectdb.php'; ?>
<div class="header_logo_and_btn">
	<div class="header_logo">
		<a href="#"><img src="img/logo.png" alt="Логотип"></a>
	</div>
	<div class="header_btn">
		<a href="?add=1">Создать объявление</a>
	</div>
.
.
.
.
.
.
</div>

Файл с добавлением объявления (форма с POST)
<?php 

	if (isset($_POST['add_category']) and $_POST['add_category'][0] >= '1' and isset($_POST['add_city']) and $_POST['add_city'][0] >= '1' and !empty($_POST['make']) and !empty($_POST['model']) and !empty($_POST['drive']) and !empty($_POST['year']) and !empty($_POST['price'])) {
		$category = $_POST['add_category'][0];
		$city = $_POST['add_city'][0];
		$query = "INSERT INTO transport SET make = '$_POST[make]', model = '$_POST[model]', drive = '$_POST[drive]', year = '$_POST[year]', city = '$city', price = '$_POST[price]', category = '$category', link_img = ''";
		mysqli_query($link, $query) or die(mysqli_error($link));
	} else {
?>
<div class="top_content.php">
	<form action="" method="POST">
		<h2 class="new_ad_header">Создание нового объявления</h2>
		<h4 class="new_ad_category_header">Выберете категорию</h4>
		<div class="new_ad_transport_wrap">
			<select class="new_ad_transport" name="add_category[]">
				<option value="0">Весь транспорт</option>
				<?php 
					$query = "SELECT * FROM categories";
					$result = mysqli_query($link, $query);
					for ($data = []; $row = mysqli_fetch_assoc($result); $data[] = $row);
					$contentCategory = '';
					foreach ($data as $elem) {
						$contentCategory .= "<option value=\"$elem[id]\" class=\"\">$elem[name]</option>";

					}
					echo $contentCategory;
				?>
			</select>
		</div>
		<h4 class="new_ad_city_header">Выберете город</h4>
		<div class="new_ad_city_wrap">
			<select class="new_ad_city" name="add_city[]">
				<option value="0">Любой город</option>
					<?php 
						$query = "SELECT * FROM cities";
						$result = mysqli_query($link, $query);
						for ($data = []; $row = mysqli_fetch_assoc($result); $data[] = $row);
						$contentCity = '';
							foreach ($data as $elem) {
								if ($elem['id'] == $_POST['city'][0]) {
									$selected = 'selected';
								} else {
									$selected = '';
								}
								$contentCity .= "<option $selected value=\"$elem[id]\">$elem[city]</option>";
							}
							echo $contentCity;
					 ?>
			</select><br>
			<input class="new_ad_input" type="text" name="make" placeholder="Марка авто"><br>
			<input class="new_ad_input" type="text" name="model" placeholder="Модель авто"><br>
			<input class="new_ad_input" type="text" name="drive" placeholder="Привод авто"><br>
			<input class="new_ad_input" type="text" name="year" placeholder="Год выпуска авто"><br>
			<input class="new_ad_input" type="text" name="price" placeholder="Цена"><br>
		</div>
		<input class="new_ad_input new_ad_submit" type="submit">
	</form>
</div>
<?php 
}
?>

Ну и сам top_content
<?php 
	include './connectdb.php';
	if (isset($_GET['add'])) {
		include 'add_ad.php';
	} 
	if (isset($_POST['city'])) {
		include 'search.php';
	}
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Arik
В form[action] прописать УРЛ с ГЕТ параметрами
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Потому что если атрибут action у формы пустой, то используется текущий урл.

Избавляться от гет параметров в данном случае не нужно.
От чего нужно избавиться - это от чудовищного учебника (или, скорее, видеокурса, поскольку снежинки же у нас умеют только в видео), в котором написана вся эта чудовищная муть.

Если делать по-человечески, то после пост -апроса никакого вообще вывода быть не должно - ни с формой, ни без формы. После обработки пост запроса программист обязан сделать редирект, то есть принудительно сменить метод.
И вот этот редирект уже может вести куда угодно - с гет параметрами, без гет параметров - абсолютно без разницы, урл можно указывать любой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽