@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';
	}
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Arik
В form[action] прописать УРЛ с ГЕТ параметрами
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Потому что если атрибут action у формы пустой, то используется текущий урл.

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

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

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

Похожие вопросы