|
|
|
| этот код выводит названия тем форума из файла (не из базы данных)
Может вы подскажете, как реализовать функциональность, которая позволит выводить темы в определенном порядке (а именно по дате последнего сообщения в ней)?
То есть, если 10 тем, и в последний теме написали сообщение, эта тема становится первая в порядке тем ..
<?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">Название темы</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>Посл. сообщение: <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%"> </td>
</tr>
</table>
</body>
</html><?php require_once("include_options.php");?> | |
|
|
|
|
|
|
|
для: aolaaoo
(01.07.2012 в 00:06)
| | попробуйте вместо
@list($file,$date,$name,$mail,$url,$topic,$msg)=split("::",$openfile[$i]);
|
что то вроде этого:
$mas[$i][] = explode("::",$openfile[$i]);
|
а затем отсортировать двумерный массив по нужному столбцу
пример сортировки:
function compare($v1, $v2)
{
if ($v1['prio'] == $v2['prio']) return 0;
return ($v1['prio'] < $v2['prio']) ? -1 : 1;
}
$arr = array(
1 => array ( 'name' => 'mas1', 'prio' => '100'),
2 => array ( 'name' => 'mas2', 'prio' => '130'),
3 => array ( 'name' => 'mas3', 'prio' => '70'),
4 => array ( 'name' => 'mas4', 'prio' => '101'),
5 => array ( 'name' => 'mas5', 'prio' => '80'),
6 => array ( 'name' => 'mas6', 'prio' => '20'),
7 => array ( 'name' => 'mas7', 'prio' => '150')
);
usort($arr, 'compare');
|
| |
|
|
|
|
|
|
|
для: Jackson
(01.07.2012 в 00:30)
| | а как правильно сортировать и вывести?
что будет вместо поля prio ...
это такое новое для меня .. помогите .. | |
|
|
|
|
|
|
|
для: aolaaoo
(01.07.2012 в 00:54)
| | как записать мои результаты из файла в переменную $ arr ?? | |
|
|
|
|
|
|
|
для: aolaaoo
(01.07.2012 в 00:55)
| | массив $arr в данном случае будет $mas[i][k] - который содержит в i-той строчке строчку k из вашего файла. А вместо 'prio' подставить индекс, по которому нужно отсортировать (насколько я понял - 'date')
Имейте ввиду так же, что после explode массив не будет ассоциативным, а 'date' будет идти с индексом [1] | |
|
|
|
|
|
|
|
для: Jackson
(01.07.2012 в 11:43)
| | ой, мне еще учиться и учиться ..
я нифига не понимаю как оно практически .. | |
|
|
|
|
|
|
|
для: aolaaoo
(01.07.2012 в 21:17)
| | и здесь
openfile=@file("topics.dat");
сохраняются только названия тем, а сообщение этих тем хранятся в другом файле:
$lastan = file("data/$file.dat");
это здесь будет неуместно наверное:
попробуйте вместо
@list($file,$date,$name,$mail,$url,$topic,$msg)=split("::",$openfile[$i]);
|
что то вроде этого:
$mas[$i][] = explode("::",$openfile[$i]);
|
| |
|
|
|