|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Добрый день. Может уже надоел своими глупыми вопросами, но не могу понять какой сделать мне алгоритм для обновления страницы по нажатию кнопки. Есть у меня форма. Ее суть это вопрос и ответы, которые берутся из БД. Код за вывод этого прост: Код: 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.
Кнопка выхода понятно, сложности не создает. ID следующего я получаю нормально по нажатию, здесь у меня var_dump($this->id) для этого и стоит, чтобы смотреть реакцию на нажатие, оно сменяется, все хорошо. Но как мне в цикле выводить и только по нажатию кнопки? Как обновлять формы, но чтобы они уже получали новый ID вопроса? Как вот это завернуть в цикл: Код: php 1. 2.
По какому условию? Или может здесь не цикл нужен, а другой алгоритм? Искал долго, нашел нечто подобное на одном форуме, но там чувак сдался, не захотел свое доделывать, а не зная чего он хотел, не могу смоделировать проекцию на себя... Не пинайте ногами! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 15:55 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Вот код основного класса: Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 15:58 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
StangНо как мне в цикле выводить и только по нажатию кнопки?ЧТО именно выводить в цикле? Формы с вариантами ответов на вопрос и так выводятся. Не понятно, что ещё из имеющегося можно в цикле вывести. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 16:17 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
vkle, Мне нужно, чтобы по нажатию кнопки в формах поменялся как вопрос, так и ответы. Чтобы обновилась форма, я уже даже вот такой бред придумал: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но после первого же нажатия мне дальше в бесконечности выводит следующий вопрос-ответы. Это я вспомнил свои познания в Pascal)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 16:32 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Stang, Вы в курсе, как работают веб-страницы, веб-формы? Если не в курсе, а читать лень, то вкратце так примерно: Пользователь нажал кнопку - данные формы отправились на сервер. Серверный скрипт поймал данные, обработал, сформировал HTML-код новой страницы в качестве ответа. Вебсервер отправил этот код браузеру. Браузер поймал HTML-код, показал страничку пользователю. Пользователь нажал... смотри пункт первый. Вот и весь цикл. Притом, закольцован он совсем не внутри скрипта. По сути, на долю пхпшного скрипта выпадает лишь часть цикла, которая подчеркнута выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 17:00 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
vkle, это я догадываюсь, до этого мое чтение уже дошло. Я ведь по нажатию кнопки передаю ID следующего вопроса. Почему я не могу по новому перерисовать страницу? И как это сделать? Просто перенаправить на себя же не получается: header("Location: http://localhost/ColdBell/sales.php"). Что, нету методов? Где-то я недопонимаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 17:28 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Форма без указания атрибута action и так "на себя" отправляется. Точнее, данные формы отправляются на тот же адрес (включая GET-параметры), откуда была получена страница с формой. ID следующего вопроса передается среди данных. Почему Вы уверенно отдаете страницу с вопросом, у которого ID = 1 и не хотите отдать страницу с вопросом, где ID указан в $_POST['doNe']? Более того, в первом приближении можно реализовать алгоритм вроде: если есть $_POST['doNe'], то из него взять ID, иначе ID = 1. PS: Передавать ID следующего вопроса через форму - не слишком благодарное занятие. Любой мало-мальски знакомый с кнопкой F12 в браузере может изменить ход опроса по своему желанию. Но это совсем другая тема и она недавно обсуждалась. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 17:59 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Stang, Какое, однако, у Вас ООП изощренное... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 00:57 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
vkleФорма без указания атрибута action и так "на себя" отправляется. Точнее, данные формы отправляются на тот же адрес (включая GET-параметры), откуда была получена страница с формой. ID следующего вопроса передается среди данных. Почему Вы уверенно отдаете страницу с вопросом, у которого ID = 1 и не хотите отдать страницу с вопросом, где ID указан в $_POST['doNe']? Я не пойму как мне его отдавать! как мне отдавать каждую последующую страницу с новым ID? vkleБолее того, в первом приближении можно реализовать алгоритм вроде: если есть $_POST['doNe'], то из него взять ID, иначе ID = 1. PS: Передавать ID следующего вопроса через форму - не слишком благодарное занятие. Любой мало-мальски знакомый с кнопкой F12 в браузере может изменить ход опроса по своему желанию. Но это совсем другая тема и она недавно обсуждалась. Про F12 и безопасность пока мне не нужно, это не будет глобальным проектом, а будет работать в локальной сети на 10-20 ПК. Я думаю, я к этому дойду еще, но пока я на таком тормознул. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 13:18 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
MikkiMouseStang, Какое, однако, у Вас ООП изощренное... Если честно, то я вообще не понимаю зачем мне в данном случае ООП... Решил начать изучать его... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 13:20 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
StangЕсли честно, то я вообще не понимаю зачем мне в данном случае ООП... Решил начать изучать его... Не нужно - это же парадигма из прошлого столетия! Сразу изучайте функциональное программирование! Причем только через Ютуб - только так можно стать гуру программирования. А если серьезно, начни хотя бы с этого: https://habr.com/ru/post/350750/ ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 13:54 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Руслан ДамировичStangЕсли честно, то я вообще не понимаю зачем мне в данном случае ООП... Решил начать изучать его... Не нужно - это же парадигма из прошлого столетия! Сразу изучайте функциональное программирование! Причем только через Ютуб - только так можно стать гуру программирования. А если серьезно, начни хотя бы с этого: https://habr.com/ru/post/350750/ Это конечно смешно, оценил. Только у меня сейчас стоит вообще вопрос не в том, какой тип программирования использовать. Я не могу понять алгоритм какой мне использовать. Есть у меня страница с формой, как мне ее перерисовать по новому, при нажатии на кнопку? Скажем взяв данные из сессии? Сам процесс, как обновить форму с новыми данными???? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 15:51 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
StangСкажем взяв данные из сессии? Насколько понимаю, данные нужно брать из $_POST['doNe'], именно там номер следующего вопроса. StangЕсть у меня страница с формой, как мне ее перерисовать по новому, при нажатии на кнопку?Страница у Вас перезагружается целиком, не только форма. Следовательно, нужно сформировать страницу "с нуля", как и при выдаче страницы с первым вопросом. Разница только лишь в использовании значения из $_POST['doNe'] вместо единицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 16:11 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
vkleStangСкажем взяв данные из сессии? Насколько понимаю, данные нужно брать из $_POST['doNe'], именно там номер следующего вопроса. StangЕсть у меня страница с формой, как мне ее перерисовать по новому, при нажатии на кнопку?Страница у Вас перезагружается целиком, не только форма. Следовательно, нужно сформировать страницу "с нуля", как и при выдаче страницы с первым вопросом. Разница только лишь в использовании значения из $_POST['doNe'] вместо единицы. Наверное я как-то не правильно спрашиваю... Я до этого понимания дошел, только не понимаю как это реализовать! Может есть какой пример где посмотреть? Я уже такой ахинеи навыдумывал и перепробовал. Вот сейчас, я сделал метод вывода страницы: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
В моем понимании страница должна перегрузиться, и соответственно получить уже новый ID, но ничего не меняется... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 16:26 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Там $_POST['doNe'], случайно не тот код скопировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 16:27 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
автор Код: php 1.
Откуда "получаем"? Давайте разбираться. Читаем кодавтор Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В моем понимании это означает примерно следующее. Если переменная класса $this->idQ установлена, используем ее значение. Иначе сохраняем в эту переменную единичку и используем это (единичка) значение. Никакого упоминания $_POST['doNe'] тут не фигурирует. Ладно. Может быть, значение из $_POST['doNe'] где-то в другом месте записывается в $this->idQ и как-то используется для выборки следующего вопроса? Да, записывается в методе laAnswer():автор Код: php 1. 2. 3.
А где используется сохраненное значение? Да нигде. Скрипт кончился. Можно было и не записывать. Верно? ;-) Откуда же берется ID вопроса для отображения? Давайте смотреть.автор Код: php 1. 2. 3. 4.
Ага, он явно передан при вызове метода. Глядим, где и как метод вызывается. А, вот оно:автор Код: php 1. 2. 3. 4. 5. 6. 7.
Таким образом, перешли к пункту первому разбора, где, как выяснили, кроме единички ничего и не бывает. Собственно, как написано - так и работает. Верно? Советую выкинуть нафиг весь этот код и написать что-то вроде: Код: php 1. 2. 3.
Использование ООП тут явно лишено смысла, как уже было отмечено. Во всяком случае, для class Database , где русским по экрану монитора кем-то написаноавтор Код: php 1.
, делать вывод веб-формы с вопросами-ответами... ну, очень мягко говоря, совсем не в тему. Какое отношение к базе данных имеют дивы с формами? А вопросы с ответами? Класс должен отражать сущность, ее свойства и действия. В данном случае, сущность - база данных. Что у нее есть? Подключение с параметрами, запросы, возврат результатов, сообщения об ошибках. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:50 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
StangТам $_POST['doNe']Где это "там"? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:51 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
Stang, 1. отделите html от кода. На это смотреть противно, когда в коде прям куски html в строках висят. Как самый простой метод - можно просто инклудить нужные файлы с шаблонами в нужных местах (тогда сам файл может быть написан в html с использование php переменных типа <?= $myvar ?>). А можно пойти дальше и вообще заюзать буферизацию вывода (ob_start, ob_flush, ob_get_contents, ob_end_clean и прочие методы) и получить этот html в виде переменной для последующего использования в php коде. Или можно пойти ещё дальше и установить фреймворк толковый какой-то (хотя в Вашем случае лучше не сейчас, рано ещё) 2. не понятно зачем Вам нужны сеттеры, если переменные публичные :)) Вы явно не поняли суть этой затеи. Сеттеры и геттеры нужны для удобства, они позволяют вводить контроль доступа к атрибутам класса, а также создавать алиасы для свойств класса (когда запрашивается или записывается как бы свойство, а на самом деле под капотом происходит выполнение целых методов). Так что без обслуживающих магических методов и без необходимости в таких трюках Вам следует это поудалять и упростить код в разы. 3. В Вашем ООП "грязные функции" :) Не знаю есть ли такой термин правда, но я имею ввиду, что они не соответствуют этому: чистота функции . Так писать очень плохо, и если Вы уж начали использовать ООП, то чем реже методы обращаются к тому, что им напрямую не передавалось, тем лучше. Нет смысла создавать класс, а в его методах продолжать дёргать переменные окружения напрямую. Ну а теперь к самой задаче 4. Опишите пожалуйста полностью задачу. В таком виде не понятно что Вам нужно сделать (как я понял это можно уяснить прочитав все Ваши предыдущие вопросы, но сами понимаете, это не очень эффективно). Есть большое подозрение, что Вы вообще не с той стороны к решению подошли, вот и не получается у Вас ничего :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 17:37 |
|
Обновление формы по нажатию
|
|||
---|---|---|---|
#18+
vkle, vkleИспользование ООП тут явно лишено смысла, как уже было отмечено. Во всяком случае, для class Database , где русским по экрану монитора кем-то написаноавтор Код: php 1.
, делать вывод веб-формы с вопросами-ответами... ну, очень мягко говоря, совсем не в тему. Какое отношение к базе данных имеют дивы с формами? А вопросы с ответами? Класс должен отражать сущность, ее свойства и действия. В данном случае, сущность - база данных. Что у нее есть? Подключение с параметрами, запросы, возврат результатов, сообщения об ошибках. думаю есть варианты :)) Можно сказать, что форма для получения данных от пользователя является частью кода обслуживающего БД. Ведь данные получается из формы именно для записи в БД. А параллельно с этим кодом на сайте может появиться код для работы с внешним АПИ, для печати в pdf и т.д. И если всё это затребует для себя разных форм со своими доп.полями, то такое разбиение кода на части может стать оправданным. Мы ведь пока не знаем что за сервис пытается написать автор вопроса :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 17:49 |
|
|
start [/forum/topic.php?fid=23&fpage=17&tid=1460002]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 443ms |
0 / 0 |