[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хранение комментариев в БД
Winston
Здравствуйте. Такая вот проблема: есть несколько продуктов к каждому из них будут комментарии, которые будут хранится в БД, как организовать хранение комментов в базе что бы для каждого продукта на странице выводились комментарии которые были созданы для него.



Спустя 34 минуты, 8 секунд (12.08.2009 - 20:52) stepan написал(а):

Спустя 22 минуты, 17 секунд (12.08.2009 - 21:14) Winston написал(а):
stepan
Вы меня наверное не правильно поняли, я знаю как создавать базы и таблицы мне нужно именно схема построения этой таблицы в которой будут хранится комментарии, как например на этом сайте, в каждой теме свои посты, так и мне нужно что бы для каждого продукта выводились свои комменты. Я так думаю что для каждого продукта нужно создавать свою таблицу в которой будут хранится только для него комменты... Но это как то не удобно, должны же быть другие способы реализации хранения ?

Спустя 5 минут, 13 секунд (12.08.2009 - 21:19) SunSet написал(а):
PHPprogramer
Сделать формочку ввода коментария к продукту, все введенное туда записывается в базу где ID коментария соответствует ID продукта. При выводе нужного продукта коменты выводятся только те, у которых ID будет равен ID продукту. То есть будет сопоставление и выборка по id. Все коменты хранить в отдельной таблице.

Спустя 17 минут, 14 секунд (12.08.2009 - 21:36) Winston написал(а):
SunSet
Хорошая идея... форма для ввода комментария есть, и комменты заносятся и выводятся с таблицы comments отлично, но на странице информации о продуктах выводятся одни те же комменты, какой код нужен что бы связать ID коммента с ID продукта, чтоб для продукта выводились свои комментарии.

Спустя 9 минут, 1 секунда (12.08.2009 - 21:45) Krevedko написал(а):
SELECT * FROM comments WHERE comments.id = '$id'

где $id -это номер продукта, который ты вытаскиваешь из гета

Спустя 45 секунд (12.08.2009 - 21:46) SunSet написал(а):
Я так сходу по памяти не напишу, не имею черного пояса по PHP )))) laugh.gif
Но примерно так:
Это в индекс вводим, где будет выводится комент к нужному продукту:
PHP
mysql_query ("SELECT * FROM comments WHERE post='$id'",$db);

где, post - поле из таблицы для коментов, а $id - продукт, который отображается на странице. И как только открываешь страничку с какимто видом продукции, ей присваивается свой id, по которому записывается для него коменты и для него же выводятся.

Спустя 19 минут, 5 секунд (12.08.2009 - 22:05) Winston написал(а):
Вот собственно код на вставку и вывод комментов с базы


Свернутый текст
PHP
<?php 
include 
("bloc/bd.php");
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset ($name); }}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset ($text); }}

?>
<link href="style.css" rel="stylesheet" type="text/css">

<?php
$result 
= mysql_query("SELECT name, text FROM comments");
$myrow = mysql_fetch_array($result);
 do 
  
{
 printf ("<table border='0' class='tab_comment' align='center'><tr><tr><td>%s<hr></td></tr><td>%s</td></tr></table>",$myrow["name"], $myrow["text"]);
  }
 while ($myrow = mysql_fetch_array($result));
?>

<FORM ACTION='' METHOD='post' CLASS="form_comment">
Введите имя: <br />
<INPUT TYPE='text' NAME='name' ID='name' VALUE='Guest' MAXLENGTH='15' SIZE='15'> <br />
Текст комментария: <br />
<textarea name='text' cols='50' rows='5' id='text'></textarea><br />
<INPUT NAME='submit' TYPE='submit' VALUE='Добавить'>
</FORM>

<?php 

if 
(isset($name) && isset($text))
{
$result = mysql_query("INSERT INTO comments (name, text) VALUE ('$name', '$text')");
}
else
{}

Спустя 16 минут, 51 секунда (12.08.2009 - 22:22) SunSet написал(а):
У тебя все коменты выводятся, а не нужные.

PHP
$result mysql_query("SELECT name, text FROM comments WHERE id='$id_product'");

Спустя 17 минут, 58 секунд (12.08.2009 - 22:40) Winston написал(а):
Что значит
Цитата (SunSet @ 12.08.2009 - 22:22)
id='$id_product'

у меня продукты хранятся в таблице content, а комментарии в comments, и как этот код получится делаю запрос к одной таблице, а ID сравниваю с другой, или я что то не так понял huh.gif

Спустя 5 минут, 31 секунда (12.08.2009 - 22:45) SunSet написал(а):
PHPprogramer
Я так полагаю, у тебя чтоб просмотреть определенный продукт идет ссылка на него index.php?id=10. Так вот у тебя уже есть id самого продукта, а запрос ты делаешь к таблице именно с коментами, но сравниваешь id просматриваемого продукта(id=10) с id коментария, который ты ищешь в базе.

Спустя 16 минут, 34 секунды (12.08.2009 - 23:02) Winston написал(а):
Для просмотра у меня идет ссылка на wiev_content?id=1,2 и т д.
Вот код этого файла

Свернутый текст
PHP
<?php 
include ("bloc/bd.php");

if (isset(
$_GET['id'])) {$id $_GET['id'];}

$result mysql_query ("SELECT * FROM proba WHERE id='$id'",$db);
$myrow mysql_fetch_array ($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo $myrow["meta_d"];?>">
<meta name="keywords" content="<?php echo $myrow["meta_t"];?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow["title"]; ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
 <table width="1037" border="1px" align="center" cellpadding="0" cellspacing="0" class="main_border">
<?php include ("bloc/shapka.php"); ?>
  <tr class="main_border">
   <td>
 <table width="1037" border="0px" cellpadding="0" cellspacing="0">
  <tr>
   <td width="824" valign="top" class="left">

  <p><a href="view_content.php?id=<?php echo ((int) $_GET['id'] - 1?>" class="next_back"><img src="img/back.gif" title="Назад" width="20" height="20"></a>
 <a href="index.php" class="next_back"><img src="img/home page.gif" title="Главная"  width="20" height="20"></a>
 <a href="view_content.php?id=<?php echo ((int) $_GET['id'] + 1?>" class="next_back"><img src="img/next.gif" title="Вперед" width="20" height="20"></a></p>
  <p class="view_name"><?php echo $myrow['title'];?></p>
  <table width="100%" border="0" cellspacing="1" cellpadding="0" class="view_text">
  <tr>
    <td><p> <?php echo $myrow['text']; ?> </p></td>
  </tr>
</table>
  <p class="content_date"><br>Таблетка: <?php echo $myrow['crack']; ?><br><br>
Язык интерфейса: <?php echo $myrow['interfase']; ?><br><br>
Размер файла: <?php echo $myrow['size']; ?> Мб<br><br>
Дата добавления: <?php echo $myrow['date']; ?><br /><br /></p>
<?php include ("comments.php"); ?>
</td>
</tr>
</table></td>
</tr>
</tab


если можешь то сделай мне этот запрос на добавление и вывод по ID.

Спустя 14 минут, 13 секунд (12.08.2009 - 23:16) SunSet написал(а):
Автор Попов?)))) laugh.gif
На добавление не напишу так сходу, надо и на форму смотреть, и на базу.

А на вывод то
$result2 = mysql_query ("SELECT * FROM comments WHERE post='$id'",$db);
$myrow2 = mysql_fetch_array ($result2);
и затем выводишь где нужно <?php echo $myrow2['text'];?>, автора и что там еще есть. smile.gif

Спустя 43 минуты, 29 секунд (13.08.2009 - 00:00) Soldier Ghost написал(а):
На сколько я знаю это делается примерно так допустим юзер зашёл в продукт разумеется у продукта есть id допустим юзер написал коммант нажал кнопку отправить в базе создаётся запись первое у нас идёт id коммента второе id продукта в который написали коммент и текст и ещё чёнить потом выводим,
Допусти юзер зашёл в продукт разумеется id продукта мы передали гетом дальше вытаскиваем в массиве все комменты где id продукта равняется id продукту к которому добавили коммент.
Надеюсь кому надо тот поймёт что я написал blink.gif

Допусти структура такая:
|| id || id_pro || text ||
SQL
SELECT * FROM comments WHERE id_pro = '$id_pro';

Вот такой запросик

Спустя 7 часов, 17 минут, 3 секунды (13.08.2009 - 07:17) Krevedko написал(а):
да все все поняли. и выше и я, и Sunset тоже самое уже написали smile.gif

Спустя 4 дня, 9 часов, 3 минуты, 50 секунд (17.08.2009 - 16:21) Winston написал(а):
Как реализовать хранение я уже понял, а с запрос туговато, может поможете ?
Вот код формы и обработчика:
Свернутый текст
PHP
<?php 
include ("bloc/bd.php");
if (isset(
$_POST['name']))         {$name $_POST['name']; if ($name == '') {unset ($name); }}
if (isset(
$_POST['text']))         {$text $_POST['text']; if ($text == '') {unset ($text); }}
 
?>
<link href="style.css" rel="stylesheet" type="text/css">
 <?php
   $result 
mysql_query("SELECT name, text FROM comments");
   
$myrow mysql_fetch_array($result);
 do 
   {
 
printf ("<table border='0' class='tab_comment' align='center'><tr><tr><td>%s<hr></td></tr><td>%s</td></tr></table>",$myrow["name"], $myrow["text"]);
   }
 while (
$myrow mysql_fetch_array($result));
  
?>
<FORM ACTION='' METHOD='post' CLASS="form_comment">
Введите имя: <br />
<INPUT TYPE='text' NAME='name' ID='name' VALUE='Guest' MAXLENGTH='15' SIZE='15'> <br />
Текст комментария: <br />
<textarea name='text' cols='50' rows='5' id='text'></textarea><br />
<INPUT NAME='submit' TYPE='submit' VALUE='Добавить'>
</FORM>
  <?php 

 
if (isset($name) && isset($text))
   {
    
$result mysql_query("INSERT INTO comments (name, text) VALUE ('$name', '$text')");
   }
 else
  {}
 

Спустя 2 часа, 4 минуты, 21 секунда (17.08.2009 - 18:25) Krevedko написал(а):
Выше ты забыл писать в базу айди товара

Ниже мой код.
как работает смотри например
ТУТ

Я вчера за вечер зафигачил )

PS Для авторизации -admin 11111111
или зарегайся


PHP
function add_comments($user,$text)
    {
        $id = isset($_GET['id'])?intval($_GET['id']):1;
        $array_error = array();
        if(isset($_REQUEST['Send'])) 
        
{
            if(!$user)
            $array_error[] = ERROR_GUEST_USER; 
            if
(!$text)
            $array_error[] = ERROR_GUEST_TEXT;  
            if
(count($array_error) == 0)
            {
                # Добавление записи в таблицу     
                $result = mysql_query("INSERT INTO `comments` 
                                       SET `users_login` = '"
.magic_off($user)."', 
                                              `text` = '"
.magic_off($text)."',
                                           `good_id` = '$id'"
                ,CONNECT);
                
                
# Проверка на ошибку запроса  
                valid_query($result);
    
                header
("location: ".$_SERVER['PHP_SELF']."?mod=main&page=detailed&id=".$id."&a=".rand(100,1));
            }
            else
            
{
                echo '<table width="430" border="0" align="center" 
class="goods_border"><tr><td align="center" 
style="color:red">'
.error_info($array_error).    
            
'</td></tr></table>'; 
            
}
        }
    }
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.