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

Форум MySQL

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

 

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

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

тема: Проблема с форумом - выборка из базы данных!
 
 автор: TrunK   (27.05.2005 в 15:53)   письмо автору
 
 


$a = "select id_theme from themes where id_forum='$id_forum' ORDER by time DESC ; ";
while ($l < $q)
{
        $b = mysql_query($a);
        $b1 = mysql_fetch_array($b);
        $i = $b1['id_theme'];
        echo “$i <br>
        $c = "select*from themes where id_theme='$i' ; ";
        $c1 = mysql_query($c);
        $c2 = mysql_fetch_array($c1);
        $author = $c2['author'];
        $l = $l + 1;
}
Это скрипт по выводу тем. Вот это скрипт выводит только одно (последнее) значение… Как сделать чтобы каждый селект выводил следующее значение?

   
 
 автор: TrunK   (27.05.2005 в 16:05)   письмо автору
 
   для: TrunK   (27.05.2005 в 15:53)
 

И ещё... Как в PHP получить текущую дату? Чтобы потом её сравнить с датой сообщения!

   
 
 автор: cheops   (27.05.2005 в 19:06)   письмо автору
 
   для: TrunK   (27.05.2005 в 16:05)
 

Получить текущую дату можно при помощи функции time(), хотя при работе с MySQL удобнее воспользоваться встроенной функцией MySQL - NOW().

   
 
 автор: TrunK   (27.05.2005 в 19:30)   письмо автору
 
   для: cheops   (27.05.2005 в 19:06)
 

Тоесть, я могу присвоить переменной значение time() ?

$per = time() ; 

да ?

   
 
 автор: cheops   (27.05.2005 в 19:36)   письмо автору
 
   для: TrunK   (27.05.2005 в 19:30)
 

Да, но функция time() возвращает время в секундах с 1 января 1970 года, если вам необходимо другое представление - необходимо отформатировать его при помощи функции date.

   
 
 автор: TrunK   (27.05.2005 в 19:40)   письмо автору
 
   для: cheops   (27.05.2005 в 19:36)
 

А можно об этом подробней... на примере жалательно! И ещё, мне от текущей даты отнять дату из БД в формате 00-00-0000 00:00:00 и получить значение в секундах! Как это сделать?

   
 
 автор: TrunK   (27.05.2005 в 20:37)   письмо автору
 
   для: TrunK   (27.05.2005 в 19:40)
 


$a= "select id_theme from themes where id_forum='$id_forum' ORDER by time DESC";
$b = mysql_query($a);
$b1 = mysql_fetch_array($b);
while ($l != mysql_num_rows($b))
{
        $i = $b1['id_theme'];
        echo" $i <br> ";
        $c = "select*from themes where id_theme='$i' ; ";
        $c1 = mysql_query($c);
        $c2 = mysql_fetch_array($c1);
        $author = $c2['author'];
        $l = $l + 1;
}

Скажите что тут не правильно?! Оно выдаёт всегда одно и тоже значение

   
 
 автор: cheops   (28.05.2005 в 13:25)   письмо автору
 
   для: TrunK   (27.05.2005 в 20:37)
 

Строка
<?php
  $i 
$b1['id_theme'];
?>

на каждом цикле будет давать один и тот же результат, и запрос $c будет давать один и тот же ответ - у вас так задумано? Скажите, что вам требуется - вместе подумаем как это реализовать....

   
 
 автор: TrunK   (28.05.2005 в 13:43)   письмо автору
 
   для: cheops   (28.05.2005 в 13:25)
 

Это форум! Мне надо вывести список тем и авторов. И чтобы темы выстраивались относительно даты последнего сообщения в них! Тоесть как у вас на форуме...

   
 
 автор: cheops   (28.05.2005 в 13:52)   письмо автору
 
   для: TrunK   (28.05.2005 в 13:43)
 

Лучше поступить следующим образом
<?php
  
// Формируем SQL-запрос
  
$query "SELECT id_theme, author 
            FROM themes
            WHERE id_forum='
$id_forum
            ORDER BY time DESC"

  
// Выполняем SQL-запрос
  
$thm mysql_query($query); 
  
// Смотрим - нет ли ошибки при выполнении SQL-запроса
  
if(!$thm) exit("Ошибка в синтаксисе SQL-запроса ".mysql_error());
  
// Если имеется хоть одна запись - выводим
  
if(mysql_num_rows($thm) > 0)
  {
    
// Запускаем цикл
    
while ($theme mysql_fetch_array($thm)) 
    { 
        echo 
$theme[id_theme] - $theme[author] <br>"
    }
  }
?>

Если id_theme и author находится в одной таблице - достаточно одного SQL-запроса.

   
 
 автор: Loki   (27.05.2005 в 22:54)   письмо автору
 
   для: TrunK   (27.05.2005 в 19:40)
 

Запрос должен выглядеть так:

SELECT UNIX_TIMESTAMP(date) AS date FROM table;

Ну а потом все просто:

<?
$time
=time()-$time_from_sql //разница в секундах между текущим временем и записьбю в базе
?>

   
 
 автор: cheops   (28.05.2005 в 13:30)   письмо автору
 
   для: TrunK   (27.05.2005 в 19:40)
 

С этими функциями вы можете ознакомится в нашем справочнике на сайте - там же вы найдёте примеры их использования

http://www.softtime.ru/dic/id_dic=193&id_group=7

   
 
 автор: cheops   (27.05.2005 в 19:05)   письмо автору
 
   для: TrunK   (27.05.2005 в 15:53)
 

Нужно так
<?php
"select id_theme from themes where id_forum='$id_forum' ORDER by time DESC"
$b mysql_query($a); 
while (
$b1 mysql_fetch_array($b); ) 

        
$i $b1['id_theme']; 
        echo 
“$i <br
        
$c "select*from themes where id_theme='$i' ; "
        
$c1 mysql_query($c); 
        
$c2 mysql_fetch_array($c1); 
        
$author $c2['author']; 
        
$l $l 1
}
?>


PS Темы посвящённые MySQL лучше сразу помещать в соответствующем разделе форума http://www.softtime.ru/forum/index.php?id_forum=3

   
 
 автор: Loki   (27.05.2005 в 19:15)   письмо автору
 
   для: TrunK   (27.05.2005 в 15:53)
 

Ну вот... постил, а тут уже все объяснили:)

   
Rambler's Top100
вверх

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