Форум, работающий с базой данных MySQL
Чтение топика
Это довольно объемная часть скрипта, по ходу дела я буду давать пояснения.
elseif ($action=="read_topic") {
if ($top_name) {
connect ();
// В этом случае данные выбираются из 2-х таблиц-topics и info.
$query="select message,post_date,info.posts, info.email from topics,info where topics.name= info.name and topics.top_name='$top_name' and topics.name='$name'";
$result=mysql_query ($query);
$row=mysql_fetch_array ($result);
$message=$row["message"];
$post_date=$row["post_date"];
$posts=$row["posts"];
$email=$row["email"];
// Вырезаем теги <br>, чтобы они не отображались на странице.
$message=str_replace ("<br>","",$message);
$char=$message;
// Эта куча преобразований позволяет помещать //в сообщения смайлики и выводить их на экран в виде рисунков.
$char=str_replace (":)","<img src='./images/smile.gif'>",$char);
$char=str_replace (":(","<img src='./images/frown.gif'>",$char);
$char=str_replace (":o","<img src='./images/redface.gif'>",$char);
$char=str_replace (":D","<img src='./images/biggrin.gif'>",$char);
$char=str_replace (";)","<img src='./images/wink.gif'>",$char);
$char=str_replace (":p","<img src='./images/tongue.gif'>",$char);
$char=str_replace (":cool:","<img src='./images/cool.gif'>",$char);
$char=str_replace (":rolleyes:","<img src='./images/rolleyes.gif'>",$char);
$char=str_replace (":mad:","<img src='./images/mad.gif'>",$char);
$char=str_replace (":eek:","<img src='./images/eek.gif'>",$char);
$char=str_replace (":confused:","<img src='./images/confused.gif'>",$char);
print_header ();
?>
// Теперь все выбранные данные помещаем в html-таблицу и выводим на экран.
<p align=right>| <a href="<?php echo $script ?>">Go to topics</a> | <a href="<?php echo $script ?>?actiond_new_top"> Post new topic</a> |
<a href="<?php echo $script ?>?action=post_reply&top_name= <?php echo $top_name ?>"> Post reply</a> |
<p><table cellspacing=0 cellpadding=5 border=1 width.0%>
<tr><td alignОnter width§0 bgcolor="D5E6E1"> <font face="Arial" size=2 color="808080">Author</font>
<td bgcolor="D5E6E1"><font face="serif" size=2 color="0000ff"> Topic:</font><font face="serif" size=2 color="ff0000"> <?php echo $top_name ?></font></td></tr>
<tr><td rowspan=2 bgcolor="D5E6E1" alignОnter> <font face="serif" size=3 color="ff0000"> <?php echo $name ?></font>
<br><font face="serif" size=2 color="0000ff"> Posts:<?php echo $posts ?></font></td>
<td bgcolor="e6e8fa" height0> <font face="serif" size=1 color="000080">Posted: <?php echo $post_date ?></font>
<a href="mailto: <?php echo $email ?>"><img src="email.gif" border=0></a>
<font face="serif" size=1 color="000080">E-mail </font> <font face="serif" size=1 color="0000ff"><?php echo $name ?></font>
<a href="<?php echo $script ?>?actionнit&top_name= <?php echo $top_name ?>&nick= <?php echo $name ?>&type=message">
<img src="edit.gif" border=0></a> <font face="serif" size=1 color="000080"> Edit message</font></td></tr>
<tr><td bgcolor="f7f7f7"><font face="serif" size=2 color="000080"> <?php echo $char ?></font></td></tr></table>
<?php
// Ограничиваем количество записей на странице 20 сообщениями.
$lines ;
$begin=$page*$lines;
if (empty ($page)) {
$page=0;
}
// Делаем новый запрос для вывода ответов на топик.
$query="select replies.name,reply,reply_date,info.posts, info.email from replies,info where replies.name= info.name and replies.top_name= '$top_name' order by reply_date limit $begin,$lines";
$result=mysql_query ($query);
// Дальше все так же,как и в предыдущий раз.
while ($row=mysql_fetch_array ($result)) {
$nick=$row["name"];
$reply=$row["reply"];
$reply_date=$row["reply_date"];
$posts=$row["posts"];
$mail=$row["email"];
$reply=str_replace ("<br>","",$reply);
$char=$reply;
$char=str_replace (":)","<img src='./images/smile.gif'>",$char);
$char=str_replace (":(","<img src='./images/frown.gif'>",$char);
$char=str_replace (":o","<img src='./images/redface.gif'>",$char);
$char=str_replace (":D","<img src='./images/biggrin.gif'>",$char);
$char=str_replace (";)","<img src='./images/wink.gif'>",$char);
$char=str_replace (":p","<img src='./images/tongue.gif'>",$char);
$char=str_replace (":cool:","<img src='./images/cool.gif'>",$char);
$char=str_replace (":rolleyes:","<img src='./images/rolleyes.gif'>",$char);
$char=str_replace (":mad:","<img src='./images/mad.gif'>",$char);
$char=str_replace (":eek:","<img src='./images/eek.gif'>",$char);
$char=str_replace (":confused:","<img src='./images/confused.gif'>",$char);
if (mysql_num_rows ($result)) {
?>
<table cellspacing=0 cellpadding=5 border=1 width.0%>
<tr><td rowspan=2 bgcolor="e6e8fa" alignОnter width§0> <font face="serif" size=2 color="0000ff">
<?php echo $nick ?></font><br> <font face="serif" size=2 color="333300"> Posts:<?php echo $posts ?></font></td>
<td bgcolor="e6e8fa" height0> <font face="serif" size=1 color="000080"> Posted:<?php echo $reply_date ?></font>
<a href="mailto:<?php echo $mail ?>"> <img src="email.gif" border=0></a>
</font><font face="serif" size=1 color="000080"> E-mail </font><font face="serif" size=1 color="0000ff"> <?php echo $nick ?></font>
<a href="<?php echo $script ?> ?actionнit&top_name=<?php echo $top_name ?> &nick=<?php echo $nick ?>&type=reply&reply_date= <?php echo $reply_date ?>">
<img src="edit.gif" border=0></a> <font face="serif" size=1 color="000080"> Edit message</font></td></tr>
<tr><td bgcolor="f7f7f7"><font face="serif" size=2> <?php echo $char ?></td></tr></table>
<?php
}
}
// Формируем ссылки для навигации по // страницам в случае, если количество записей больше 20.
// Для этого подсчитываем количество записей //в таблице replies для данного топика.
$query="select COUNT(*) as count from replies where top_name='$top_name'";
$result=mysql_query ($query);
$items=mysql_fetch_array ($result);
$count=$items["count"];
$pagesОil ($count/$lines);
// В случае, если количество ответов больше 20, //формируем ссылки с номерами страниц.
if ($count>$lines) {
echo "<p align=right>";
for ($i=0;$i<$pages;$i++) {
?>
|<a href="<?php echo $script ?>?action=read_topic&top_name= <?php echo $top_name ?>&name= <?php echo $name ?>&page=<?php echo $i ?>"> <?php echo ($i+1) ?></a><?php
}
}
}
}
Вот и все. Теперь вы видите, как просто можно работать с БД с помощью
PHP, и как это облегчает жизнь. Все это остается за кадром, а посетители
форума видят обычную html-страницу. Далее рассмотрим, как можно
редактировать сообщения.
[Назад] [Содержание] [Вперед]
Автор: OlegTr
Источник: www.zk.ru/alextr/
|