За последние 24 часа нас посетил 18381 программист и 1717 роботов. Сейчас ищут 768 программистов ...

Результат формы на этой же странице

Тема в разделе "PHP для новичков", создана пользователем 6edyUH, 30 апр 2023.

  1. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0
    Подскажите пожалуйста
    У меня есть форма
    Я заполняю ее и отправляю, страница обновляется и показывается результат
    Как сделать так что бы При нажатии отправить, что бы результат появлялся вот как то сбоку от формы ( как бы на этой же странице?)

    Код (Text):
    1.  <body>
    2.         <?php
    3.         /*if (isset($_POST)['name']) {
    4.             #name = $_POST['name'];
    5.         } else {
    6.             $name = '';
    7.         }*/
    8.         $name = $_POST['name'] ?? '';
    9.         $emeil = $_POST['emeil'] ?? '';
    10.         ?>
    11.  
    12.  
    13.         <?php if ((!trim($name)) || (!trim($emeil))): ?>
    14.  
    15.                 <?php if (!empty($_POST)): ?>
    16.                     <p>Заполните поля</p>
    17.                 <?php endif; ?>
    18.              
    19.  
    20.         <form action="testFormsTwo.php" method="post" class="forms">
    21.             <p>Name: <input type="text" name="name" class="input"></p>
    22.             <p>Emeil: <input type="text" name="emeil" class="input"></p>
    23.  
    24.             <p>
    25.                 <button type="submit" name="send-form">Send</button>
    26.             </p>
    27.  
    28.             <?php else: ?>
    29.  
    30. <p>Name: <?= $_POST['name'] ?> </p>
    31. <p>Emeil: <?= $_POST['emeil'] ?> </p>
    32.  
    33. <?php endif; ?>
    34.         </form>
    35.  
    36.  
    37.         </div>
    38.     </body>
    Спасибо
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.843
    Симпатии:
    652
    /form – только форма
    /form/1 – форма с первым результатом
    /form/2 – форма со вторым результатом
    и т.п.

    id-шники вставляемых записей можно получить при помощи mysqli_insert_id() и т.п.

    В ответ на POST-запрос ничего не выводят, а делают редирект. Даже с AJAX POST делать эхо полученных значений как-то стремно (и адрес страницы с измененной формой все равно лучше менять).

    Но если делаете лишь бы было и не надо сохранять пред. результат, выводите результат рядом с формой только при POST-запросе (см. $_SERVER['REQUEST_METHOD']).
     
  3. 6edyUH

    6edyUH Новичок

    С нами с:
    12 мар 2023
    Сообщения:
    21
    Симпатии:
    0

    никуда не сохраняется
    просто отправить и вывести на этой же странице сбоку

    $_SERVER['REQUEST_METHOD']). - это должно помочь?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.843
    Симпатии:
    652
    Если хотите получить вменяемый код, даже между запросами надо куда-то сохранять (эхо персональных данных – отдельный вопрос). Иначе, да, ветвление с использованием показанной переменной должно помочь (наличие POST-параметров тоже нужно проверять).
     
  5. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    @6edyUH чтобы поместить ответы рядом с формой, тут нужно подумать над вёрсткой ответа. Чтобы форма располагалась слева, а ответы справа. Попробуй либо сформатировать в ответе на запрос таблицу с двумя столбцами, где форма будет в левом, а результат в правом. Либо два div.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    для таких фокусов у тега <form> есть атрибут target, который может указывать, например, на фрейм на этой же странице. Но т.к. до конца идея не ясна, боюсь это может не решить твою задачу. Попробуй, а потом расскажи какая была цель (а не идея) изначально.

    помести эти два файла в одной директории на сайте. один создает страницу с формой, другой обрабатывает результат формы и выводится "сбоку" на той же странице. обычно это делают через AJAX, но я хочу вот такой метод.

    index.php

    PHP:
    1. <html>
    2. <head>
    3. <style>
    4.   #myform { float: left; width: 30%; }
    5. </style>
    6.  
    7. </head>
    8. <body>
    9.  
    10. <form id="myform" action="handler.php" target="myframe" method="post">
    11.   <input type="radio" id="html" name="fav_language" value="HTML">
    12.   <label for="html">HTML</label><br>
    13.   <input type="radio" id="css" name="fav_language" value="CSS">
    14.   <label for="css">CSS</label><br>
    15.   <input type="radio" id="javascript" name="fav_language" value="JavaScript">
    16.   <label for="javascript">JavaScript</label><br><br>
    17.  
    18.   <input type="submit" value="Submit">
    19. </form>
    20.  
    21. <iframe id="myform" name="myframe" src="handler.php">
    22. </iframe>
    23.  
    24. </body>
    25. </html>
    handler.php
    PHP:
    1. <?php
    2.  
    3. $response = [ date('Y-m-d H:i:s') ];
    4.  
    5. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    6.   $response[] = var_export($_POST, true);
    7. }
    8.  
    9. foreach ($response as $r) {
    10.   echo '<pre>' . $r . '</pre>';
    11. }
    чтобы результат был "сбоку", я использовал стили. а чтобырезультат был на той же странице без перезагрузки — адресацию через target.


    --- Добавлено ---

    Screenshot 2023-04-30 at 14.18.52.png