Новини + коментари към тях

vladislav

Registered
Направих това за новините таблицата в МySQL-a е
id|zaglavie|novina|data

Как да направя коментара кам самта новина да се визуализира по новината за която е однася заюото ако еда новина не е коментиране няма да стане само с id-та защото всичко ще се обърка. С две думи как да синхронизирам новина с принадлежащия и коментар?

Ако може малко по-подробно
 
правиш нова таблица "comments" (примерно) която е с полета : id, newsid, author, content (евентуално може и date, IP и т.н. в зависимост от това което искаш ти). И id-то в comments ще ти е unique/primary id т.е. уникалното id за коментара, а newsid ще бъде за новината, която се отнася. Така под новината ще правиш проверка от сорта на

SELECT * FROM comments WHERE newsid = 3 . Kъдето 3 е новина с id 3. Капиш? :wink:
 
Еми човек като напише коментар, и използвайки РНР например, като го добавяш към базата данни въвеждаш ID-то на новината, което вече трябва да го имаш изведено като променлива, като извеждаш новината. Пример:

$query = "SELECT * FROM news ORDER by id DESC limit 10";
$result = mysql_query($query);
$array = mysql_fetch_array($result);

и примерно $array['id'] ти е id-то на новината. После примерно с $query2, $result2 или нещо такова като правиш заявката за извличане на коментари по новината имаш:
$newsid = $array['id'];
$query2 = "SELECT * FROM comments WHERE newsid = $newsid"; или нещо такова. Само за протокола да отбележа, че не трябва да забравяш да се прадпазиш от SQL Injection и Blind SQL Injection, като проверяваш всичко, което влиза в базата данни за кавички например и внимаваш $newsid, да е integer.
 
правиш 2 таблици
едната е с новините
другата с коментарите
в таблицата с коментарите записваш

ИД номер на коментара | Автор на коментара | Коментар | ИД номер на новината
после в скрипта с които пишеш коментари взимаш " ид на новината" и го записваш в таблицата с коментарите
и след това с 1 заявка изкарваш всички коментари от новина 23 примерно където "ид номер на новина" = 23
надявам се да обясних добре
скоро може да го пусна този скрипт стуга да имам време
 
горе долу схващам обаче как да взема ИД на определената новина и после как под новината да има линк коментари и да се виждат нейните коментари
 
ето ти примерен скрипт ( несъм го пробвал дали работи )
етого conn.php
Код:
<?php
$user="Юсер за БД"; 
$password="Парола за БД";
$database="База данни име";
?>

след това index.php
Код:
<?php
include('conn.php');
$link=mysql_connect('localhost',$user,$password);
$db=mysql_select_db($database);
$query="SELECT id, title FROM news ORDER BY id DESC";
$result=mysql_query($query, $link);
while ($row=mysql_fetch_row($result)) {
echo"<p><a href=\"news.php?id=$row[0]$row[1]\">$row[1]</a></p>";
} 
?>


news.php
Код:
$newsid=$_GET['id'];
if ($newsid=='')
{exit;}

include('conn.php');
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT id, title, content, avtor, data  FROM news where id like '$newsid'";

$result=mysql_query($query);
$row=mysql_fetch_row($result);
$dostap=$row[5];
$title=$row[1];
$content=$row[2];
$avtor=$row[3];
$data=$row[4];

echo "<h1>$title</h1><div>$content</div><br /><div>Публикувано от <b> $avtor </b> на <b> $data </b></div>";

echo("<form action='kom.php' method='post' ><textarea name='text' style='width:400px; height:100px;'>Коментар</textarea> <input type='hidden' name='newsid' value='$newsid' /><br/>
<input type='submit'  value='Изпрати'/></form>");

include('conn.php');
$link=mysql_connect('localhost',$user,$password);
$db=mysql_select_db($database);
$query="SELECT id , name , text , data FROM komentari where newsid like '$newsid'  ORDER BY id DESC";
$result=mysql_query($query, $link);
echo"<br/>Всички коментари:";
while ($row=mysql_fetch_row($result)) {
echo"<hr />публикувано от <b>$row[1]</b> на <b>$row[3]</b><br/>$row[2] ";
}

kom.php
Код:
<?php
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];
$text=$_POST['text'];
$data=date("F j, Y, g:i a"); 
$newsid=$_POST['newsid'];
$patterns[0] = '>';
$patterns[1] = '<';
$patterns[2] = "'";
$patterns[3] = "%";
$replacements[3] = '>';
$replacements[2] = '<';
$replacements[1] = '&#39';
$replacements[0] = '&#37';
$text=str_replace($patterns, $replacements, $text);

include('conn.php');
mysql_connect("localhost",$user,$password) or die ( 'проблем при свързване с MySQL!' );
mysql_select_db($database) or die ( 'Грешка при връзката!' ); 
mysql_query("INSERT komentari (name, text, data , newsid) VALUES ('$potrebitel', '$text','$data','$newsid')");
mysql_close() ;
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
?>

значи създаваш 2 таблици
в парвата се казва news и има полета
id, title, content, avtor, data
втората komentari с полета
id ,name, text, data , newsid

100% има грешки по скрипта понеже сега го промених малко а немога да го пробвам дано можеш да си го оправиш
 
mute каза:
ето ти примерен скрипт ( несъм го пробвал дали работи )
етого conn.php
Код:
<?php
$user="Юсер за БД"; 
$password="Парола за БД";
$database="База данни име";
?>

след това index.php
Код:
<?php
include('conn.php');
$link=mysql_connect('localhost',$user,$password);
$db=mysql_select_db($database);
$query="SELECT id, title FROM news ORDER BY id DESC";
$result=mysql_query($query, $link);
while ($row=mysql_fetch_row($result)) {
echo"<p><a href="news.php?id=$row[0]$row[1]">$row[1]</a></p>";
} 
?>


news.php
Код:
$newsid=$_GET['id'];
if ($newsid=='')
{exit;}

include('conn.php');
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT id, title, content, avtor, data  FROM news where id like '$newsid'";

$result=mysql_query($query);
$row=mysql_fetch_row($result);
$dostap=$row[5];
$title=$row[1];
$content=$row[2];
$avtor=$row[3];
$data=$row[4];

echo "<h1>$title</h1><div>$content</div><br /><div>Публикувано от <b> $avtor </b> на <b> $data </b></div>";

echo("<form action='kom.php' method='post' ><textarea name='text' style='width:400px; height:100px;'>Коментар</textarea> <input type='hidden' name='newsid' value='$newsid' /><br/>
<input type='submit'  value='Изпрати'/></form>");

include('conn.php');
$link=mysql_connect('localhost',$user,$password);
$db=mysql_select_db($database);
$query="SELECT id , name , text , data FROM komentari where newsid like '$newsid'  ORDER BY id DESC";
$result=mysql_query($query, $link);
echo"<br/>Всички коментари:";
while ($row=mysql_fetch_row($result)) {
echo"<hr />публикувано от <b>$row[1]</b> на <b>$row[3]</b><br/>$row[2] ";
}

kom.php
Код:
<?php
$potrebitel=$HTTP_SESSION_VARS['potrebitel'];
$text=$_POST['text'];
$data=date("F j, Y, g:i a"); 
$newsid=$_POST['newsid'];
$patterns[0] = '>';
$patterns[1] = '<';
$patterns[2] = "'";
$patterns[3] = "%";
$replacements[3] = '>';
$replacements[2] = '<';
$replacements[1] = '&#39';
$replacements[0] = '&#37';
$text=str_replace($patterns, $replacements, $text);

include('conn.php');
mysql_connect("localhost",$user,$password) or die ( 'проблем при свързване с MySQL!' );
mysql_select_db($database) or die ( 'Грешка при връзката!' ); 
mysql_query("INSERT komentari (name, text, data , newsid) VALUES ('$potrebitel', '$text','$data','$newsid')");
mysql_close() ;
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
?>

значи създаваш 2 таблици
в парвата се казва news и има полета
id, title, content, avtor, data
втората komentari с полета
id ,name, text, data , newsid

100% има грешки по скрипта понеже сега го промених малко а немога да го пробвам дано можеш да си го оправиш

А това при мен работи супер :) Мерси :)
 
paneznam каза:
това не е с текстови фаелове .inc
inc е текстов файл. :)

inc, txt, php, css или html все са текстови файлове и могат да се ползват за целта.

Някой ползват html за база данни други ползват inc .
Резултата е същия.
 
http://web-tourist.net/login/login/view.php?st=647

само тук има 5-6 урока за новини без SQL
уроците не са 10 000 та да неможеш да го намериш а и има тълсачка
 
paneznam каза:
нЕ бе хора на мен ми трябва тоя скрипт обаче да записва в текстови фаелове!


Скрипта дето записва в база данни да се преправи да записва в текстови файлове (поне така разбрах де).
Ако се напъна може да скалъпа нещо.
Пак няма да е същото но горе долу ще върши същата работа.
Напъването най-вероятно ще трае седмица.

Не се наемам да го правя.
 
Точно това ми трябва разбрал си!
А не е казано точно това може пак същия но да върши същатата работа като този обаче да записва в текстови фаелове!
 

Back
Горе