Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ответы в гостевой

11K
16 мая 2005 года
Mortum
8 / / 16.05.2005
Сделал гостевую на PHP+MySQL, но никак не могу сделать добавление ответов к определенному сообщению, всячески гонял ID сообщения, но так и не понял как это сделатЬ, помогите плиз, я вот тока начинаю с этим(PHP+MySQL) дело иметь.
Желательно по подробнее ну можно и с примером :)

Заранее благодарен!
4
16 мая 2005 года
mike
3.7K / / 01.10.2002
Нужно для каждого сообщения хранить не только ID, но и ID сообщения, на который был отдан ответ. (PID)

Потом выбирать для каждого сообщения, сообщения для которого PID==ID
11K
16 мая 2005 года
Mortum
8 / / 16.05.2005
Цитата:
Originally posted by mike
Нужно для каждого сообщения хранить не только ID, но и ID сообщения, на который был отдан ответ. (PID)

Потом выбирать для каждого сообщения, сообщения для которого PID==ID



Я так понял нужно:
1. Сделать выборку ID сообщения
2. Далее присвоить ему PID
3. Добавлять ответ туда где PID==ID
Я правильно понял?

4
16 мая 2005 года
mike
3.7K / / 01.10.2002
Нет :)

У тебя есть сообщение, которое не является ответом. У него PID=0. Допустим у него ID=12.

Во время ответа, ты передаешь ID сообщения, на которое пишется ответ - 12

Ты добавляешь новое сообщение в базу, у него PID уже не 0, а 12.

В итоге имеешь следующее:

 
Код:
ID  PID TEXT
12   0  ....
13   12 ....


Во время вывода, выбираешь корневые сообщения - это те у которых PID==0.

Потом, для каждого корневого сообщения, рекурсивно, получаешь всех потомков - это те сообщения, у которых PID==UD

Я достаточно сумбурно объяснил, тебе нужно прочитать про древовидные структуры.

Вот:
http://www.codenet.ru/db/other/trees/index.php
1.9K
16 мая 2005 года
zorkk
80 / / 22.07.2004
Цитата:
Originally posted by mike
Нет :)

У тебя есть сообщение, которое не является ответом. У него PID=0. Допустим у него ID=12.

Во время ответа, ты передаешь ID сообщения, на которое пишется ответ - 12

Ты добавляешь новое сообщение в базу, у него PID уже не 0, а 12.



А не проще ли добавить в таблицу содержащую сообщения из гостевой 2 поля: reply и replytime, в которых все это хозяйство и хранить, а не привязывать данные из одно таблицы к другой?

4
16 мая 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by zorkk
А не проще ли добавить в таблицу содержащую сообщения из гостевой 2 поля: reply и replytime, в которых все это хозяйство и хранить, а не привязывать данные из одно таблицы к другой?



Никто и не говорит, что эта разные таблицы. Классическое дерево:

ID записи | ID потомка | Данные

11K
17 мая 2005 года
Mortum
8 / / 16.05.2005
Цитата:
Originally posted by mike
Никто и не говорит, что эта разные таблицы. Классическое дерево:

ID записи | ID потомка | Данные



Короче я почти понял как составлять деревья.
Но вот запутался в ID-записи ID-потомка
Не понял принципа присвоения.
Вот код:

Код:
<?php
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 = ...
Именно в тут я и запутался что к чему должно равняться
11K
18 мая 2005 года
Mortum
8 / / 16.05.2005
Ну так мне кто-нить поможет или нет?
Для меня енто сложный вопрос, чтобы самому разбираца. :)
10K
18 мая 2005 года
GC Software
9 / / 18.05.2005
Цитата:
Originally posted by Mortum
Ну так мне кто-нить поможет или нет?
Для меня енто сложный вопрос, чтобы самому разбираца. :)



Может быть тупо и без деревьев)), но я делал так:

создал новую таблицу "Ответы", при каждом новом ответе в поле писалось IDM сообщения, на которое отвечали. Потом выбирал для каждого сообщения из табл. "Ответы" все записи, где это поле = IDM, по дате их сортировал DESC. Ну и выводил циклом.

11K
19 мая 2005 года
Mortum
8 / / 16.05.2005
Цитата:
Originally posted by GC Software
Может быть тупо и без деревьев)), но я делал так:

создал новую таблицу "Ответы", при каждом новом ответе в поле писалось IDM сообщения, на которое отвечали. Потом выбирал для каждого сообщения из табл. "Ответы" все записи, где это поле = IDM, по дате их сортировал DESC. Ну и выводил циклом.



Почему-то мне кажется, что создавать отдельную таблицу "Ответы" как-то глупо. Можно было бы конечно так сделать, но мне хочется познать деревья MySQL, так как на одной гостевой я останавливаца не собираюсь. Далее пойдет карта сайта, форум и т.д. и ведь везде проще юзать деревья ИМХО.

11K
19 мая 2005 года
Mortum
8 / / 16.05.2005
ПОМОГИТЕ!!!! :o
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог