|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|||||||||||||||||||||||||||||||
Как создать динамические страницы в РНР09.05.2024, 13:32. Показов 12095. Ответов 164
Я пишу свой сайт с форумом. Мне нужно, чтобы 2 файла profile.php и vopros.php изменяли своё содержимое в зависимости от id юзера и id вопроса соответственно. И чтобы остальные файлы рнр и с другими расширениями не перенаправлялись на точку входа.
Т.е. мне нужно создать движок на базе данных, если я правильно поняла. Для этого я создала файл .htaccess и файл точки входа vhod.php. Я честно пыталась разобраться в теории и синтаксисе .htaccess, но мне это не очень удалось. Я написала файл .htaccess:
И вообще сайт не открывается. Пробовала записать правило только для динамической страницы. Так:
Видимо, я неправильно понимаю, как это работает. Что у меня не так с .htaccess и можно ли указать правило только для двух файлов и как это сделать правильно? И ещё один вопрос: как (в каком формате) указывать название этих двух файлов? vopros.php?, vopros.php, или vopros.php?id=$1 И их название в файле mytytles.php:
0
|
|||||||||||||||||||||||||||||||
| 09.05.2024, 13:32 | |
|
Ответы с готовыми решениями:
164
Можно ли на РНР создавать динамические страницы? Как передать РНР скрипту имя страницы, вызвавшей процесс? Как в текущий файл на рнр подрузить массив из другого файла на рнр? |
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 18.05.2024, 09:13 [ТС] | |
|
sad67man, ну хоть кто-то нормальный
Спасибо, жаль, что немного поздно. Я уже сама к этому пришла.Добавлено через 8 минут DmitriyLutsenko, Во-первых, решение я нашла абсолютно самостоятельно. И если бы я ждала готового решения на форуме, я бы и по сей день вопрос не решила. ![]() И во-вторых, Фантом предлагал заведомо неприемлемые способы и я убивала время, пытаясь их реализовать. А если он действительно разбирается в вопросе, то должен был знать, что есть другое, гораздо более простое решение, и не морочил бы мне голову с тем, что мне в данной ситуации совершенно не нужно. Добавлено через 7 минут ft4l, виртуальных файлов два: vopros.php и profile.php. Остальные файлы неизменные, а файла otvet.php нет вообще, т.к. ответы у меня в одном файле с вопросом, как и на этом сайте. Видимо, я плохо объяснила ситуацию. Спасибо, что пытались помочь.
1
|
|
|
76 / 62 / 16
Регистрация: 13.07.2020
Сообщений: 262
|
||
| 18.05.2024, 10:15 | ||
![]() Если Вам в дальнейшем будет интересна разработка форума с возможностью гибкого расширения функционала, то я рекомендую смотреть в сторону MVC движка Да, это может быть сложновато, но как самописный фреймворк будет готов, Вы сможете писать функционал страниц практически под копирку)Я учился основам MVC по этому курсу на ютубе Уроки реально интересные, плюс рассматриваются роутинги с ЧПУ.https://www.youtube.com/watch?v=-kacVilgyEI
0
|
||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 18.05.2024, 13:17 [ТС] | |
|
DmitriyLutsenko, спасибо, но я пока не собираюсь зарабатывать программированием. Мне нужен сайт и я его себе пишу
0
|
|
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
|||||
| 18.05.2024, 13:23 | |||||
![]() ![]() Добавлено через 4 минуты
0
|
|||||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 18.05.2024, 14:30 [ТС] | |
|
Phantom-84, Вы вообще помните, что находитесь в разделе РНР для начинающих? Естественно, я не понимала, о чём пишу. Если бы понимала, то вопрос не задавала бы. И что Вам мешало объяснить мне, как работать с GET параметрами, а не писать рассуждения ни о чём?
То, что я не поняла, что Вы писали и зачем - это исключительно Ваша вина. Вас не смущает, что я таки разобралась в вопросе? Значит, кто-то умеет выражать свои мысли гораздо лучше Вас. Так, чтобы я поняла ![]() В то, что хоть кому-то Вы помогли хоть по какому-то вопросу, я поверю только если Вы пришлёте ссылку на такую тему Очень рада буду почитать ![]() Что касается времени: вас никто не заставлял писать в мой теме, Вы это сделали совершенно добровольно. А вот я была вынуждена читать Ваши ответы, потому что это моя тема. Так что, за потерянное время должны Вы мне. Добавлено через 55 минут Phantom-84, ничего, что Ваши "общепринятые термины" даже гугл не знает? А вот термин "виртуальные пути", "виртуальный url" знает. Если есть реально существующие файлы, то есть и виртуальные. Те , которые реально не существуют, но получаются в результате вставки в шаблон каких-то get параметров.И как можно не понять, что такое виртуальный файл? Виртуальный путь ведёт к виртуальному файлу. Всё логично и понятно.
0
|
|
|
76 / 62 / 16
Регистрация: 13.07.2020
Сообщений: 262
|
|||
| 19.05.2024, 00:57 | |||
|
Вместо этого привычней на слух понятие "виртуальная страница" - страница, адрес к файлу которой физически не существует в файловой системе сайта. Но сам адрес обрабатывается и перенаправляется сервером к ответственному за отображение этой страницы файла-скрипта. И все благодаря распознаваемым сервером параметрам, записанным в адресе страницы. GET-параметры лишь один из способов создания виртуальной страницы. Есть еще и виртуальные страницы на основе ЧПУ, к примеру, реализованная другим способом логика в "физическом" файле vopros.php запросто обработает запрос к виртуальной странице /vopros/categoriya-pomoshi/1 (Обратится к разделу categoriya-pomoshi и получит из нее вопрос по 1-му ID) и выведет нужный контент.
1
|
|||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 19.05.2024, 09:30 [ТС] | |
|
DmitriyLutsenko, спасибо, что понятно объяснили про терминологию
Оправдываете свой девиз.Однако термин "виртуальная страница" меня устраивает, а "файл-скрипт" мне не нравится, потому что у меня в сознании слово "скрипт" прочно связано с Ява Скрипт, а на неё у меня аллергия. Я думаю, как у всех, кто начинал с Явы. Скрипты я изредка использую, конечно, но только вынужденно.Поэтому называть файл-шаблон файлом-скриптом я не буду. Извините. ![]() Про ЧПУ я читала. Идея хорошая, реализовывать лень. У меня ведь уже реализована совсем другая логика. Но если вдруг захочется написать ещё один сайт, обязательно использую.
0
|
|
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
||||
| 19.05.2024, 19:06 | ||||
![]() Наверное, опять память подкачала. Еще раз для тех, кому лень на несколько страниц назад вернуться: Кстати, словосочетание "виртуальные пути" вполне уместное, когда хотят подчеркнуть, что путям в адресе (URLе) нет соответствия в ФС. Иначе будет понятнее "путь в адресе (URLе)" или "путь из адреса (URLа)". Можете посмотреть в Википедии, из каких частей состоит URL.Добавлено через 5 минут У современных сайтов все пути в адресах страниц "виртуальные". Даже основной обработчик для главной страницы вполне может находиться не в индексном файле корня сайта, так что не удивляйтесь, если по адресу /index.php и т.п. вы будете получать 404-ую. В корне (и глубже) обычно хранятся только т.н. "статические файлы" (хотя они могут храниться на др. хостах, так что вполне реальна ситуация, когда корень полностью пустой). Для них обычно пути в адресе и пути в ФС (если считать от корня сайта) совпадают, так что Web-сервер может выводить такие файлы самостоятельно, не обращаясь к PHP и т.п. Кстати, к адресам статических файлов обычно можно спокойно добавлять query_string (Web-сервер просто не будет ее учитывать), что может быть полезно для сброса кеша браузера. Т.е., когда хотите разместить файл под тем же именем и чтобы пользователь гарантированно увидел изменения, добавьте к его адресу ?version=2 и т.п.
1
|
||||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 19.05.2024, 19:52 [ТС] | |
|
Phantom-84, это Вы что-то сделали, что мне пришлось менять пароль и сайт начал глючить?
Первый мой ответ испарился. Но я повторюсь ![]() Это о "динамических страницах": "На самом деле, вопрос не вполне прозрачен. Если речь идёт о "статических" и "динамических" страницах относительно их поведения в браузере, то статическая страница содержит только статические элементы (текст, картинки и пр.) . Динамической в данном случае является страница, использующая технологии JavaScript, AJAX. То есть динамическая страница в данном случае — та, которая изменяет свои данные в зависимости от действий пользователя (например, технология AJAX позволяет подгружать данные и вставлять их в текущую страницу) Есть ещё одно разделение на динамические и статические — по способу хранения. Статическая страница есть файл HTML, который хранится на сервере. Динамическая же в виде отдельного файла не существует, а формируется серверными языками (PHP, ASP и др. ) в момент обращения пользователя к серверу. На сегодняшний день сайтов, состоящих из статических по способу хранения страниц, почти не существует. Поэтому понятие статики/динамики несколько переосмыслено. Если на сайте форма отправки чего-либо, но нет механизмов, которые меняют текущую страницу динамически (упрощая, скажу, например, про кнопку изменения цвета фона) , — страница считается статической по способу поведения в браузере, но наверняка является динамической по способу хранения на сервере - т. к. , как я уже сказал, других сайтов сейчас не сыщешь. " Если слово имеет несколько значений в одной сфере, оно никак не может быть термином. "Те́рмин (от лат. terminus «предел, граница») — слово или словосочетание, являющееся названием строго определённого понятия какой-нибудь области науки, техники, искусства и так далее[" Я и не спорю, что "виртуальный url" вполне реален, но я-то использовала термин "виртуальный файл", т.е. файл, который в папке сайта не существует. А слово динамический вполне может относиться и к файлу, который в папке сайта существует ![]() А ГУГЛ не знает, что значит Ваш "общепринятый термин" " стартовый код" И, похоже, что Вы сами тоже ![]() Добавлено через 3 минуты Phantom-84, может, Вы уже перестанете всякую чушь писать? Ведь если кому-то понадобится ответ на заданный мною вопрос, то из-за Ваших бессмысленных простыней он до ответа не доберётся
0
|
|
|
Невнимательный
|
|||
| 19.05.2024, 20:16 | |||
|
виртуальные пути звучит как внутреннее перенаправление с mod_rewrite. а так QUERY_SRING или строка запроса... всё что после ? это часть uri или адресапуть к какому-нибудь file.php вроде более-менее похож на реальный )) от корня сайта А файлы это в ФС... + там симлинки, хардлинки и виртуальные диски )) я предлагал вариант с PATH_TRANSLATED ... типа /dir/file.php/otvet/1/ первая часть реальнее второй ![]() Уникальность этих uri как-бы может иметь значение, если для ботов например с обычной query_string, на запросы адресов: /file?post=3&pg=3 и /file?pg=3&post=3php выполнит одинаково, но поисковики могут не понять... если где-то нароют две такие ссылки так-то может и поисковики на такое уже обучены, и вариантов масса как выкрутиться от <link rel="canonical" href="https://example.com/file?post=3&pg=3" /> или Sitemap или просто неразбрасывания изменённых ссылок.) до отлавливания изменённых обращений и редиректа на нужные Но эт мелочи хотя какие-нибудь ЧПУ и SEO-оптимизации многие сайтоделы наверняка преподнесут как киллер-фичу .)... интерпретируемое вобщем. JS это да те ещё бывают костыли, когда надо чтобы один код работал как надо,на всём зоопарке браузеров-интерпретаторов. В php, кроме различий OS и SAPI, только что-то вроде >= 5.4, 5.5, 7.0, 7.3, 8.0... особо без костылей для поддержки всего)
0
|
|||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 19.05.2024, 21:03 [ТС] | |
|
ft4l, в любом случае скрипт - это часть файла, а не синоним слова "файл", поэтому слово "файл-скрипт"противно моему филологическому нутру
![]() Извините, можно я ещё один вопрос задам? Я целый день сегодня игралась с датами. Я решила выводить не только дату, но и время написания вопроса, ответа, комментария. Вроде бы всё сделала правильно. Поменяла формат этого параметра в БД на datetime(кажется так это пишется). В файле после получения значения параметра "дата" из БД я его форматирую и потом вставляю в страницу вместе с остальными параметрами( логином и прочим). Все параметры, кроме даты, вставляется нормально. Т.е. например, текст ответа и автор в каждом из ответов разные, а дата и время почему-то во всех ответах такие же, как в первом ответе на этой странице. Причём в БД дата и время в каждом ответе указаны правильные и разные. Я проверила, изменение значения параметра "дата" происходит ещё до форматирования. Я вообще не понимаю, как это возможно... Может, Вы такое встречали? Как вообще может только один параметр из БД выводиться неправильно? Буду благодарна хоть за какие-то идеи.
1
|
|
|
Невнимательный
|
||||||||||
| 19.05.2024, 21:58 | ||||||||||
|
Причём привычное "inline javascript" применительно к php , как-бы наоборот скорее там "inline html" , в php-скриптах ![]()
или например fetch_assoc() перезаписывает значения с одинаковыми именами
array (в запросе выборка трёх разных, перезаписало второе последним с таким-же именем ... Алиасы бывает полям надо задать или можно с fetch_row() использовать такое
1
|
||||||||||
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
|||
| 19.05.2024, 22:22 | |||
"Стартовый код" - это код, который находится в начале.
0
|
|||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 19.05.2024, 23:04 [ТС] | |
|
ft4l, у меня fetch_assoc().. А что значит "перезаписывает значения с одинаковыми именами"? Может, это потому, что у меня несколько ответов на каждый вопрос? Т.е. для одного id_vopr несколько значений id ответов и соответственно "data". Но почему перезаписывается только параметр "data", а остальные не перезаписываются?
А зачем задавать псевдонимы полям? Спасибо, буду завтра дальше разбираться. Добавлено через 1 минуту Phantom-84, Удачи. Р.S. все филологи такие. Они используют слова исключительно в соответствии с их значением.
1
|
|
|
Невнимательный
|
||||||||
| 20.05.2024, 05:10 | ||||||||
![]()
array (Добавлено через 13 минут что невозможно иметь несколько значений с одним ключом/именем . Например если http-запрос будет /otvet.php?vopros=1&pg=2&vopros=2&vopros=3то в $_GET будет только 'vopros'=>'3', 'pg'=>'2'но в QUERY_STRING будет QUERY_STRING как есть. ... если вообще QUERY_STRING ) ... или придётся вычленять с REQUEST_URI )))
0
|
||||||||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 20.05.2024, 12:59 [ТС] | |
|
ft4l, я прочитала про fetch_assoc(). Нет, у меня нет двух столбцов с одинаковыми именами.
Даже в 4 разных таблицах у дат у меня разные имена: date, datev, dateo, datec. Поищу другие варианты. Добавлено через 2 часа 35 минут ft4l,странно, я вставила в файл: $quer = mysqli_query($link,"SELECT * FROM otvets WHERE id = '{$id_vopr}' ORDER BY id DESC"); //Выводим все значения dateo из этих строк while($ro = mysqli_fetch_array($quer)){ echo $ro['dateo'] . '<br/>'; } И оно вывело правильно. Так же, как и в БД: 2024-05-15 00:00:00 2024-05-20 10:35:00 Может быть, мне нужно вместо foreach использовать цикл while? Это может помочь? Кстати, форматирование дат я пробовала убрать,но это проблему не решило, как я и предполагала.
0
|
|
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 21.05.2024, 12:27 [ТС] | |
|
ft4l, я решила проблему. Поменяла foreach на цикл while и всё стало выводиться правильно. Понятия не имею - почему. Выложу здесь код, может быть кому-то пригодится:
//Достаём значения данных из таблицы otvets $quer = mysqli_query($link,"SELECT * FROM otvets WHERE id = '{$id_vopr}' ORDER BY id DESC"); $row8 = mysqli_fetch_array($quer); //Если есть значение contentO (текст ответа) и др. if (!empty($row8['contentO']) and !empty($row8['id_otv']) and !empty($row8['dateo'])and !empty($row8['experto'])) { //Выводим Ответы echo '<p style="color:#FE9A2E;font-size: 22px "><b>Ответы<b></p><br/></div> <div class="otvs">'; //Достаём значения из БД $ball=$row8['ball']; // Это последнее значение из БД $id_otv=$row8['id_otv']; // из БД $id_v=$row8['id']; //получаю из т. otvets БД id вопроса ... //Создаю таблицу для ответов на странице echo "<table><tr><th></th><th></th><th></th></tr>"; //Выводим значения из БД на странице в блоке ответов while($row8 = mysqli_fetch_array($quer)){ echo "<tr>"; //Вставляю счётчик с id_otv echo "<td style='width: 210px'>" . '<div class="sch">'; //Вставка счётчика echo' <form method="post" class="forma" > <input type="hidden" name="id_otv" value="', $row8["id_otv"], '"/> <button class="mysubmit" name="like" value="-"/> - </button> <b class="sum">', $row8["ball"], '</b> <button class="mysubmit" name="like" value="+"/> + </button> <button class="mysubmitlo" name="like" value="++">Лучший ответ</button> </form> </div></td> '; //Вставляю ответ echo "<td>" . '<div class="otvsT"><p>' . $row8["contentO"] . '</p></div><br/>' . "</td>"; //Вставляю дату и автора ответа echo "<td>" . '<div class="kvadrO"><div class="datav"><p style="color:#A4A4A4;font-size: 12px"><b>Написан </b>' . date('d-m-Y H:i',strtotime($row8['dateo'])) . '</p></div> <div class="avt"><p style="color:#E095B2;font-size: 14px "><b>Автор: ' . $row8["experto"] . '<b></p></div></div><br/><br/>' . "</td>"; echo "</tr>"; } echo "</table>"; } echo '</div>'; } Даты выводит в формате: Написан 21-05-2024 12:15
0
|
|
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
|||||||||||||||||||||||||||
| 21.05.2024, 14:42 | |||||||||||||||||||||||||||
Так же учтите, что в данных могут содержаться html теги
0
|
|||||||||||||||||||||||||||
|
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
|
|
| 21.05.2024, 15:18 [ТС] | |
|
sad67man, не могли бы Вы объяснить, чем Ваш вариант лучше моего? Для чего мне это делать?
Тем более, что я подозреваю, что с foreach опять будут те же проблемы...
0
|
|
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
||
| 21.05.2024, 15:28 | ||
|
Html может усложняться, будет легче отследить ее целостность и изменять без риска повредить логику формирования данных. В контексте html php играет роль простого шаблонизатора. Где используются простые конструкции. Так же появляется возможность вывести через var_dump данные всей страницы, что удобно при отладке.
0
|
||
| 21.05.2024, 15:28 | |
|
Генерация HTML страницы в UTF-8 средствами РНР Выполнение РНР-файла по запросу определенной html-страницы Вытащить значение из одной страницы и вставить в другую без РНР Подскажите как создать динамические чекбоксы? Почему не работает РНР, не могу запустить ни один скрипт на РНР Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|