Задать вопрос
aaadddminnn
@aaadddminnn
php it ubuntu debian

Проблема с выводом сообщений php. Поможете решить её?

Привет. Делаю простенькую гостевую книгу. Уже сделал. Сейчас проблема в выводе смс с бд.
<head>
  <meta charset="utf-8">
  <title>гостевая книга</title>
 </head>
<form method='POST'>
    <textarea name="text"></textarea><br>
    <input type='submit' value='Отправить'/> 
</form>
<?php
  if(mysql_connect('localhost','root','')) {  
    if(mysql_select_db('book')) {       
    mysql_query('SET NAMES UTF8');       
    }
    else
    {
      echo'Не удалось соеденится с бд';
    }   
  }
  else
  {
    echo'Не удалось соеденится с сервером бд';
  }
  
$text = htmlspecialchars($_POST['text'], ENT_QUOTES);
if (!empty($text)) {
$text = preg_replace( "#\r?\n#", "<br />", $text );
mysql_query('INSERT INTO `book` (`text`) VALUES ("'.$text.'")');
}


$num = 25; 
$page = $_GET['page']; 
$result = mysql_query("SELECT COUNT(*) FROM book"); 
$posts = mysql_result($result, 0); 
$total = intval(($posts - 1) / $num) + 1; 
$page = intval($page); 
if(empty($page) or $page < 0) $page = 1; 
  if($page > $total) $page = $total; 
$start = $page * $num - $num; 
$result = mysql_query("SELECT * FROM book LIMIT $start, $num"); 



if ($page != 1) $pervpage = '<a href=?page=1><<</a> 
                               <a href=?page='. ($page - 1) .'><</a> '; 
if ($page != $total) $nextpage = ' <a href=?page='. ($page + 1) .'>></a> 
                                   <a href=?page=' .$total. '>>></a>'; 
if($page - 2 > 0) $page2left = ' <a href=?page='. ($page - 2) .'>'. ($page - 2) .'</a> | '; 
if($page - 1 > 0) $page1left = '<a href=?page='. ($page - 1) .'>'. ($page - 1) .'</a> | '; 
if($page + 2 <= $total) $page2right = ' | <a href=?page='. ($page + 2) .'>'. ($page + 2) .'</a>'; 
if($page + 1 <= $total) $page1right = ' | <a href=?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
echo $pervpage.$page2left.$page1left.'<b>Странца '.$page.'</b>'.$page1right.$page2right.$nextpage; 


echo '<br>';

//Выводим  сообщения на экран
while($d=mysql_fetch_array($result))
{   
    echo $d['text']."<hr>";
}
?>

Проблема в том что надо что бы первым сообщением выводило последнее с бд. А то у меня навигация такова что последнее лобавленое смс на последней странице. Поправте пж код. Зарание спасибо
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Ashlst
@Ashlst
Фанат эстетики и красивых решений.
Почему $num = 25; ????

UPD: На Вашем месте я бы переписал заново,потому что это странный код:
1.Не надо использовать mysql,это морально устаревшая и небезопасная фича..пользуйтесь PDO.
2.
mysql_connect('localhost','root','')
- вся системная информация типа паролей,хостов,БД выносится в отдельный файл и хранится в виде констант.
3. Вся полученная информация из форм должна проходить проверки (обрезаем html теги,пробелы и тд )
4.Желательно так же отслеживать ошибки при работе с БД.
5.Нехорошо мешать html и php в большом количестве,получается трудно читаемый код.Используем шаблонизаторы.
5.С кучей if`ов,надо что-то делать....серьезно...это боль для глаз)
6. Чтобы выводилось последнее сообщение,смотрите в сторону ORDER BY и DESC

p.s Все выше написанное - лично мое субъективное мнение.
Ответ написан
@Kostik_1993
Web Developer
$result = mysql_query("SELECT * FROM book ORDER BY date DESC LIMIT $start, $num");


date замени на свою колонку c датой
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы