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

Форум PHP

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

 

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

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

тема: Проблемы с выводом комментариев
 
 автор: Booblik   (31.03.2007 в 12:17)   письмо автору
 
 

Комментарии записываются в файл по строчке на комментарий.
Вот так выглядит строка: |дата||автор||сообщение|

Привожу скрипт выведения комментариев.

 
<? 
//Проверяем, есть ли комментарии.
if(file_exists("test.kom"))
{
$file_koment =  file("test.kom");
$num_str count($file_koment); 
}
else
{
$num_str 0;
}

//Если комментарии есть
if($num_str!==0)
{
     
//Присваиваем
    
for ($i 0$i $num_str$i++)
    {
    
$f_msg file("test.kom");
    
$date[$i] = eregi_replace("\|(.*)\|\|(.*)\|\|(.*)\|","\\1",$f_msg[$i]); 
    
$autor[$i] = eregi_replace("\|(.*)\|\|(.*)\|\|(.*)\|","\\2",$f_msg[$i]);
    
$msg[$i] = eregi_replace("\|(.*)\|\|(.*)\|\|(.*)\|","\\3",$f_msg[$i]);
    }
    
    
//Выводим
    
for ($i 0$i $num_str$i++)
    {
    print(
"<br><hr size=\"1\">");
    print(
"Дата: $date[$i]<br>");
    print(
"Автор: $autor[$i]<br>");
    print(
"Сообщение: $msg[$i]<br>");
    }
}
?>


Проблема: Нужно чтобы последнее сообщение было вначале.

   
 
 автор: cheops   (31.03.2007 в 13:58)   письмо автору
 
   для: Booblik   (31.03.2007 в 12:17)
 

Замените цикл
<?php
    
//Выводим 
    
for ($i 0$i $num_str$i++) 
    { 
    print(
"<br><hr size=\"1\">"); 
    print(
"Дата: $date[$i]<br>"); 
    print(
"Автор: $autor[$i]<br>"); 
    print(
"Сообщение: $msg[$i]<br>"); 
    }
?>

на
<?php
    
//Выводим 
    
for ($i $num_str 1$i $i--) 
    { 
    print(
"<br><hr size=\"1\">"); 
    print(
"Дата: $date[$i]<br>"); 
    print(
"Автор: $autor[$i]<br>"); 
    print(
"Сообщение: $msg[$i]<br>"); 
    }
?>

   
 
 автор: Nemesis   (31.03.2007 в 13:59)   письмо автору
 
   для: Booblik   (31.03.2007 в 12:17)
 

Можно применить array_reverse к $file_koment = file("test.kom");

$file_koment =  array_reverse(file("test.kom")); 

   
 
 автор: Booblik   (01.04.2007 в 05:22)   письмо автору
 
   для: Nemesis   (31.03.2007 в 13:59)
 

Спасибо вам, всё получилось, вот только первый комментарий не показывался, но я исправил.

А может вы мне заодно подскажите, как сделать чтобы выводилось по 10 комментариев?
И были ссылки на страницы комментариев. Я пока только додумался как сделать ссылки следующая и предыдущая страница :) а вот чтобы число страниц отображалось не могу…

   
 
 автор: Booblik   (02.04.2007 в 00:53)   письмо автору
 
   для: Booblik   (01.04.2007 в 05:22)
 

help me piease :(

   
 
 автор: Nemesis   (02.04.2007 в 09:02)   письмо автору
 
   для: Booblik   (02.04.2007 в 00:53)
 

Несколько тем вниз, там был топик про постраничную навигацию с кучей примеров, не говоря про други десятки похожих тем на этом форуме.

   
 
 автор: KPETuH   (02.04.2007 в 11:10)   письмо автору
 
   для: Booblik   (01.04.2007 в 05:22)
 


<?
##########################
#                        #
# Постраничная навигация #
#                        #
# Представлены два вида  #
#                        #
##########################

# Количество на одной странице
$kolvo=2;
# Читаем файл
$text=file('text.txt');
if (
$kolvo>count($text)) $kolvo=count($text);
# Определяем кол-во страниц
$nomber=(int)(count($text)/$kolvo);
if (((float)(
count($text)/$kolvo)-$nomber)!=0$nomber++;
//echo $nomber;
# Проверяем передана ли страница
if(isset($_GET['page'])) $page $_GET['page'];
  else 
$page 1;
# Определяем начало или конец
$start = ($page 1)*$kolvo 1;
$end $page*$kolvo
# Выводим содержимое страницы
for ($i=$start-1;$i<=$end-1;$i++)
{
    if (
$i>count($text)) break;
    echo 
$text[$i]."<br>";
}
# Постраничная навигация №1
if ($page>2$nazad="<a href=$_SERVER[PHP_SELF]?page=".($page-1)."><</a>&nbsp";
if (
$page<$nomber-1$dalee="&nbsp<a href=$_SERVER[PHP_SELF]?page=".($page+1).">></a>";
if (
$page-1>0$pageleft="<a href=$_SERVER[PHP_SELF]?page=".($page-1).">[".(($page-2)*$kolvo 1)."..".(($page-1)*$kolvo)."]</a>&nbsp";
if (
$page+1<$nomber$pageright="<a href=$_SERVER[PHP_SELF]?page=".($page+1).">[".(($page)*$kolvo 1)."..".(($page+1)*$kolvo)."]</a>&nbsp";
if (
$page+1==$nomber$pageright="<a href=$_SERVER[PHP_SELF]?page=".($page+1).">[".(($page)*$kolvo 1)."..".count($text)."]</a>&nbsp";
if (
$page==$nomber)
{
    
$curent="&nbsp[".(($page-1)*$kolvo 1)."..".count($text)."]&nbsp";
}
else
{
    
$curent="&nbsp[".(($page-1)*$kolvo 1)."..".(($page)*$kolvo)."]&nbsp";
}
echo 
$nazad.$pageleft.$curent.$pageright.$dalee;

# Постраничная навигация №2
/*for ($i=0;$i<$nomber;$i++)
{
    # Выделение жирным шрифтом текущей страницы
    if ($i+1==$page)
    {
         if ($i==$nomber-1 )
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1)."><b>[".($i*$kolvo + 1)."..".count($text)."]</b></a>";
        }
        else
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1)."><b>[".($i*$kolvo + 1)."..".(($i+1)*$kolvo)."]</b></a>&nbsp";
        }
    }
    else
    # Обычные страницы
    {
        if ($i==$nomber-1 )
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1).">[".($i*$kolvo + 1)."..".count($text)."]</a>";
        }
        else
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1).">[".($i*$kolvo + 1)."..".(($i+1)*$kolvo)."]</a>&nbsp";
        }
    }
} */
?>

   
Rambler's Top100
вверх

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