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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Гостевая книга (продолжение)
 
 автор: Roo$   (04.09.2006 в 17:15)   письмо автору
 
 

Я уже как то заводил эту тему. Но тогда лишь я только ришал в чем ее делать (файлы или БД). И вот всетаки решился. Я создал БД. Туда все данные, которые мне нужно закидываю. Теперь мне все это нужно прочитать не сверху в низ, а на оборот. Начиная с нижней записи.... Как мне это сделать? Вот так я их считываю:

$query = "SELECT * FROM guestbook";
$usr = mysql_query($query);
//$umsg = trim($user_name['msg']);
while ( $user_name = mysql_fetch_array($usr) ) print $user_name['name'],.............,............,........;

   
 
 автор: Trianon   (04.09.2006 в 17:18)   письмо автору
 
   для: Roo$   (04.09.2006 в 17:15)
 

У таблицы нет собственного порядка. Данные там лежат внавал.
Без ORDER BY говорить о следующей, предыдущей, последней, первой и т.д. строках - бессмысленно.

   
 
 автор: Roo$   (04.09.2006 в 17:35)   письмо автору
 
   для: Trianon   (04.09.2006 в 17:18)
 

Вы наверное меня неправельно поняли. Я считываю данный по строкам print $user_name['name'],$user_name['time'],............,........; Начиная с первой строки и кончая n-ой стракой. А мне нужно прочитать начиная с последней строки ло первой.

   
 
 автор: Trianon   (04.09.2006 в 17:47)   письмо автору
 
   для: Roo$   (04.09.2006 в 17:35)
 

Хорошо, я Вас неправильно понял.

   
 
 автор: Roo$   (04.09.2006 в 19:55)   письмо автору
 
   для: Trianon   (04.09.2006 в 17:18)
 

Я понял тебя .... Order by, говоришь? Щас попробую

   
 
 автор: Roo$   (04.09.2006 в 20:37)   письмо автору
 
   для: Trianon   (04.09.2006 в 17:18)
 


SELECT *  
FROM tb_name  
ORDER BY stolbec DESC


А если мне надо не по одному столбцу а по всем строкам..

   
 
 автор: Trianon   (04.09.2006 в 20:44)   письмо автору
 
   для: Roo$   (04.09.2006 в 20:37)
 

в ORDER BY можно перечислить не один столбец. Хотя обычно это излишне.

   
 
 автор: Roo$   (04.09.2006 в 20:46)   письмо автору
 
   для: Roo$   (04.09.2006 в 20:37)
 

Я понял!!!!!! Я буду выводить инфу по времени.... Начиная с самого конца

SELECT *   
FROM tb_name   
ORDER BY puttime DESC

   
 
 автор: Roo$   (04.09.2006 в 21:09)   письмо автору
 
   для: Roo$   (04.09.2006 в 17:15)
 

С этим я уже разобрался. Теперь помогите пож. со страничками в гостевой книге. Мне нужно чтобы отображались на каждой страничке по 15 сообщений. Странички отображались следующим образом 1 2 3 ... n n n
где n n n - это последние странички.
Как или с чего начать мне? Все сообщения хронятся в БД:


CREATE TABLE `guestbook` (
  `id_msg` int(8) NOT NULL auto_increment,
  `name` text NOT NULL,
  `privat` tinytext NOT NULL,
  `msg` mediumtext NOT NULL,
  `add` longtext,
  `puttime` datetime NOT NULL default '0000-00-00 00:00:00',
  `hide` enum('show','hide') NOT NULL default 'show',
  PRIMARY KEY  (`id_msg`)
) TYPE=MyISAM;

   
 
 автор: Trianon   (04.09.2006 в 21:28)   письмо автору
 
   для: Roo$   (04.09.2006 в 21:09)
 

смотрите поиском "постраничная навигация"
Темы были и тут, и в задачах.

   
 
 автор: Roo$   (05.09.2006 в 00:00)   письмо автору
 
   для: Trianon   (04.09.2006 в 21:28)
 

Нашел то что мне надо... Сделал я навигацию. Но возник следующий вопро. Как мне объединить эти две строчки?


$result = mysql_query("SELECT * FROM guestbook LIMIT $start, $num");
$result = mysql_query("SELECT * FROM guestbook ORDER BY puttime DESC");

   
 
 автор: Владимир22   (05.09.2006 в 00:09)   письмо автору
 
   для: Roo$   (05.09.2006 в 00:00)
 

$result = mysql_query("SELECT * FROM guestbook SELECT * FROM guestbook ORDER BY puttime DESC LIMIT $start, $num");

   
 
 автор: Roo$   (05.09.2006 в 00:27)   письмо автору
 
   для: Владимир22   (05.09.2006 в 00:09)
 

Не работает

   
 
 автор: Trianon   (05.09.2006 в 09:25)   письмо автору
 
   для: Владимир22   (05.09.2006 в 00:09)
 


$result = mysql_query( "SELECT * FROM guestbook ORDER BY puttime DESC LIMIT $start, $num"); 

   
 
 автор: Roo$   (05.09.2006 в 09:52)   письмо автору
 
   для: Trianon   (05.09.2006 в 09:25)
 

Большое спасибо за помощь...заработало.
Теперь у меня возник следующий вопрос. Сделал постраничную навигацию так как написанно у вас в примере. Но когда я перехожу я на последнюю страничку у меня выдает следующее.... (см. screen). Поидее 2006-09-04 12:46:14 это последняя запись и после нее ничего не надо уже выводить, а програмима проганяет ее до самого конца страницы (n-раз)

   
 
 автор: Roo$   (05.09.2006 в 09:55)   письмо автору
5.8 Кб
 
   для: Roo$   (05.09.2006 в 09:52)
 

Вот код программы.

   
 
 автор: Trianon   (05.09.2006 в 10:12)   письмо автору
 
   для: Roo$   (05.09.2006 в 09:52)
 

Извините, это не мой пример. Я бы такого не написал.

   
 
 автор: Trianon   (05.09.2006 в 11:10)   письмо автору
 
   для: Roo$   (05.09.2006 в 09:52)
 

могу разве что посоветовать 77-ю строку

for($i = 0; $i < $num; $i++) 

изменить так:

for($i = 0, $num = count($postrow); $i < $num; $i++) 

   
 
 автор: Roo$   (05.09.2006 в 11:39)   письмо автору
 
   для: Trianon   (05.09.2006 в 11:10)
 

Попробывал как ты мне посоветовал. Намного лучше но...всеравно не так... Выводится на каждой странице в самомо конце по одной пустой таблице

   
 
 автор: Trianon   (05.09.2006 в 11:42)   письмо автору
 
   для: Roo$   (05.09.2006 в 11:39)
 

нуль не учел.

for($i = 0, $num = count($postrow)-1; $i < $num; $i++)  

   
 
 автор: Roo$   (05.09.2006 в 11:45)   письмо автору
 
   для: Trianon   (05.09.2006 в 11:42)
 

Работает!!!!!!!Огромное С П А С И Б О.

   
 
 автор: Roo$   (05.09.2006 в 20:20)   письмо автору
 
   для: Roo$   (04.09.2006 в 17:15)
 

У меня возник следующий вопрос. У меня в гостев.книге сообщения могут добавлять только зарегестр. пользователи. Я делаю приват.сообщения. И мне нужно сделать проверку типо такого:
Если в калонке privat БД стоит надпись ALL, то эти сообщения видны всем пользователям, а если стоит ник пользователя то это сообщение видит только он + все которые ALL.

   
 
 автор: cheops   (05.09.2006 в 21:30)   письмо автору
 
   для: Roo$   (05.09.2006 в 20:20)
 

А в чём возникает сложность?

PS Под новые вопросы лучше заводить новые темы?

   
 
 автор: Roo$   (05.09.2006 в 21:37)   письмо автору
 
   для: cheops   (05.09.2006 в 21:30)
 

Я просто запутался в проверке.... Подскажите пожалуйсто.....


$ulogin=$HTTP_COOKIE_VARS["name"]; //имя зарегестриров. польз. которое хранится в куках.

if ($ulogin=='Admin')
{
$query = "SELECT * FROM guestbook "; //admin читает все сообщения
$usr = mysql_query($query);
}
else
{
$query = "SELECT * FROM guestbook WHERE privat='$ulogin'"; //Сообщение читает только тот //польз. кому было оно послано
$usr = mysql_query($query);
}


А у меня есть еще сообщение которые должны быть видны всем


$query = "SELECT * FROM guestbook WHERE privat='all'";
$usr = mysql_query($query);


Как мне их вывести. Если так то под adminom они будут дублироваться

P/S/ Я ведь же это все делаю в гостевой книге? Зачем мне нужно заводить новую тему?

   
 
 автор: Roo$   (05.09.2006 в 21:44)   письмо автору
 
   для: Roo$   (05.09.2006 в 21:37)
 

Я думал так, но ничего не выходит


if ($ulogin=='Admin')
{
$query = "SELECT * FROM guestbook ";
$usr = mysql_query($query);
}
else
{
$query = "SELECT * FROM guestbook  WHERE privat='all' WHERE privat='$ulogin'";
$usr = mysql_query($query);
}


Под Админом все нормально а под польз. вообще ничего не выводит

   
 
 автор: cheops   (05.09.2006 в 21:50)   письмо автору
 
   для: Roo$   (05.09.2006 в 21:37)
 

А вы объедините условия полного прочтения и приватных сообщений
<?php
$ulogin
=$HTTP_COOKIE_VARS["name"]; //имя зарегестриров. польз. которое хранится в куках. 

if ($ulogin=='Admin'

$query "SELECT * FROM guestbook "//admin читает все сообщения 
$usr mysql_query($query); 

else 

$query "SELECT * FROM guestbook WHERE privat='$ulogin' OR privat='all'"//Сообщение читает только тот //польз. кому было оно послано 
$usr mysql_query($query); 
}
?>

Нет сообщения администратора и пользовательские сообщения не будут смешиваться.

PS Только не советую вам авторизацию проводить по содержимому cookie, любой пользователь, который запишет себе в cookie имя администратора получит доступ ко всем сообщениям, даже не зная пароля администратора.
PPS Сообщения у администратора дублироваться не будут
PPPS Проблема всё равно новая, а сообщение уже достаточно гомоздкое - даже если человек захочет вам ответить, его может отпугнуть количество сообщений в теме, которые нужно читать и обдумывать, прежде чем писать свой пост.

   
 
 автор: Roo$   (05.09.2006 в 22:21)   письмо автору
 
   для: cheops   (05.09.2006 в 21:50)
 

Большое спасибо cheops. Ты мне очень сильно помог.
P/S/:Прислушаюсь к твоим советам

   
Rambler's Top100
вверх

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