Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: форум сортировка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
aolaaoo
Отправлено: 01 Июля, 2012 - 02:19:36
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




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

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


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $num =@$_GET['num'];
  3. $page =@$_GET['page'];
  4. require("params.php");
  5. ?>
  6. <html>
  7. <head>
  8. <title>Parker Laboratory</title>
  9. <meta http-equiv="refresh" content="text/html; charset=windows-1251">
  10. <link href="style.css" rel="stylesheet" type="text/css" />
  11. </head>
  12. <BODY bgColor=#FFFFFF leftMargin=0 text=#000000 topMargin=0 marginheight="0"
  13. marginwidth="0">
  14. <table border=0 cellspacing=0 cellpadding=0 style='border-collapse:collapse;
  15. border:none;mso-border-alt:solid windowtext .0pt;mso-padding-alt:0cm 0pt 0cm 0pt' width="100%">
  16. <tr>
  17. <td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">
  18. <br>
  19. <div align="center"><b><font size="3" face="Arial, Helvetica, sans-serif">Поиск попутчиков</font></b></div>
  20. </td>
  21. </tr>
  22. <tr>
  23. <td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">
  24. <br>
  25. <div align="center"><font face="Arial, Helvetica, sans-serif"><a href="index.php">Список тем</a> | <a href="index.php?ales=newtopic">Создать тему</a> | </font></div>
  26. </td>
  27. </tr>
  28. <tr>
  29. <td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">
  30. <hr width="90%" size="1" color = "#000000">
  31. </td>
  32. </tr>
  33. <tr>
  34. <td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="100%">
  35. <div align="center">
  36. <table width="90%" border="0" align="center">
  37. <tr bgcolor="#E5E5E5" height=35 valign=top>
  38. <td width="15%">
  39. <div align="left">Автор</div>
  40. </td>
  41. <td width="45%">
  42. <div align="left">Название&nbsp;темы</div>
  43. </td>
  44. <td width="10%">
  45. <div align="left">Число ответов</div>
  46. </td>
  47. <td width="20%">
  48. <div align="left">Дата последнего сообщения</div>
  49. </td>
  50. </tr>
  51. <?
  52. $nums = 80;
  53. $openfile=@file("topics.dat");
  54. $strings=count($openfile);
  55. $divide=$strings/$nums;
  56. $pages=intval($divide);
  57. print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">Страницы: ";
  58. if($strings <= $num)
  59. print "1</font>";
  60. else {
  61. if($divide==$pages)
  62. $lol=$pages;
  63. else
  64. $lol=$pages+1;
  65. for($k=1; $k<=$lol; $k++) {
  66. if($k!=$page)
  67. print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><a id=list href=index.php?page=$k>$k</a></font> ";
  68. else
  69. print "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><b>$k</b> </font>";
  70. }
  71. }
  72. print "<HR SIZE = '1' COLOR = '#000000' width='90%'>";
  73. if(!isset($page))
  74. $page=1;
  75. $q=$page-1;
  76. $qq=$nums*$q;
  77. $up=$strings-$qq;
  78. $down=$up-$nums;
  79. for($i=$up-1; $i>=$down; $i--) {
  80. $k=$i+1;
  81. @list($file,$date,$name,$mail,$url,$topic,$msg)=split("::",$openfile[$i]);
  82. if ($k > 0)
  83. {$avname=$name;print "
  84. <tr height=30 bgcolor='#F5F5F5'>
  85. <td width='10%'>$avname</B></td>";
  86. $lastan = file("data/$file.dat");
  87. $countlast = count($lastan);
  88. $countlast--;
  89. @list($date,$name,$mail,$url,$msg)=explode("::", $lastan[$countlast]);
  90. $countan = file("data/$file.dat");
  91. $answers = count($countan);
  92. print "
  93. <td> <a href = 'index.php?ales=showtopic&id=$k&forumid=$file'><U>$topic</U></td>
  94. <td>$answers</td>";
  95. if ($name =='')
  96. print "<td width='17%' valign=top align=left>Сегодня</td><tr>";
  97. if ($name !='')
  98. print "<td width='17%'>$date<br>Посл.&nbsp;сообщение:&nbsp;<i>$name</i></td>
  99. </tr>";
  100. }
  101. }
  102. if($down > 0)
  103. $param = $down+1;
  104. else
  105. $param = 1;
  106. print "<BR><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">
  107. Всего тем: $strings</font>";
  108. ?>
  109. </table>
  110. </div>
  111. </td>
  112. </tr>
  113. <tr>
  114. <td valign=top style='border:none;padding:0cm 0pt 0cm 0pt' height="15" width="1%">&nbsp;</td>
  115. </tr>
  116. </table>
  117. </body>
  118. </html><?PHP require_once("include_options.php");?>
 
 Top
armancho7777777 Супермодератор
Отправлено: 01 Июля, 2012 - 02:23:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $data = array(
  3.         array(
  4.         'name' => 'Тема 1',
  5.         'mess' => 'Сообщение 1',
  6.         'date_add' => '01.01.2011'
  7.         ),
  8.         array(
  9.         'name' => 'Тема 4',
  10.         'mess' => 'Сообщение 4',
  11.         'date_add' => '04.01.2011'
  12.         ),
  13.         array(
  14.         'name' => 'Тема 3',
  15.         'mess' => 'Сообщение 3',
  16.         'date_add' => '03.01.2011'
  17.         ),
  18.         array(
  19.         'name' => 'Тема 2',
  20.         'mess' => 'Сообщение 2',
  21.         'date_add' => '02.01.2011'
  22.         ),
  23.         array(
  24.         'name' => 'Тема 5',
  25.         'mess' => 'Сообщение 5',
  26.         'date_add' => '05.01.2011'
  27.         ),
  28. );
  29.  
  30.  
  31.  
  32. function collback($a, $b)
  33. {
  34.        
  35.         $a = mktime(
  36.               date('H', strtotime($a['date_add'])),
  37.                   date('i', strtotime($a['date_add'])),
  38.                   date('s', strtotime($a['date_add'])),
  39.                   date('n', strtotime($a['date_add'])),
  40.                   date('j', strtotime($a['date_add'])),
  41.                   date('Y', strtotime($a['date_add']))
  42.                   );
  43.                  
  44.         $b = mktime(
  45.               date('H', strtotime($b['date_add'])),
  46.                   date('i', strtotime($b['date_add'])),
  47.                   date('s', strtotime($b['date_add'])),
  48.                   date('n', strtotime($b['date_add'])),
  49.                   date('j', strtotime($b['date_add'])),
  50.                   date('Y', strtotime($b['date_add']))
  51.                   );
  52.        
  53.     if ($a == $b) return 0;
  54.     return ($a > $b) ? -1 : 1;
  55. }
  56.  
  57.  
  58. usort($data, "collback");
  59.  
  60.  
  61. echo '<pre>';
  62. print_r($data);
  63.  


Понасаздавали тем...

(Отредактировано автором: 01 Июля, 2012 - 02:46:59)

 
 Top
aolaaoo
Отправлено: 01 Июля, 2012 - 12:27:36
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




ну а если тем 100, как их автоматически записывать в $data из файла ..?
 
 Top
Wol_fi
Отправлено: 01 Июля, 2012 - 13:32:17
Post Id


Новичок


Покинул форум
Сообщений всего: 60
Дата рег-ции: Февр. 2012  


Помог: 2 раз(а)




aolaaoo пишет:
ну а если тем 100, как их автоматически записывать в $data из файла ..?

Мануал? не , не слышал...
$data = file_get_contents('путь к файлу') - считает файл в строку; если же нужно считывать файл по строчно - то тут уже fopen('путь к файлу') - в вашем скрипте есть пример работы с ним, а если уж не получается из одного формата данных привести к другому, то забудьте про программирование, скучная это штука...
 
 Top
armancho7777777 Супермодератор
Отправлено: 01 Июля, 2012 - 17:07:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Wol_fi пишет:
Мануал? не , не слышал...

Вы сами-то о нём слышали?
Вопрос был:
aolaaoo пишет:
ну а если тем 100, как их автоматически записывать в $data из файла ..?

И Ваш ответ:
Wol_fi пишет:
file_get_contents('путь к файлу') - считает файл в строку

P.S. Дальше цитировать не буду.
(Добавление)
По поводу поставленного вопроса:
aolaaoo пишет:
ну а если тем 100, как их автоматически записывать в $data из файла ..?


Сериализуйте (serialize()) формированный массив после получения значений полей формы,
и записывайте в начало файла (не забываем про перевод строки "\n"). Тогда Вам не придётся сортировать в будущем и + можно получать из файла спакойно только часть статей.
А читать файл по строчно (не функцией file() и не file_get_contents())
попутно декодируя (unserialize()) сериализованную строку и добавляя полученный массив в конец массива $data
Если же вы захотите получить часть тем, то просто запоминайте в сессию позицию последего чтения, для начальной позиции следующего..
Писать код не буду. Развивайтесь.
Все нужные функции для работы с файловой системой Вы можете найти тут:
http://php.su/functions/?cat=filesystem
Ознакомтесь со всеми функциями, проанализируйте какие фунции Вам помогут в решении задачи и напишите код.
Можете сюда скинуть, я гляну.

P.S.
Так же, желательно 1 числа каждого месяца создавать новый файл для записи тем.
Ну и конечно тогда папку на каждый год (можно учесть ещё и квартал).
В названия файлов и папок должны записываться даты с каким-нибудь префиксом (tem-01012012).

Или можно вообще, файл создавать каждые 50 - 100 тем проверяя перед этим сколько строк в файле.
А для того, чтобы получить нужный файл, берёте первое число и текущие месяц и год, + префикс
и получаете файл для дальнейшего чтения,
а если его нет то создаёте и возвращаете пустой массив.
А для учёта месяца как и для учёта года создавать папку.

(Отредактировано автором: 01 Июля, 2012 - 20:34:26)

 
 Top
aolaaoo
Отправлено: 01 Июля, 2012 - 20:01:05
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




ой... спасибо.. буду пробовать..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB