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
Форумы портала PHP.SU :: Версия для печати :: Вывод ссылки вида: категория/номер
Форумы портала PHP.SU » » Вопросы новичков » Вывод ссылки вида: категория/номер

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

1. landsturm - 24 Октября, 2011 - 12:28:39 - перейти к сообщению
Здравствуйте, изучать php я начал недавно, поэтому не всё ещё поддаётся моим силам. Надеюсь на помощь. Суть такова: я пытаюсь написать скрипт форума, который бы отображал ссылки на темы в таком виде site.ru/НАЗВАНИЕ_РАЗДЕЛА/НОМЕР_Т ЕМЫ. Проблема состоит в том, что я не знаю как мне это сделать, ибо ссылки отображаются как site/НОМЕР_ТЕМЫ, то есть без названия раздела. И ещё хотелось бы узнать, как для каждой категории сделать свою точку отсчёта так сказать, то есть чтобы в каждом разделе номер темы начинался от 1. Заранее благодарю за любую помощь, мне бы это очень пригодилось в дальнейшем!
2. snikers987 - 24 Октября, 2011 - 14:20:04 - перейти к сообщению
рано тебе еще форум писать.
3. Данил_123 - 24 Октября, 2011 - 14:31:44 - перейти к сообщению
Если так хочешь форум, то купи или скачай phpBB.. А так метод GET
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $forum=$_GET['forum'];
  3. $topic=$_GET['topic'];
  4. if($forum==1) echo "Главный раздел";
  5. if($topic == 1) echo "вывод ссылки вида:категория/номер ";
  6. ?>


Только то что я написал это пример.. А так надо базу подключать и столбцы вида |num|id_forum|topic_name|
4. landsturm - 24 Октября, 2011 - 14:38:50 - перейти к сообщению
Данил_123
Не в том суть, что мне нужен форум. Я пытаюсь написать какой-то скрипт, чтобы попрактиковаться.
5. Данил_123 - 24 Октября, 2011 - 14:49:06 - перейти к сообщению
ну все же.. Пример скрипта привел(выше)
6. landsturm - 24 Октября, 2011 - 15:31:38 - перейти к сообщению
Данил_123
Большое спасибо! Можно сказать, что благодаря Вам я понял некоторые вещи и у меня получилось то, что я задумал. Вот бы ещё было неплохо, если бы Вы дали подсказку по поводу второго вопроса.
Цитата:
И ещё хотелось бы узнать, как для каждой категории сделать свою точку отсчёта так сказать, то есть чтобы в каждом разделе номер темы начинался от 1. Заранее благодарю за любую помощь, мне бы это очень пригодилось в дальнейшем!
7. Данил_123 - 24 Октября, 2011 - 17:08:46 - перейти к сообщению
если так сделать, то при новых сообщения подыматься не будет
(Добавление)
можно через
PHP:
скопировать код в буфер обмена
  1. select max(/* имя столбца */) from /* имя таблицы */;
Ну и отрегулировать скрипт записи в базу, и хорошо будет)
8. jarosluv - 24 Октября, 2011 - 21:28:12 - перейти к сообщению
landsturm пишет:
И ещё хотелось бы узнать, как для каждой категории сделать свою точку отсчёта так сказать, то есть чтобы в каждом разделе номер темы начинался от 1. Заранее благодарю за любую помощь, мне бы это очень пригодилось в дальнейшем!


Предположим, каждый раздел (section) у нас обозначается своим номером (id) 1, 2, 3, ... . Названия тем хранятся в отдельной таблице (topics), вида (id, title, topic_id, section_id). Идентификатор id в данном случае для простоты является лишь суррогатным ключём, а номером темы в разделе выступает topic_id.
При добавлении новой темы (topic), нужно проверять максимальный номер темы (topic_id) из данного раздела (section_id). Предположим, нужно узнать номер последней темы из первого раздела, тогда это делается таким запросом:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `topic_id` FROM `topics` WHERE `section_id` = 1 ORDER BY `topic_id` DESC LIMIT 0, 1

Затем, если запрос не пустой, при добавлении новой темы, просто прибавляем единичку к полученному результату, иначе это первая тема в этом разделе и её topic_id будет равен единице.
9. landsturm - 25 Октября, 2011 - 16:54:02 - перейти к сообщению
Ещё вопросик Закатив глазки
Как же сделать так, чтобы тема поднималась выше, при ответе в ней?
10. jarosluv - 25 Октября, 2011 - 17:16:22 - перейти к сообщению
Если объяснять словами, то нужно найти дату последнего сообщения в каждой теме и при выводе списка тем сортировать по полученным данным в убывающем порядке.
11. landsturm - 26 Октября, 2011 - 21:35:08 - перейти к сообщению
Собственно сделал поднятие топика при ответе в нём, а так же разбил на страницы по 5 на каждую...
Далее я приступил к выводу 3 последних ответов из топика в разделе и столкнулся с такой проблемой, что ответы выводятся, но не совсем так, как мне нужно.
Так топик выглядит изнутри:
-----------------------
ТОПИК
-1ответ
-2ответ
-3ответ
-4ответ
-----------------------
А так на странице раздела:
-----------------------
ТОПИК1
-4ответ
-3ответ
-2ответ
ТОПИК2
-4ответ
-3ответ
-2ответ
ТОПИК3
-4ответ
-3ответ
-2ответ
-----------------------

То есть ответы топика выводятся в обратном порядке. Мне же нужно добиться такого вывода трёх ответов из топика:
-----------------------
ТОПИК1
-2ответ
-3ответ
-4ответ
ТОПИК2
-2ответ
-3ответ
-4ответ
ТОПИК3
-2ответ
-3ответ
-4ответ
-----------------------

ORDER BY time DESC LIMIT 3
Что посоветуете сделать?
12. DeepVarvar - 26 Октября, 2011 - 22:01:14 - перейти к сообщению
А как вы получаете кол-во ответов?
13. landsturm - 27 Октября, 2011 - 03:45:43 - перейти к сообщению
DeepVarvar
С помощью цикла, вот код, но не думаю, что он правильный.

PHP:
скопировать код в буфер обмена
  1. $result = "SELECT id, board_id, message FROM posts WHERE board_id='$t' ORDER BY time DESC LIMIT ".$end.",".$start."";
  2. $query = mysql_query("$result") or die (mysql_error());
  3.  
  4. while ($res = mysql_fetch_array($query)){
  5.         $id = $res['id'];
  6.         echo '<br> Сообщение:', $res['message'];
  7.        
  8.                 $result1 = "SELECT id, topic, message, time FROM posts WHERE topic='$id' ORDER BY time DESC LIMIT 3";
  9.                 $query1 = mysql_query("$result1") or die (mysql_error());
  10.                 while ($res1 = mysql_fetch_array($query1)){
  11.                         echo '<br> Сообщение:', $res1['message'];
  12.                         }
  13.        
  14. }
14. salim - 27 Октября, 2011 - 06:58:32 - перейти к сообщению
landsturm вы правы - код не правильный Улыбка
Юзайте LEFT JOIN
15. landsturm - 27 Октября, 2011 - 14:02:27 - перейти к сообщению
Ну так это вообще возможно реализовать? То есть по сути мне нужно вывести 3 последних поста из БД, но только чтобы сортировалось не 3,2,1, а 1,2,3.

 

Powered by ExBB FM 1.0 RC1