Я прочесал в Интернете учебник об этой простой задаче, но безрезультатно. И поэтому я обращаюсь к вам, полезные товарищи. Вот что мне нужно сделать:
У меня есть база данных 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