Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 25.12.2016, 20:35   #1
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
Репутация: 10
Печаль Метод GET (добавление комментария)

Здравствуйте. Появилась такая проблема. При построении списка тем каждой теме даю id_theme, чтобы методом GET её отдельно отобразить при выборе.
Код:

 $i = 1;
  while($row = $result->fetch_assoc()){
                            
            echo "<section class=\"news\">
                    <a href=\"http://nechaev.ru/discuss.php?id_theme=$i\"><article>
                                                <h2>{$row['title']}</h2>
                                             </article></a>
                     </section>";
                     $i++;
  }

После этого создаю форму для добавления комментария, где прописываю принятие темы, данных из формы и остальное. В форме action="" (возможно, это поможет делу). При отправке формы он игнорирует id_theme и успешно всё отправляет на страницу discuss.php. При этом у меня, соответственно, не добавляется ни комментарий, ни обработки никакой не происходит. Фактически, я возвращаюсь к списку тем.
Подскажите, пожалуйста, как мне сохранить вот это значение ?id_theme=$i, чтобы остаться в самой теме, и соответственно, осуществить отправку данных GET в "http://nechaev.ru/discuss.php?id_theme=$", а не в "http://nechaev.ru/discuss.php"?
Заранее большое спасибо! Голову уже изломал, что тут можно сделать...
romantiqueamour вне форума   Ответить с цитированием
Старый 25.12.2016, 20:53   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,668
Репутация: 2887

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Непонятно что вы спросить и сделать хотели.

Для отправки данных типа текста сообщения используют POST, а не GET.


Цитата:
Сообщение от romantiqueamour Посмотреть сообщение
осуществить отправку данных GET в "http://nechaev.ru/discuss.php?id_theme=$", а не в "http://nechaev.ru/discuss.php"?
Сделать showtheme.php? Посмотрите на этом форуме, тут же в списке тем forumdisplay.php, а сама тема showthread.php?t=302074

А так вообще в почти 2017 году надо делать нормальный роутинг с правильными и красивыми URL
http://stackoverflow.com/a/1619677/964478
https://habrahabr.ru/post/50147/
https://habrahabr.ru/post/38730/
Alex11223 на форуме   Ответить с цитированием
Старый 25.12.2016, 21:14   #3
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
Репутация: 10
По умолчанию

спасибо большое за вариант, я уже разобрался как это сделать!)
Получается, что из страницы "discuss", где у меня список всех тем, я не могу в одной из тем оставлять комментарии. Поэтому, я создал подстраницу "showtopic", где описал код вывода непосредственно темы, которую успешно передал через ссылку в качестве "id_theme", а потом это значение занёс в сессию, соответственно, на "showtopic" и ссылался дальше при добавлении и отображении комментариев. В результате, номер темы у меня остался в сессионной переменной и я её успешно потом использовал для добавления комментария в базу данных)

Последний раз редактировалось Alex11223; 25.12.2016 в 21:34.
romantiqueamour вне форума   Ответить с цитированием
Старый 25.12.2016, 21:35   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,668
Репутация: 2887

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от romantiqueamour Посмотреть сообщение
а потом это значение занёс в сессию
бред какой-то, зачем хранить лишнее состояние (тем самым все усложняя и создавая кучу лишних проблем) когда у вас и так все данные есть в запросе? (ну или должны быть)
Alex11223 на форуме   Ответить с цитированием
Старый 25.12.2016, 21:49   #5
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
Репутация: 10
По умолчанию

Вот в том то и дело, что когда я передаю кнопкой данные - туда идут только данные из формы. А вот эта приставка ?id_theme получается создана то искусственно путём добавления к основному адресу discuss.php?id_theme. Чтобы в случае наличия этого id_theme отображать конкретную тему, а не весь список) а потом уже в этой теме, если я добавляю комментарий (отправляю данные из формы), они отправляются на discuss.php, так как по сути, ?id_theme - это ведь часть discuss.php и он все данные отправляет именно туда) а там то у меня список всех тем, а не конкретная) получается, что на странице "discuss.php?id_theme" я отправляю данные и получаю эти данные сразу за "discuss.php?data-form=...") А как вот это значение id_theme в запросе сохранить, чтобы я эти данные из формы передал именно в конкретную тему - не могу пока что понять)
И кстати, вот как вы изначально и заметили о форуме, примерно это и натолкнуло на реализацию) поэтому, огромное спасибо ещё раз)

Последний раз редактировалось romantiqueamour; 25.12.2016 в 21:52. Причина: дополнение
romantiqueamour вне форума   Ответить с цитированием
Старый 25.12.2016, 21:58   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,668
Репутация: 2887

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Turbo Delphi 2006 проект - Помощь студентам - Форум программистов - Google Chrome 2016-12-25 19..jpg
Alex11223 на форуме   Ответить с цитированием
Старый 25.12.2016, 22:33   #7
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
Репутация: 10
По умолчанию

Я правильно понял, в кнопке задать в value как раз "id_theme", чтобы передать его, так? Спасибо большое! Завтра попробую так и сделать)
А можно два и более значения передавать через кнопку в параметре value? К примеру
Код:

<input ... value = "1", value = "2"...>

?

Последний раз редактировалось romantiqueamour; 25.12.2016 в 22:40. Причина: уточнение
romantiqueamour вне форума   Ответить с цитированием
Старый 25.12.2016, 22:43   #8
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,668
Репутация: 2887

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Кнопке? Если как тут, то тут в форме есть input c type=hidden и в нем id.

(естественно не стоит особо углубляться в изучение этого движка и считать его хорошим примером, ибо ему лет 10-15)


А вообще если вы отправляете форму на ...?id_theme=..., то вроде ж никто не мешает и при обработке POST запроса взять id из $_GET или где там он в РНР.
Alex11223 на форуме   Ответить с цитированием
Старый 25.12.2016, 23:12   #9
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
Репутация: 10
По умолчанию

В том то и проблема, что когда я нажимаю на "Отправить", то система строки браузера уже не видит и начинает заново анализировать весь код) а у меня вот этот момент id_theme прописан исключительно в discuss как
Код:

<a href="...discuss?id_theme=$theme">

И всё) больше нигде и никак) как только я попадаю на вот этот прописанный мною код... я то, по сути, всё это пишу в файле discuss.php.. просто ставлю условие, что если существует id_theme, то высвечивать конкретную тему, а если нет - то все темы списком. Вот браузер и правильно понимал, что ему ответ нужно отправлять в discuss, а не в discuss?id_theme) а когда я создал дополнительную страницу, то привязал отображение одной темы именно к ней. А вот этот параметр id_theme у меня то только в строке браузера на момент перехода для отображение одной темы) А в это странице нигде никак о id_theme не оговаривается, не объявляется) поэтому то я и взять этот параметр в страницу для отображения не могу)
Код:

$mysqli = new mysqli("localhost", "root", "", "mysite");
                        $mysqli->set_charset("utf8");
						if(isset($_GET['id_theme'])){
                            $theme = $_GET['id_theme'];
							$_SESSION['theme'] = $theme;
						}
						else $theme = $_SESSION['theme'];
							$_SESSION['theme'] = $theme;
                            $showSQL = "SELECT * FROM `themes` WHERE `id_theme`='$theme'";
                            $result = $mysqli->query($showSQL);
                            $row = $result->fetch_assoc();
                                 echo "<section class=\"news\">
                                              <article>
                                                    <h2>{$row['title']}</h2>
                                                 </article>
                                           </section>";

Вот так я захватываю из браузера вот этот параметр, потому что при отправке данных ?id_theme исчезнет и там появятся showtopic.php?parametrs_from_form=. ..) и получается, что при обработке формы Get`ом захватить нельзя id_theme, так как на этот момент его уже в строке браузера нет)

Последний раз редактировалось romantiqueamour; 25.12.2016 в 23:14. Причина: корректировка showtopic.php
romantiqueamour вне форума   Ответить с цитированием
Старый 25.12.2016, 23:35   #10
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,668
Репутация: 2887

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Ну вы форму видимо отправляете на discuss.php, а не discuss?id..., вот и нет.

Вообще отправляйте форму в другое место, например addcomment.php, и редирект оттуда


И не делайте так

Цитата:
Сообщение от romantiqueamour Посмотреть сообщение
WHERE `id_theme`='$theme'


https://en.wikipedia.org/wiki/Prepar...tement#PHP_PDO

https://www.google.com/search?q=sql+injection

www.phptherightway.com/#databases / http://getjump.me/ru-php-the-right-w...BD%D1%8B%D1%85
Alex11223 на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на автора комментария в Wordpress Viboxjuwin PHP 1 01.06.2014 19:38
ссылка на автора комментария в Wordpress Viboxjuwin PHP 1 01.06.2014 10:21
Добавление комментария на сайте deadh5n1 PHP 1 14.03.2014 10:09
окно комментария 3000mb JavaScript, Ajax 3 14.02.2012 18:31
отправка комментария WP shanluu Работа с сетью в Delphi 2 28.11.2010 01:57




09:45.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru