|
|
|
| Господа, такой вопрос! у меня есть одна база данных с двумя таблицами :
CREATE TABLE 'cms' (
'id_news' INT NOT NULL AUTO_INCREMENT ,
'name_new' TINYTEXT,
'pred_new' TINYTEXT,
'all_new' TINYTEXT,
'time' DATETIME DEFAULT NULL ,
PRIMARY KEY (id_news)
) TYPE = MYISAM;
CREATE TABLE 'comments' (
'id_comments' INT NOT NULL AUTO_INCREMENT ,
'name' TINYTEXT,
'comment' TINYTEXT DEFAULT NULL,
'time' DATETIME DEFAULT NULL ,
PRIMARY KEY (id_comments)
) TYPE = MYISAM;
|
в CMS хранятся все статьи, а в COMMENTS соответственно комментарии к статьям.
Так вот каким образом можно их завязать вместе? чтобы к НУЖНОЙ статье выводились лишь ЕЁ КОММЕНТЫ?
как организовать запрос? | |
|
|
|
|
|
|
|
для: 10100100
(10.11.2005 в 11:53)
| | Для начала в таблицу comments необходимо добавить внешний ключ id_news, который будет совпадать по значению с cms.id_news. Таким образом, статьи из cms и комментарии из comments будут иметь одинаковое значение id_news. Тогда вывод комментариев сведётся к запросу
SELECT * FROM comments WHERE id_news = $id_news
|
| |
|
|
|
|
|
|
|
для: cheops
(10.11.2005 в 12:52)
| | вроде бы понял - спасибо - буду пробовать! | |
|
|
|
|
|
|
|
для: cheops
(10.11.2005 в 12:52)
| | так немного не понял, это получается при каждой новой добавленной новости id_news добавляется автоматически в таблицу CMS ? это понятно, значит получается что это же самое значение при добавлении новости должно передаваться таблице COMMENTS? а как это реализовать? та ведь не автоинкремент... | |
|
|
|
|
|
|
|
для: 10100100
(10.11.2005 в 18:08)
| | Во-первых комментарии добавляются под новостью когда она уже выложена, т.е. в параметрах или где-то рядом должен быть id_news новости. Однако если необходимо добавить комментарий сразу в том же скрипте, что и новость для этого можно узнать только что вставленное значение auto_increment, воспользовавшись, либо функцией mysql_insert_id() в PHP, либо встроенной функцией MySQL - LAST_INSERT_ID(), примеры использования этих функций можно найти в темах по ссылкам
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4095
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1424 | |
|
|
|
|
|
|
|
для: cheops
(10.11.2005 в 22:36)
| | боюсь что я не правильно представляю себе алгоритм работы такого скрипта не могли бы Вы написать свою версию алгоритма... с начала создания статьи... | |
|
|
|
|
|
|
|
для: 10100100
(10.11.2005 в 11:53)
| | CHEOPS ХЕЛП!!!!!!! | |
|
|
|
|
|
|
|
для: 10100100
(12.11.2005 в 15:49)
| | А... вопроса не вижу :))) В чём конкретно сложность? | |
|
|
|
|
|
|
|
для: cheops
(12.11.2005 в 22:42)
| | гыксь :)))) вопрос выше этого поста! :)))))
сложность в понятиях/непонятиях Алгоритма! :((
туплю я чёт.. :( | |
|
|
|
|
|
|
|
для: 10100100
(13.11.2005 в 05:55)
| | Когда вы связываете таблицы, например таблицу статей и таблицу комментариев к ним. Следует учитывать отношения между таблицами. К статье может быть много комментариев, но комментарий не может быть дан сразу по нескольким статьям. Поэтому таблица с комментариями должна иметь поле, где будет хранится id статьи, к которой он относится. Если бы было наоборот - таблица статей должна бы была иметь такое поле. | |
|
|
|
|
|
|
|
для: cheops
(13.11.2005 в 13:42)
| | да нет это то я понял - заносить то как, как конкретно, тоже автоматом?? | |
|
|
|
|
|
|
|
для: 10100100
(13.11.2005 в 16:02)
| | Хм... чего-то не очень понятно... | |
|
|
|
|
|
|
|
для: cheops
(13.11.2005 в 22:03)
| | всё всё. вроде бы сообразил -сёдня буду пробовать... | |
|
|
|
|
|
|
|
для: 10100100
(14.11.2005 в 06:43)
| |
<?
include "config.php";
$pred_new = nl2br($pred_new);
$all_new = nl2br($all_new);
$query = "INSERT INTO cms VALUES (NULL,'$name_new','$pred_new','$all_new',NOW())";
$query2 = "INSERT INTO comments VALUES (NULL,LAST_INSERT_ID(),'$name_new','$pred_new','$all_new',NOW())";
mysql_query($query2);
if(!mysql_query($query))
{
exit("Ошибка - ".mysql_error());
}
header("location:http://localhost/cms/select_redact.php");
?>
|
это код добавления новой статьи, но почему то поле id_news в таблице комментс - остаётся не заполненым.... | |
|
|
|
|
|
|
|
для: 10100100
(14.11.2005 в 08:45)
| | Это потому, что вы сначала выполняете второй запрос, а затем первый - необходимо переписать скрипт примерно так
<?
include "config.php";
$pred_new = nl2br($pred_new);
$all_new = nl2br($all_new);
$query = "INSERT INTO cms VALUES (NULL,'$name_new','$pred_new','$all_new',NOW())";
if(!mysql_query($query)) exit("Ошибка - ".mysql_error());
$query = "INSERT INTO comments VALUES (NULL,LAST_INSERT_ID(),'$name_new','$pred_new','$all_new',NOW())";
if(!mysql_query($query)) exit("Ошибка - ".mysql_error());
header("location:http://localhost/cms/select_redact.php");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.11.2005 в 14:19)
| | Понятно - пошёл пробовать... | |
|
|
|
|
|
|
|
для: cheops
(14.11.2005 в 14:19)
| | теперь при добавлении коммента ввожу этот скрипт а он не работает, что то не так опять сделал, id_news вроде бы передаётся с помощью HIDDEN инпута...
<?
include "config.php";
$comment = nl2br($comment);
$query = "INSERT INTO comments VALUES (NULL,'','$name','$comment',NOW()) WHERE id_news="'.$id_news.'"";
if(!mysql_query($query))
{
exit("Ошибка - ".mysql_error());
}
header("location:http://localhost/cms/index2.php");
?>
|
| |
|
|
|
|
|
|
|
для: 10100100
(14.11.2005 в 15:30)
| | А зачем WHERE id_news = $id_news - вы же новую запись создаёте - она не нужна... Кроме того, для обрамления SQL-запроса используются двойные кавычки, а внутри, вокруг $id_news - одинарные это должно вызывать синтаксическую ошибку, правильно, с синтаксической точки зрения
<?php
$query = "INSERT INTO comments VALUES (NULL,'','$name','$comment',NOW()) WHERE id_news=".$id_news;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(15.11.2005 в 00:15)
| | дело в том что у меня почему то при любом раскладе комменты добавляются к порядковому номеру 5 а статей всего 4...... видать тут Апдейт нужен а не инсерт..... | |
|
|
|
|
|
|
|
для: 10100100
(15.11.2005 в 08:12)
| | По тому что вы в INSERT не указываете его... | |
|
|
|
|
|
|
|
для: cheops
(15.11.2005 в 13:32)
| | тоесть если я добавлю его в VALUES то всё заработает??? | |
|
|
|
|
|
|
|
для: 10100100
(15.11.2005 в 15:56)
| | Это зависит от структуры таблицы... | |
|
|
|
|
|
|
|
для: cheops
(15.11.2005 в 21:53)
| | гыксь я кажись понял в чём косяк!
я ж в таблице COMMENTS поставил ещё и ID каждого коммента!! ! и ай ди каждого коммента Автоматом !! сдаётся мне что автоинкремент стоит убрать!? :)) | |
|
|
|