форум пхп

aolaaoo

Новичок
этот код выводит названия тем форума из файла (не из базы данных)

Может вы подскажете, как реализовать функциональность, которая позволит выводить темы в определенном порядке (а именно по дате последнего сообщения в ней)?
То есть, если 10 тем, и в последний теме написали сообщение, эта тема становится первая в порядке тем ..

PHP:
<?php
$num =@$_GET['num'];
$page =@$_GET['page'];
require("params.php");
?>
<html>
<head>
<title>Parker Laboratory</title>
<meta http-equiv="refresh" content="text/html; charset=windows-1251">
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<BODY bgColor=#FFFFFF leftMargin=0 text=#000000 topMargin=0 marginheight="0"
marginwidth="0">
<table border=0 cellspacing=0 cellpadding=0 style='border-collapse:collapse;
border:none;mso-border-alt:solid windowtext .0pt;mso-padding-alt:0cm 0pt 0cm 0pt' width="100%">
<tr>
<td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">
<br>
<div align="center"><b><font size="3" face="Arial, Helvetica, sans-serif">Поиск попутчиков</font></b></div>
</td>
</tr>
<tr>
<td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">
<br>
<div align="center"><font face="Arial, Helvetica, sans-serif"><a href="index.php">Список тем</a> | <a href="index.php?ales=newtopic">Создать тему</a> | </font></div>
</td>
</tr>
<tr>
<td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">
<hr width="90%" size="1" color = "#000000">
</td>
</tr>
<tr>
<td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="100%">
<div align="center">
<table width="90%" border="0" align="center">
<tr bgcolor="#E5E5E5" height=35 valign=top>
<td width="15%">
<div align="left">Автор</div>
</td>
<td width="45%">
<div align="left">Название&nbsp;темы</div>
</td>
<td width="10%">
<div align="left">Число ответов</div>
</td>
<td width="20%">
<div align="left">Дата последнего сообщения</div>
</td>
</tr>
<?
$nums = 80;
$openfile=@file("topics.dat");
$strings=count($openfile);
$divide=$strings/$nums;
$pages=intval($divide);
print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">Страницы: ";
if($strings <= $num)
print "1</font>";
else {
if($divide==$pages)
$lol=$pages;
else
$lol=$pages+1;
for($k=1; $k<=$lol; $k++) {
if($k!=$page)
print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><a id=list href=index.php?page=$k>$k</a></font> ";
else
print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><b>$k</b> </font>";
}
}
print "<HR SIZE = '1' COLOR = '#000000' width='90%'>";
if(!isset($page))
$page=1;
$q=$page-1;
$qq=$nums*$q;
$up=$strings-$qq;
$down=$up-$nums;
for($i=$up-1; $i>=$down; $i--) {
$k=$i+1;
@list($file,$date,$name,$mail,$url,$topic,$msg)=split("::",$openfile[$i]);
if ($k > 0)
{$avname=$name;print "
<tr height=30 bgcolor='#F5F5F5'>
<td width='10%'>$avname</B></td>";
$lastan = file("data/$file.dat");
$countlast = count($lastan);
$countlast--;
@list($date,$name,$mail,$url,$msg)=explode("::", $lastan[$countlast]);
$countan = file("data/$file.dat");
$answers = count($countan);
print "
<td> <a href = 'index.php?ales=showtopic&id=$k&forumid=$file'><U>$topic</U></td>
<td>$answers</td>";
if ($name =='')
print "<td width='17%' valign=top align=left>Сегодня</td><tr>";
if ($name !='')
print "<td width='17%'>$date<br>Посл.&nbsp;сообщение:&nbsp;<i>$name</i></td>
</tr>";
}
}
if($down > 0)
$param = $down+1;
else
$param = 1;
print "<BR><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">
Всего тем: $strings</font>";
?>
</table>
</div>
</td>
</tr>
<tr>
<td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">&nbsp;</td>
</tr>
</table>
</body>
</html><?php require_once("include_options.php");?>
 

Фанат

oncle terrible
Команда форума
ты не мог бы отредактировать эту тему (именно отредактировать, а не создать новую) и оставить только тот код, который имеет отношение к вопросу?
Или это не твой код и ты вообще не понимаешь, что он делает?
 

aolaaoo

Новичок
PHP:
          <?

$nums = 80;
$openfile=@file("topics.dat");
$strings=count($openfile);
$divide=$strings/$nums;
$pages=intval($divide);
print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">Страницы: ";
if($strings <= $num)
print  "1</font>";
else {
if($divide==$pages)
$lol=$pages;
else
$lol=$pages+1;

for($k=1; $k<=$lol; $k++) {
 if($k!=$page)
 print  "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><a id=list href=index.php?page=$k>$k</a></font> ";
 else
 print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><b>$k</b> </font>";

}
}
 print "<HR SIZE = '1' COLOR = '#000000'  width='90%'>";

if(!isset($page))
$page=1;
$q=$page-1;
$qq=$nums*$q;
$up=$strings-$qq;
$down=$up-$nums;
for($i=$up-1; $i>=$down; $i--) {
$k=$i+1;
@list($file,$date,$name,$mail,$url,$topic,$msg)=split("::",$openfile[$i]);

if ($k > 0)
{$avname=$name;print "
<tr height=30 bgcolor='#F5F5F5'>
<td width='10%'>$avname</B></td>";



$lastan = file("data/$file.dat");
$countlast = count($lastan);
$countlast--;
@list($date,$name,$mail,$url,$msg)=explode("::", $lastan[$countlast]);
$countan = file("data/$file.dat");
$answers = count($countan);

print "
<td> <a href = 'index.php?ales=showtopic&id=$k&forumid=$file'><U>$topic</U></td>
<td>$answers</td>";

if ($name =='')
print "<td width='17%' valign=top align=left>Сегодня</td><tr>";

if ($name !='')
print "<td width='17%'>$date<br>Посл.&nbsp;сообщение:&nbsp;<i>$name</i></td>
</tr>";
}
}

 if($down > 0)
	$param = $down+1;
 else
	$param = 1;

как-то так:
PHP:
$data = array(
        array(
        'name' => 'Тема 1',
        'mess' => 'Сообщение 1',
        'date_add' => '01.01.2011'
        ),
        array(
        'name' => 'Тема 4',
        'mess' => 'Сообщение 4',
        'date_add' => '04.01.2011'
        ),
        array(
        'name' => 'Тема 3',
        'mess' => 'Сообщение 3',
        'date_add' => '03.01.2011'
        ),
        array(
        'name' => 'Тема 2',
        'mess' => 'Сообщение 2',
        'date_add' => '02.01.2011'
        ),
        array(
        'name' => 'Тема 5',
        'mess' => 'Сообщение 5',
        'date_add' => '05.01.2011'
        ),
);
 
 
 
function collback($a, $b)
{
       
        $a = mktime(
              date('H', strtotime($a['date_add'])),
                  date('i', strtotime($a['date_add'])),
                  date('s', strtotime($a['date_add'])),
                  date('n', strtotime($a['date_add'])),
                  date('j', strtotime($a['date_add'])),
                  date('Y', strtotime($a['date_add']))
                  );
                 
        $b = mktime(
              date('H', strtotime($b['date_add'])),
                  date('i', strtotime($b['date_add'])),
                  date('s', strtotime($b['date_add'])),
                  date('n', strtotime($b['date_add'])),
                  date('j', strtotime($b['date_add'])),
                  date('Y', strtotime($b['date_add']))
                  );
       
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}
 
 
usort($data, "collback");
 
 
echo '<pre>';
print_r($data);
ну а если тем 100, как их автоматически записывать в $data из файла ..?

подскажите пожалуйста, очень нужно ..
 
Сверху