Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как разбить на страницы гостевую?

Сообщения:  [1-10]   [11-12] 

 
 автор: alik   (20.05.2005 в 20:08)   письмо автору
 
   для: ВЛ   (20.05.2005 в 19:48)
 

А если так:

$date = date("d.m.Y H:i", time()); 

Если Вы поставили в таблице поле типа даты, тогда лучше сделать так

insert into msgs (name, email, msg, date) values ('$name', '$email', '$msg', now())

now() - текущая дата

   
 
 автор: ВЛ   (20.05.2005 в 19:48)
 
   для: alik   (20.05.2005 в 18:53)
 

Я добавил дату, но она неправильно отображается - стоит дата 1970 г.
Код:

if (isSet($name)) {
    $name = HTMLSpecialChars($name);
    $email = HTMLSpecialChars($email);
    $msg = HTMLSpecialChars($msg);
    $date = date("d.m.Y H:i", $row["datetime"]);
    if ($name!="" and $msg!="") {
        $sql = "insert into msgs (name, email, msg, date) values ('$name', '$email', '$msg', '$date')";
        mysql_query($sql);
        mysql_close();
        header("Location: $SCRIPT_NAME");
        exit;
    }
}
$pnumber = 10; 
if($page == "") $page=1; 
$begin = ($page - 1)*$pnumber; 
$guest = mysql_query("select * from msgs limit $begin, $pnumber;"); 
$total = mysql_query("select count(*) from msgs;"); 
echo "<p><b>"; 
if(guest && $total) 

   $tot = mysql_fetch_array($total); 
   $number = (int)($tot[0]/$pnumber); 
   if((float)($tot[0]/$pnumber)-$number != 0) $number++; 
   for($i = 1; $i<=$number; $i++) { 
    if($number == $i) { 
     if($page == $i) echo "[".(($i - 1)*$pnumber + 1)."-".$tot[0]."]";  
     else echo "<a href=index.php?page=".$i." title='&#239;&#238;&#234;&#224;&#231;&#224;&#242;&#252; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#255;'>[".(($i - 1)*$pnumber + 1)."-".$tot[0]."]</a>"; 
    } else { 
     if($page == $i) echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]"; 
     else echo "<a href=index.php?page=".$i." title='&#239;&#238;&#234;&#224;&#231;&#224;&#242;&#252; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#255;'>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>"; 
    } 
   } 
echo  "</p></b><table width=100% border=1>"; 
   while($qst = mysql_fetch_array($guest)) { 
    $name = htmlspecialchars($qst['name']); 
    $email = htmlspecialchars($qst['email']); 
    $msg = htmlspecialchars($qst['msg']); 
    $date = date("d.m.Y H:i", $row["datetime"]);
    echo "<tr><td width='100%' bgcolor=#F0F0F0><b>$name</b> &nbsp; 
          &nbsp;&nbsp; e-mail: <a href=mailto:$email>$email</a>&nbsp;&nbsp;Отправлено: $date</td></tr> 
         <tr valign='top'><td>$msg</td></tr>"; 
   } echo "</table>"; 
} else { echo ("&#206;&#248;&#232;&#225;&#234;&#224; &#239;&#240;&#232; &#226;&#251;&#225;&#238;&#240;&#234;&#229; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#233;..."); exit(); } 
?> 
<div align="center">
<form action="index.php" method="post">
&#194;&#224;&#248;&#229; &#232;&#236;&#255;: <input type="text" name="name"> <br>
&#194;&#224;&#248; E-mail: <input type="text" name="email"> <br>
<textarea cols="50" rows="5" name="msg"></textarea> <br>
<input type="submit" value="&#207;&#229;&#240;&#229;&#228;&#224;&#242;&#252;">
</form>
</div>
</body>
</html>

   
 
 автор: alik   (20.05.2005 в 18:53)   письмо автору
 
   для: ВЛ   (20.05.2005 в 18:41)
 

Измените строку

$guest = mysql_query("select * from msgs limit $begin, $pnumber;"); 

на

$guest = mysql_query("SELECT * FROM msgs ORDER BY id DESC LIMIT $begin, $pnumber;"); 

Но лучше всего добавить в таблицу поле, в котором будут хранится время добавления сообщения (дата) и сортировать по последнему добавлению (т.е. по дате)

   
 
 автор: ВЛ   (20.05.2005 в 18:41)
 
   для: alik   (20.05.2005 в 01:56)
 

Спасибо, теперь работает, но осталась небольшая проблема: новые сообщения в конце книги, на последней странице, а нужно, чтобы на первой были. Знаю, есть такая функция fsort вроде.

   
 
 автор: alik   (20.05.2005 в 01:56)   письмо автору
 
   для: ВЛ   (20.05.2005 в 01:07)
 

Используя Вашу таблицу вот Вам постраничная навигация гостевой книги

<?
include "config.php"//связь с базой данных
 
$pnumber 10//кол-во сообщений на 1 страницу
 
if($page == ""$page=1;
 
$begin = ($page 1)*$pnumber;
 
$guest mysql_query("select * from msgs limit $begin$pnumber;");
 
$total mysql_query("select count(*) from msgs;");
echo 
"<p><b>";
 if(
guest && $total)
 {
   
$tot mysql_fetch_array($total);
   
$number = (int)($tot[0]/$pnumber);
   if((float)(
$tot[0]/$pnumber)-$number != 0$number++;
   for(
$i 1$i<=$number$i++) {
    if(
$number == $i) {
     if(
$page == $i) echo "[".(($i 1)*$pnumber 1)."-".$tot[0]."]";
// book.php - страница гост. книги
     
else echo "<a href=book.php?page=".$i." title='показать сообщения'>[".(($i 1)*$pnumber 1)."-".$tot[0]."]</a>";
    } else {
     if(
$page == $i) echo "[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]";
     else echo 
"<a href=book.php?page=".$i." title='показать сообщения'>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>";
    }
   }
 echo  
"</p></b><table width=100% border=1>";
   while(
$qst mysql_fetch_array($guest)) {
    
$name htmlspecialchars($qst['name']);
    
$email htmlspecialchars($qst['email']);
    
$msg htmlspecialchars($qst['msg']);
    echo 
"<tr><td width='100%' bgcolor=#F0F0F0><b>$name</b> &nbsp;
          &nbsp;&nbsp; e-mail: <a href=mailto:
$email>$email</a></td></tr>
         <tr valign='top'><td>
$msg</td></tr>";
   } echo 
"</table>";
 } else { echo (
"Ошибка при выборке сообщений..."); exit(); }
?>

   
 
 автор: ВЛ   (20.05.2005 в 01:07)
 
   для: cheops   (20.05.2005 в 00:30)
 

Код книги, состоящей из одного файла, я привел в первом сообщении, а это код, создающий таблицу в базе данных:

CREATE TABLE msgs (
  id int(11) NOT NULL auto_increment,
  name varchar(50) NOT NULL default '',
  email varchar(50) NOT NULL default '',
  msg text,
  PRIMARY KEY  (id)
);

   
 
 автор: cheops   (20.05.2005 в 00:30)   письмо автору
 
   для: ВЛ   (19.05.2005 в 20:49)
 

Приведите код, который не работает как надо (лучше прикрепить его в виде отдельного файла к сообщению), так же неплохо, если вы приведёте структуру таблицы msgs, чтобы мы могли легко воссоздать эту таблицу. Оператор CREATE TABLE этой таблицы можно получить воспользовавшись запросом
SHOW CREATE TABLE msgs

   
 
 автор: ВЛ   (19.05.2005 в 20:49)
 
   для: cheops   (19.05.2005 в 12:48)
 

Извините, так и не получается. Не пойму, куда какой код вставить. В этой статье - http://www.softtime.ru/info/articlephp.php?id_article=33 все понятно написано, но моя гостевая не работает, как надо.

   
 
 автор: ВЛ   (19.05.2005 в 19:45)
 
   для: cheops   (19.05.2005 в 12:48)
 

Спасибо вам, сейчас попробую сделать.

   
 
 автор: cheops   (19.05.2005 в 12:48)   письмо автору
 
   для: alik   (19.05.2005 в 02:46)
 

А так же тему по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3044

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования