Intereting Posts
диспетчер иногда вызывает код из другого приложения как я могу опубликовать значение этого динамического текстового поля для скрипта php Сохранение обрезанного изображения в различной ширине и высоте Поддержка Sonata для Symfony2 Как исправить ошибку PHP Strict «Создание объекта по умолчанию из пустого значения»? Facebook FQL пользовательская таблица `sex` field: как вернуть мужчину / женщину, даже пользователь использует другой язык? URL-адрес URL-адреса URL и параметр Правый выравнивать текст в изображении с помощью imagettftext (), PHP Проверьте, приобрел ли клиент определенные продукты в WooCommerce Код для получения размера файла после загрузки и вставки в таблицу не работает Тестирование, если сеть в записи cidr перекрывает другую сеть Браузер перенаправляется за пределы Facebook вместо перенаправления его внутри iframe php: как изменить строковые данные станут числовыми данными Группа Google и код подписки Правильный / принятый способ обновления записи ATOM

PHP – Как создать динамические URL-адреса?

Я прочесал в Интернете учебник об этой простой задаче, но безрезультатно. И поэтому я обращаюсь к вам, полезные товарищи. Вот что мне нужно сделать:

У меня есть база данных MySQL с таблицей событий. Мне нужно создать веб-страницу PHP со списком названий событий, и каждый заголовок должен быть ссылкой на полную информацию о событии. Но я хочу избежать создания статической страницы для каждого события, прежде всего потому, что я не хочу, чтобы волонтер ввода данных должен был создавать эти новые страницы. (Да, я понимаю, что статические страницы более дружелюбны к SEO, но я должен отказаться от этого в этом случае ради эффективности.)

Я видел синтаксис url PHP с чем-то вроде этого:

pagename.php?id=20 

но я не знаю, как заставить его работать.

Любая помощь очень ценится.

Благодаря!

койка

Это базовый php. Вы просто запросите БД для деталей события до того, как будут написаны заголовки страниц и соответственно напишите html.

Первое, что я хотел бы задать вам, это узнать, как подключиться к базе данных. Оттуда вы запрашиваете на основе значения $ _GET ['id'] и используете результаты для заполнения вашего html.

Не грубить, но сам вопрос подсказывает, что вы новичок в PHP, не так ли? Поэтому, чтобы обеспечить решение, которое работает, мы, возможно, захотим узнать, насколько вы далеко.

Кроме того, вы можете переписать свои динамические URL-адреса, чтобы они выглядели как статические, используя mod_rewrite от apache. Это, вероятно, новичок, если вы заинтересованы в «хорошем» URL-адресе.

МОДИФИЦИРОВАННЫЙ ОТВЕТ:

В вашем цикле вы должны использовать идентификатор из результата запроса (если ваш первичный ключ равен id) …

 while($field = mysql_fetch_array($result)) { echo "<p class='date'>"; echo $field['month']." ".$field['day'].", ".$field['year']; echo "</p>"; echo "<h3>"; echo '<a href="/somepage.php?id='.$field['id'].'">'.$field['event_name'].'</a>'; echo "</h3>"; } 

Затем на somepage.php вы будете использовать get var id, чтобы вытащить соответствующую информацию …

 $result = mysql_query("SELECT * FROM `calendar` WHERE `id` = '".mysql_real_escape_string($_GET['id'])."'); 

не забудьте заглянуть в mysql_real_escape_string () для очистки записей.

Целесообразно проявлять особую осторожность, когда вы используете переменные $_GET , потому что они могут быть легко изменены злоумышленником.

Следуя примеру, вы можете сделать следующее:

  $foo = (int)$_GET['id']; 

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

скажем, у вас есть php-файл test.php

 <?php $conn = mysql_connect("localhost", "root", ""); mysql_select_db("db", $conn); $id = $_GET['id']; $sql = "select * from table where id = $id"; $result = mysql_query($sql, $conn); if ($result){ $row = mysql_fetch_row($result); $title = $row[0]; $content = $row[1]; } ?> <html> <head> <title><?php echo $title ?></title> </head> <body> <h1><?php echo $title ?></h1> <p><?php echo $content ?></p> </body> </html> 

динамическая страница будет что-то вроде этого ..

Вот соответствующий код для извлечения списка событий в ноябре из таблицы с именем calendar, причем каждое событие имеет ссылку на страницу с именем event.php и поле с идентификатором события, добавленное в конец URL:

 $result = mysql_query("SELECT * FROM calendar WHERE sort_month='11'"); while($row = mysql_fetch_array($result)) {echo "<a href='event.php?id=".$row['id']."'>".$row['event_name']."</a>" ;} 

И вот соответствующий код на странице event.php. Обратите внимание, что номера строк в скобках зависят от их размещения в вашей таблице, помня, что первая строка (поле) имела бы число 0 внутри скобок:

 $id = $_GET['id']; $sql = "select * from calendar where id = $id"; $result = mysql_query($sql, $con); if ($result){ $row = mysql_fetch_row($result); $title = $row[12]; $content = $row[7]; } ?> <html> <head> <title><?php echo $title ?></title> </head> <body> <h1><?php echo $title ?></h1> <p><?php echo $content ?></p> </body> </html> 

Это работает для меня, благодаря помощи вышеперечисленных.

 $foo=$_GET['id']; 

в вашем примере $foo = 20