Ответы в гостевой
Желательно по подробнее ну можно и с примером :)
Заранее благодарен!
Потом выбирать для каждого сообщения, сообщения для которого PID==ID
Нужно для каждого сообщения хранить не только ID, но и ID сообщения, на который был отдан ответ. (PID)
Потом выбирать для каждого сообщения, сообщения для которого PID==ID
Я так понял нужно:
1. Сделать выборку ID сообщения
2. Далее присвоить ему PID
3. Добавлять ответ туда где PID==ID
Я правильно понял?
У тебя есть сообщение, которое не является ответом. У него PID=0. Допустим у него ID=12.
Во время ответа, ты передаешь ID сообщения, на которое пишется ответ - 12
Ты добавляешь новое сообщение в базу, у него PID уже не 0, а 12.
В итоге имеешь следующее:
12 0 ....
13 12 ....
Во время вывода, выбираешь корневые сообщения - это те у которых PID==0.
Потом, для каждого корневого сообщения, рекурсивно, получаешь всех потомков - это те сообщения, у которых PID==UD
Я достаточно сумбурно объяснил, тебе нужно прочитать про древовидные структуры.
Вот:
http://www.codenet.ru/db/other/trees/index.php
Нет :)
У тебя есть сообщение, которое не является ответом. У него PID=0. Допустим у него ID=12.
Во время ответа, ты передаешь ID сообщения, на которое пишется ответ - 12
Ты добавляешь новое сообщение в базу, у него PID уже не 0, а 12.
А не проще ли добавить в таблицу содержащую сообщения из гостевой 2 поля: reply и replytime, в которых все это хозяйство и хранить, а не привязывать данные из одно таблицы к другой?
А не проще ли добавить в таблицу содержащую сообщения из гостевой 2 поля: reply и replytime, в которых все это хозяйство и хранить, а не привязывать данные из одно таблицы к другой?
Никто и не говорит, что эта разные таблицы. Классическое дерево:
ID записи | ID потомка | Данные
Никто и не говорит, что эта разные таблицы. Классическое дерево:
ID записи | ID потомка | Данные
Короче я почти понял как составлять деревья.
Но вот запутался в ID-записи ID-потомка
Не понял принципа присвоения.
Вот код:
function sql_insert($parent_id, $cat_name) {
$query = "INSERT INTO catalogs(parent_id, cat_name) VALUES('".(int)$parent_id."', '$cat_name')";
mysql_query($query) or die(mysql_error());
return mysql_insert_id();
}
$link=mysql_connect("localhost", "myuser", "pass");
$db=mysql_select_db("trees");
$level[1][0] = sql_insert("0", "Программирование");
$level[2][0] = sql_insert($level[1][0], "Веб-программирование");
$level[2][1] = sql_insert($level[1][0], "Системное программирование");
$level[3][0] = sql_insert($level[2][1], "PHP");
$level[3][1] = sql_insert($level[2][1], "Perl");
$level[3][2] = sql_insert($level[2][1], "C++");
$level[4][0] = sql_insert($level[3][2], "Visual C++");
$level[3][3] = sql_insert($level[2][1], "Delphi");
$level[1][1] = sql_insert("0", "Базы данных");
$level[2][2] = sql_insert($level[1][1], "MySQL");
$level[2][3] = sql_insert($level[1][1], "Oracle");
$level[2][4] = sql_insert($level[1][1], "MS Access");
function get_tree($parent_id = 0, $prefix = "")
{
global $out;
$query = "SELECT * FROM catalogs WHERE parent_id = '$parent_id'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$out .= $prefix.$row['cat_name']."
";
get_tree($row['cat_id'], $prefix.""); }
return $out;}
echo get_tree();
?>
Поясните пожалуйста часть где $level = ...
Именно в тут я и запутался что к чему должно равняться
Для меня енто сложный вопрос, чтобы самому разбираца. :)
Ну так мне кто-нить поможет или нет?
Для меня енто сложный вопрос, чтобы самому разбираца. :)
Может быть тупо и без деревьев)), но я делал так:
создал новую таблицу "Ответы", при каждом новом ответе в поле писалось IDM сообщения, на которое отвечали. Потом выбирал для каждого сообщения из табл. "Ответы" все записи, где это поле = IDM, по дате их сортировал DESC. Ну и выводил циклом.
Может быть тупо и без деревьев)), но я делал так:
создал новую таблицу "Ответы", при каждом новом ответе в поле писалось IDM сообщения, на которое отвечали. Потом выбирал для каждого сообщения из табл. "Ответы" все записи, где это поле = IDM, по дате их сортировал DESC. Ну и выводил циклом.
Почему-то мне кажется, что создавать отдельную таблицу "Ответы" как-то глупо. Можно было бы конечно так сделать, но мне хочется познать деревья MySQL, так как на одной гостевой я останавливаца не собираюсь. Далее пойдет карта сайта, форум и т.д. и ведь везде проще юзать деревья ИМХО.