Задать вопрос
@smoovil

Как пофиксить баг с постоянным выводом данных из БД?

Суть кода в том, что в поле мы вводим город и нам выдает данные о нем. Проблема: есть условие- если мы ничего не вводим в поле и нажимаем на кнопку, то нам выводит все данные таблицы. Работает корректно, но когда выводиться вся таблица, вместе с ней выводится прошлые данные, т.е.

Код формы
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css">
    <title>Главная</title>
</head>
<body>


<form method="post" action="city_add.php">
    <input class="input" type="text" name="answer">

    <h5>Введите площадь:</h5>
    <input class="input" type="text" name="plosh">

    <h5>Введите количество населения:</h5>
    <input class="input" type="text" name="naselen">
    <br>
    <br>
    <input type="submit" name="input_button" value="Добавить">
    <input type="submit" name="clear">
</form>

<h5>Введите город:</h5>
<form action="city_view.php" method="GET">
    <input type="text" name="name">
    <input type="submit" name="viewbutton" value="Просмотреть">

</form>
<?php
if (isset($_SESSION['nety'])) {
    echo $_SESSION['nety'];
    unset($_SESSION['nety']);
}


?>

<table>
<tr>
<td>

<?php

if (isset($_SESSION['name'])) {
print_r($_SESSION['name']) ; 
} else {
   echo $_SESSION['nety'];
}

?>
</td>
<td>
<?php

if (isset($_SESSION['area'])) {
echo ($_SESSION['area']); 
}else {
   echo $_SESSION['nety'];
}

?>
</td>

<td>
<?php

if (isset($_SESSION['population'])) {
echo ($_SESSION['population']); 
} else {
   echo $_SESSION['nety'];
}

?>
</td>


</tr>
</table>

<?php
if(isset($_SESSION['arr'])) :?> 
 <table>
        <tr>
            <th>id</th>
            <th>name</th>
            <th>area</th>
            <th>population</th>
        </tr>
        <?php foreach ($_SESSION['arr'] as $gorod) : ?>
            <tr>
                <td><?php echo $gorod['id']; ?></td>
                <td><?php echo $gorod['name']; ?></td>
                <td><?php echo $gorod['area']; ?></td>
                <td><?php echo $gorod['population']; ?></td>
            </tr>
        <?php endforeach; ?>
    </table>
    <?php unset($_SESSION['arr']); ?>
<?php endif; ?>

<?php
if(isset($_POST['clear'])) {
    session_destroy();
}
?>

</body>
</html>
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@alexalexes
Прошлые данные выдаются из сессии PHP.
<?php foreach ($_SESSION['arr'] as $gorod) : ?>
            <tr>
                <td><?php echo $gorod['id']; ?></td>
                <td><?php echo $gorod['name']; ?></td>
                <td><?php echo $gorod['area']; ?></td>
                <td><?php echo $gorod['population']; ?></td>
            </tr>
        <?php endforeach; ?>

А вывод всех городов отрабатывает вот этот случай:
} else if (empty($name)) {
	$mysql = "SELECT * FROM city";

Сервер PHP какой получил код, те условия и отработал. Никакой магии тут нет, разбирайтесь, что хотели получить или изменить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽