|
|
|
| Это продолжение темы http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=19077
$idp я беру из адресной строки
А как вызываю — не знаю. Я эту функцию у вас на форуме нашел. А как ее надо вызывать?
Я думал, за это отвечает строка функции
Если это не так — то простите мою темноту и подскажите, как надо. | |
|
|
|
|
|
|
|
для: cheops
(17.06.2006 в 16:31)
| | Как формируется URL с параметром idp? При помощи какого кода? У вас будет только одна тема или будет их несколько?
>Если это не так — то простите мою темноту и подскажите, как надо.
Я вижу перед собой только кусок картины (замысла), не могу воспроизвести ситуацию на локальной машине, так как у меня нет полного исходного кода, поэтому мы вынуждены двигаться лишь наводящими вопросами и я не могу сразу предоставить нужный вам код (иначе бы я сразу бы так и сделал). | |
|
|
|
|
|
|
|
для: cheops
(17.06.2006 в 16:37)
| | URL с параметром idp формируется с главной страницы ajhevf index.htm, содержащей ссылки на темы, т.е. он всегда передается с idp:
<a href=read.htm?idt=".$msg['idt']."&idp=".$msg['idp']."> ".$msg['theme']."</a>
|
А на странице read.htm, выводящей первое сообщение темы, под сообщением должна выводится ветка дерева, по которой уже можно перемещаться и активное сообщение долно выделяться другим цветом, чтобы было видно, где ты находишься.
Еще раз пример, как это примерно выглядит: http://www.set.ru/srs/board/read.cgi?user=181&board=1&type=tree&start=0&topic=370&from=0&message=1913 | |
|
|
|
|
|
|
|
для: SS
(17.06.2006 в 19:56)
| | Я бы посоветовал бы следующи аглоритм: передавать три аргумента
catalogs($idt,$id_theme,$idp)
$idt - идентификатор темы
$id_theme - идентификатор сообщения, при первом вызове должно передавать первое сообщение данной темы, для которого все последующие сообщения являются потомками.
$idp - идентификатор сообщения который следует выделить
<?php
<?php
$idp = $_GET['idp'];
$id_post = $_GET['id_post'];
$idt = $_GET['idt'];
function catalogs($idp, $id_post, $idt)
{
$result=mysql_query("SELECT * FROM posts WHERE parent_post = $idp AND idt = $idt");
if(!$result) exit(mysql_error());
while($r=mysql_fetch_array($result))
{
if($r['idp'] == $id_post) $style = "<span style='margin-left : ".$r['level']."px; color: #00FF00'> ".$r['theme']."";
else $style = "<span style='margin-left : ".$r['level']."px; color: #FFFFFF'> <a href=read.htm?idt=".$r['idt']."&idp=".$r['idp'].">".$r['theme']."</a>";
echo "$style <font color='#808080'>— <b>".$r['author']."</b> — ".$r['time']." [to: ".$r['parent_post']."]</span></font>";
catalogs($r['idp']);
}
}
catalogs(0);
}
?>
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(17.06.2006 в 22:02)
| | id_post переименовал в idp_theme — это главное сообщение темы, у которого нет родительского поста, т.е. parent_post = 0, соответственно, извлекаем этот параметр не из адресной строки, а из запроса. В общем, выглядит теперь так:
<?php
$sql = "SELECT idp FROM posts WHERE idt = '$idt' AND parent_post = '0'";
list($idp_theme) = mysql_fetch_row( mysql_query($sql) );
$idp = $_GET['idp'];
$idt = $_GET['idt'];
function catalogs($idp, $idp_theme, $idt)
{
$result=mysql_query("SELECT * FROM posts WHERE parent_post = $idp AND idt = $idt");
if(!$result) exit(mysql_error());
while($r=mysql_fetch_array($result))
{
if($r['idp'] == $idp_theme) $style = "<span style='margin-left : ".$r['level']."px; color: #00FF00'> ".$r['theme']."";
else $style = "<span style='margin-left : ".$r['level']."px; color: #FFFFFF'> <a href=read.htm?idt=".$r['idt']."&idp=".$r['idp'].">".$r['theme']."</a>";
echo "$style <font color='#808080'>— <b>".$r['author']."</b> — ".$r['time']." [to: ".$r['parent_post']."]</span></font>";
catalogs($r['idp']);
}
}
catalogs(0);
}
?>
|
Однако выдает ошибку:
Warning: Missing argument 2 for catalogs(), called in read.php on line 118 and defined in read.php on line 106
Warning: Missing argument 3 for catalogs(), called in read.php on line 118 and defined in read.php on line 106
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
где:
line 106
function catalogs($idp, $idp_theme, $idt)
|
line 118 | |
|
|
|
|
|
|
|
для: SS
(18.06.2006 в 02:17)
| | Вместо catalogs(0); следует осуществлять вызов
А саму функцию давайте перепишем так
function catalogs($idp, $idp_theme, $idt)
{
$result=mysql_query("SELECT * FROM posts WHERE parent_post = $idp AND idt = $idt");
if(!$result) exit(mysql_error());
while($r=mysql_fetch_array($result))
{
if($r['idp'] == $idp_theme) $style = "<span style='margin-left : ".$r['level']."px; color: #00FF00'> ".$r['theme']."";
else $style = "<span style='margin-left : ".$r['level']."px; color: #FFFFFF'> <a href=read.htm?idt=".$r['idt']."&idp=".$r['idp'].">".$r['theme']."</a>";
echo "$style <font color='#808080'>— <b>".$r['author']."</b> — ".$r['time']." [to: ".$r['parent_post']."]</span></font>";
catalogs($r['idp'],$idp_theme, $idt);
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.06.2006 в 02:29)
| | Игорь, огромное спасибо! Очень Вам благодарен. Остаюсь постоянным посетителем вашего замечательного сайта. | |
|
|
|
|
|
|
|
для: cheops
(17.06.2006 в 16:31)
| | Вклинюсь в тему.
Помогите с логикой выборки и вывода сообщений т.е. у меня проблемы с выборкой и выводом ответа на ответ.
Вот структура таблицы:
id INT(7) PRIMARY KEY auto_increment,
f_id INT(2) NOT NULL,
parent INT(7) NOT NULL,
title VARCHAR(100) NULL,
children ENUM('y', 'n') NOT NULL DEFAULT'n',
author VARCHAR(30) NOT NULL,
post_date TIMESTAMP NOT NULL,
message TEXT NULL | |
|
|
|
|
|
|
|
для: hell_riser
(18.06.2006 в 18:21)
| | Давайте лучше в новую тему. Какого рода проблемы возникают? С SQL-запросом или с PHP-кодом? | |
|
|
|