Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170

Возвращение результата обработки формы

25.01.2015, 16:52. Показов 4814. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня на одном файле есть форма, обработка просиходит в другом файле. Но результат обработки выводится во втором файле. Как можно вывести результат обработки на первый файл, сразу под форму, не открывая никаких других вкладок? Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2015, 16:52
Ответы с готовыми решениями:

Возвращение результата в запросе INSERT
Табличка: CREATE TABLE IF NOT EXISTS `template` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT...

Возвращение результата об ошибке при работе с БД
Вот фрагмент кода: $this->db = new mysqli($this->host, $this->user, $this->pass, $this->name_db) or die(mysqli_error()); ...

Возвращение результата поиска
Существует форма на которой имеются компоненты ADOtable, ADOconection, datasourse, DBGrid. Подключена база даных и в DBGrid выводиться...

38
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.01.2015, 17:11
HTML5
1
<form action="" method="post">
сделайет обработку на этой странице, на которой у Вас сама форма. Или я чего-то не понимаю?

Добавлено через 35 секунд
и обработку поместите в файл, в котором Ваша форма.
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 17:15  [ТС]
paskalnikita, согласен. Я знаю что так можно сделать. Но может есть какие-то другие способы такое сделать. В вордпрессе же не обрабатывается всё в одном файле.
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.01.2015, 17:18
Цитата Сообщение от paskalnikita Посмотреть сообщение
action=""
попадете на этот же файл. приведите пример кода, чтобы было проще сказать, что лучше сделать
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 17:22  [ТС]
Ладно, опишу что происходит в моих файлах. На первом файле у меня select который заполняется из базы данных (жанры книг). Пользователь выбирает один жанр, нажимает кнопку и нижу выводится таблица всех книг (данные беруться из базы: название, автор, жанр, цена). Вот этоту обработку и вывод я релиазовал во втором файле. Теперь мне нужно просто подключить его к первому и выводить туда результат.

Добавлено через 1 минуту
Код большой (первый файл):
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html>
<head>
    <title>Каталог | Каталог книг</title>
    <link rel="stylesheet" href="style.css">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <div class="catalogue">
        <h3>Выбрать книги по категории:</h3>
        <form action="show_books.php" method="post">
            <p><input name="option"  type="radio" id="genre_radio" onclick="hideSelect()" checked>Жанр</p>
            <p><input name="option"  type="radio" id="author_radio" onclick="hideSelect()">Автор</p>
            <select id="genres_select" name="genres_select">
                <?php
                    $mysqli = mysqli_connect("localhost","root","root","books_db") or die("Error " . mysqli_error($mysqli));
                    $mysqli->query('SET NAMES utf8');
                    $res=$mysqli->query("SELECT DISTINCT `genre` FROM `books`");
                    while ($row = mysqli_fetch_array($res)){
                        echo "<option value=\"".$row["genre"]."\">". $row["genre"] ."</option>";
                    }
                    mysqli_close();
                ?>
            </select>
             <select id="authors_select" name="authors_select" style="display:none;">
                <?php
                    $mysqli = mysqli_connect("localhost","root","root","books_db") or die("Error " . mysqli_error($mysqli));
                    $mysqli->query('SET NAMES utf8');
                    $res=$mysqli->query("SELECT DISTINCT `author` FROM `books`");
                    while ($row = mysqli_fetch_array($res)){
                        echo "<option value=\"".$row["author"]."\">". $row["author"] ."</option>";
                    }
                    mysqli_close();
                ?>
            </select>
            <script type="text/javascript">
                function hideSelect() {
                    if (document.getElementById("genre_radio").checked) {
                        document.getElementById("authors_select").style.display = 'none';
                        document.getElementById("genres_select").style.display = '';
                    } else if (document.getElementById("author_radio").checked) {
                        document.getElementById("authors_select").style.display = '';
                        document.getElementById("genres_select").style.display = 'none';
                    }
                }
            </script>
            <p><input type="submit" value="Показать книги"></p>
        </form>
        
    </div>
</body>
</html>
Файл обработки:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
        $selectedValue = $_POST["genres_select"];
        //print_r ($selectedValue);
        $mysqli = mysqli_connect("localhost","root","root","books_db") or die("Error " . mysqli_error($mysqli));
        $mysqli->query('SET NAMES utf8');
        $query = "SELECT * FROM books WHERE genre = \"".$selectedValue."\"";
        $res=$mysqli->query($query);
        $rows = $res->fetch_assoc();
        do {
            echo $rows['name'].$rows['genre'].$rows['author'].$rows['price']."<br/>";
        }
        while ($rows = $res->fetch_assoc());
 
    mysqli_close();
?>
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.01.2015, 17:36
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!DOCTYPE html>
<html>
<head>
    <title>Каталог | Каталог книг</title>
    <link rel="stylesheet" href="style.css">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <div class="catalogue">
        <h3>Выбрать книги по категории:</h3>
        <form action="" method="post">
            <p><input name="option"  type="radio" id="genre_radio" onclick="hideSelect()" checked>Жанр</p>
            <p><input name="option"  type="radio" id="author_radio" onclick="hideSelect()">Автор</p>
            <select id="genres_select" name="genres_select">
<?php
 
        $selectedValue = $_POST["genres_select"];
        //print_r ($selectedValue);
        $mysqli = mysqli_connect("localhost","root","root","books_db") or die("Error " . mysqli_error($mysqli));
        $mysqli->query('SET NAMES utf8');
        $query = "SELECT * FROM books WHERE genre = \"".$selectedValue."\"";
        $res=$mysqli->query($query);
        $rows = $res->fetch_assoc();
        do {
            echo $rows['name'].$rows['genre'].$rows['author'].$rows['price']."<br/>";
        }
        while ($rows = $res->fetch_assoc());
 
    mysqli_close();
?>
                <?php
                    $mysqli = mysqli_connect("localhost","root","root","books_db") or die("Error " . mysqli_error($mysqli));
                    $mysqli->query('SET NAMES utf8');
                    $res=$mysqli->query("SELECT DISTINCT `genre` FROM `books`");
                    while ($row = mysqli_fetch_array($res)){
                        echo "<option value=\"".$row["genre"]."\">". $row["genre"] ."</option>";
                    }
                    mysqli_close();
                ?>
            </select>
             <select id="authors_select" name="authors_select" style="display:none;">
                <?php
                    $mysqli = mysqli_connect("localhost","root","root","books_db") or die("Error " . mysqli_error($mysqli));
                    $mysqli->query('SET NAMES utf8');
                    $res=$mysqli->query("SELECT DISTINCT `author` FROM `books`");
                    while ($row = mysqli_fetch_array($res)){
                        echo "<option value=\"".$row["author"]."\">". $row["author"] ."</option>";
                    }
                    mysqli_close();
                ?>
            </select>
            <script type="text/javascript">
                function hideSelect() {
                    if (document.getElementById("genre_radio").checked) {
                        document.getElementById("authors_select").style.display = 'none';
                        document.getElementById("genres_select").style.display = '';
                    } else if (document.getElementById("author_radio").checked) {
                        document.getElementById("authors_select").style.display = '';
                        document.getElementById("genres_select").style.display = 'none';
                    }
                }
            </script>
            <p><input type="submit" value="Показать книги"></p>
        </form>
        
    </div>
</body>
</html>
Все в одном файле, не проверял на работоспособность, но должно работать.
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 17:41  [ТС]
paskalnikita, спасибо. Но то что вы сделали я и сам могу сделать) Хотелось более профессионально структурировать файлы проекта, а не писать все в одном файле на 300 строк). Я читал что подобное можно реализовать с помощью ajax, но не знаю как правильно это сделать.
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
25.01.2015, 18:13
Цитата Сообщение от iFlash Посмотреть сообщение
Как можно вывести результат обработки на первый файл, сразу под форму, не открывая никаких других вкладок?
ну вроде как Вы просили реализовать все не открывая нового файла
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 20:29  [ТС]
paskalnikita, хорошо, пусть все будет в одном файле. Но у меня там обработка только одного селекта, который работает когда выбрана первая радиобаттон, но когда выбираеться вторая, то первый селект пропападет и появляется второй. Вот для него нужно тоже сделать обработку, но у меня что то не получается. Думал просто менять значение переменной selectedValues, но не работает:
PHP
1
2
3
4
5
            if (isset($_POST["genres_select"])){
                $selectedValue = $_POST["genres_select"];
            } else {
                $selectedValue = $_POST["authors_select"];
            }
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
25.01.2015, 22:01
iFlash, вы выводите окончательную выборку из базы без обрамления? Как я понял, у вас из формы передаются два параметра, влияющие на окончательную выборку. Так и делайте окончательную выборку сразу по двум полям. В соответствующей области выводите окончательную выборку, если поступил POST-запрос. Изначально можно выводить не только пустышку, но и выборку для жанров и авторов по умолчанию, а еще лучше выводить все, добавив для жанров и авторов пункт «любой». Профессиональный подход заключается в том, чтобы работать с базой до начала вывода контента страницы.
0
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199
25.01.2015, 22:05
Сделайте обработку во втором файле. А в первом сделайте include_once() или require_once()
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 22:36  [ТС]
miketomlin, я только начал работать с php, по этому не знаком из такими понятиями как обрамление. Как можно сделать что бы сразу при загрузке страницы уже было выведено все из базы. И как добавить в селект пункт "любой", поверх выборки из базы. И у меня обработка зависит от какого селекта будет прислан параметр, с первым у меня все нормально, а второй я никак не могу наладить, не паралельно с первым, не через ИЛИ, никак.

Добавлено через 13 минут
Если вы заметили, то у меня всегда отображается только один селект, и на его основе идет обработка. Так вот первый у меня по умолчанию показывается и обрабатывается, а когда активируется второй, то он уже не работает.
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
25.01.2015, 22:55
Цитата Сообщение от iFlash Посмотреть сообщение
по этому не знаком из такими понятиями как обрамление
Я спрашивал про разметку страницы, на которой выводится окончательная выборка.

Цитата Сообщение от iFlash Посмотреть сообщение
И как добавить в селект пункт "любой", поверх выборки из базы.
Для таких значений видоизменяйте формат запроса. Если указан любой жанр, делайте выборку только по автору. Если указан любой автор, делайте выборку только по жанру. Если указан любой жанр и любой автор, делайте выборку всех записей подряд (если конечно у вас нет доп. критериев отбора).

Цитата Сообщение от iFlash Посмотреть сообщение
И у меня обработка зависит от какого селекта будет прислан параметр, с первым у меня все нормально, а второй я никак не могу наладить, не паралельно с первым, не через ИЛИ, никак.
Вот этого я не могу понять. У вас раскрывающиеся списки играют роль фильтров. Пользователь устанавливает или оставляет значения по умолчанию для всех фильтров прежде чем сделать запрос. Динамической реакции на работу с отдельным фильтром я у вас не заметил. А раз так, вы должны в обработчике сразу обрабатывать оба параметра.

Добавлено через 6 минут
Цитата Сообщение от iFlash Посмотреть сообщение
Если вы заметили, то у меня всегда отображается только один селект, и на его основе идет обработка. Так вот первый у меня по умолчанию показывается и обрабатывается, а когда активируется второй, то он уже не работает.
Этого не заметил. Т.е. вы делаете выбор жанра и автора пошагово. В таком случае, если это вам действительно нужно (лично я считаю, что это лишнее), записывайте результат выбора в первой форме в скрытое поле второй, а уже в конце делайте обработку по той схему, которую я описал (т.е. выборку сразу по двум параметрам).
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 23:00  [ТС]
miketomlin, у меня есть два радиобаттона (жанры, авторы). По умолчанию стоит "жанры", соответственно и селект у меня из жанрами. Когда юзер выбирает радиобаттон "автор", селект из жанрами пропадает и появляется селект из авторами. Для этого у меня там есть скрипт. От этого и зависит что будет выбираться из базы. Одновременно два селекта не работают у меня.

Добавлено через 2 минуты
Не знаю, может изначально я придумал неудачную структуру, но в задании у меня указано так:
Пользователь должен уметь:
1. Посмотреть список книг выбирая жанр (книга может принадлежать разным жанрам);
2. Посмотреть список книг выбрав автора (книга может принадлежать разным авторам);
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
25.01.2015, 23:15
Отключение отображения – это еще не изъятие из кода разметки. См. в обработчике на то, какой "радиобаттон" установлен, и в зависимости от этого делайте выборку либо по параметру "жанр", либо по параметру "автор".
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 23:18  [ТС]
miketomlin, понятно. А как быть с кнопкой, она при нажатии сбрасывает все( радио и селекты) и перезагружает страницу.
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
25.01.2015, 23:18
Цитата Сообщение от iFlash Посмотреть сообщение
Не знаю, может изначально я придумал неудачную структуру, но в задании у меня указано так:
Пользователь должен уметь:
1. Посмотреть список книг выбирая жанр (книга может принадлежать разным жанрам);
2. Посмотреть список книг выбрав автора (книга может принадлежать разным авторам);
Нормально. Просто я думал, что у вас фильтр.
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 23:20  [ТС]
И как смотреть какой радио установлен, если они имеют одинаковые названия.
isset($_POST[]) не будет же работать так.
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
25.01.2015, 23:24
Цитата Сообщение от iFlash Посмотреть сообщение
А как быть с кнопкой, она при нажатии сбрасывает все( радио и селекты) и перезагружает страницу.
Запоминайте тек. состояние в обработчике и в таком же виде выводите при выводе результата.
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 170
25.01.2015, 23:31  [ТС]
miketomlin,
Цитата Сообщение от miketomlin Посмотреть сообщение
Запоминайте тек. состояние в обработчике и в таком же виде выводите при выводе результата.
Я так понимаю, для этого нужно использовать js что бы потом обратно задать эти значения. PHP же не может напрямую влиять на состояния html-объектов? Или я ошибаюсь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2015, 23:31
Помогаю со студенческими работами здесь

Возвращение результата из функции
Доброго времени суток. Ситуация следующая: в функции используется стек. В конце из нее возвращается первый элемент. После же этого данные...

Возвращение результата функции
Добрый день! У меня возник вопрос. Я хочу, чтобы функция возвращала вот такой тип данных TObjectList&lt;TTypeInfo&gt; : function...

Возвращение результата запроса
Добрый вечер! Данный код находит технику по инвентарному номеру и при условии что в одном из полей есть текст содержанием (списан) ...

Возвращение неожиданного результата (Texture)
Здравствуйте форумчане. Не так давно наткнулся на урок по Normal Mapping (ну или Bamp Mapping) и решил повторить.. Ну так вот там есть...

Возвращение результата SQL-запроса в переменную
Здравствуйте, помогите пожалуйста Есть БД на sql server 2008 в ней таблица new_reader В Делфи7 делаю форму добавления записи, нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru