Mam taki problem. Jestem początkujący w PHP i udało mi się napisać skrypt na swoją stronę, by na moim blogu pod każdą tzw. notką można było dokonać komentarz. Baza danych została utworzona zgodnie ze wskazówkami, formularz również... Niestety wszystko to idzie do tzw. jednego kotła, i pod każdą notką wyskakują mi te same komentarze i nie wiem, jak zrobić, by pod każdą notką pojawiały się indywidualne komentarze napisane własnie do danej notki.
Baza danych wygląda tak:
Cytat
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE TABLE IF NOT EXISTS `komentarze` (
`id` int(7) unsigned NOT NULL AUTO_INCREMENT,
`url` char(45) COLLATE utf8_polish_ci NOT NULL,
`nick` char(35) COLLATE utf8_polish_ci NOT NULL,
`data` datetime NOT NULL,
`ip` char(15) COLLATE utf8_polish_ci NOT NULL,
`komentarz` text COLLATE utf8_polish_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='komentarze do artykułów' AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `komentarze` (
`id` int(7) unsigned NOT NULL AUTO_INCREMENT,
`url` char(45) COLLATE utf8_polish_ci NOT NULL,
`nick` char(35) COLLATE utf8_polish_ci NOT NULL,
`data` datetime NOT NULL,
`ip` char(15) COLLATE utf8_polish_ci NOT NULL,
`komentarz` text COLLATE utf8_polish_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='komentarze do artykułów' AUTO_INCREMENT=1 ;
Pola komentarzy tak
Cytat
<div id='komentarze'>";
$zapytanie2 = "SELECT * FROM komentarze WHERE url = '$adres' ORDER BY id";
mysql_query("set names iso-8859-2;");
$rezultat2 = mysql_query ($zapytanie2);
while ($dane = @mysql_fetch_array ($rezultat2, MYSQL_ASSOC))
{
echo'
<div>
<div class="komentarz_info"><b>',$dane['nick'],'</b> (',$dane['data'],')</div>
<div class="komentarz_tresc">',nl2br($dane['komentarz']),'</div>
</div>';
}
if (isset($komunikat))
{
echo '<div class="komunikat">'.$komunikat.'</div>';
}
echo "<br>";
echo "<div class='separator'></div>";
echo "<br>";
if (file_exists('../utils/formularz.php'))
include('../utils/formularz.php');
else
include('utils/formularz.php');
$zapytanie2 = "SELECT * FROM komentarze WHERE url = '$adres' ORDER BY id";
mysql_query("set names iso-8859-2;");
$rezultat2 = mysql_query ($zapytanie2);
while ($dane = @mysql_fetch_array ($rezultat2, MYSQL_ASSOC))
{
echo'
<div>
<div class="komentarz_info"><b>',$dane['nick'],'</b> (',$dane['data'],')</div>
<div class="komentarz_tresc">',nl2br($dane['komentarz']),'</div>
</div>';
}
if (isset($komunikat))
{
echo '<div class="komunikat">'.$komunikat.'</div>';
}
echo "<br>";
echo "<div class='separator'></div>";
echo "<br>";
if (file_exists('../utils/formularz.php'))
include('../utils/formularz.php');
else
include('utils/formularz.php');
Natomiast sam skrypt na komentarze tak:
Cytat
<?PHP
// Pobieramy adres IP komentującego
$IP = $_SERVER['REMOTE_ADDR'];
// Pobieramy adres aktualnej strony bez nazwy domeny
$adres = $_SERVER['REQUEST_URI'];
if (file_exists('../utils/sql.php'))
include('../utils/sql.php');
else
include('utils/sql.php');
// Nawiązuje połączenie i wybiera bazę danych.
$dbc = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die ('Nie mogłem połączyć się z MySQL-em: ' . mysql_error() );
@mysql_select_db(DB_NAME) OR die ('<b>Nie udało mi się wybrać bazy danych:</b> ' . mysql_error() );
// Jeżeli został wciśnięty przycisk "wyślij"
if (isset ($_POST['wys_kom'])) {
// Jeżeli nick jest pusty
if (empty($_POST['nick'])) {
$komunikat .= '<p>Podaj swój nick (imię).</p>';
} else {
$nick = ($_POST['nick']);
}
// Jeżeli komentarz jest pusty
if (empty($_POST['komentarz']) ) {
$komunikat .= '<p>Napisz komentarz.</p>';
} else {
$koment = stripslashes($_POST['komentarz']);
}
//Jeżeli nie ma żadnego błędu
if (!isset($komunikat)) {
$zapytanie = "INSERT INTO komentarze (url, nick, komentarz, data, ip) VALUES ( '$adres', '$nick', '$koment', NOW(), '$IP')";
if ($rezultat = mysql_query ($zapytanie)) {
mysql_close();
header ("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();
} else {
$komunikat = '<p>Przepraszamy za chwilowe usterki. Wysłanie komentarza nie było możliwe. Spróbuj pózniej.</p>';
}
}
}
?>
// Pobieramy adres IP komentującego
$IP = $_SERVER['REMOTE_ADDR'];
// Pobieramy adres aktualnej strony bez nazwy domeny
$adres = $_SERVER['REQUEST_URI'];
if (file_exists('../utils/sql.php'))
include('../utils/sql.php');
else
include('utils/sql.php');
// Nawiązuje połączenie i wybiera bazę danych.
$dbc = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die ('Nie mogłem połączyć się z MySQL-em: ' . mysql_error() );
@mysql_select_db(DB_NAME) OR die ('<b>Nie udało mi się wybrać bazy danych:</b> ' . mysql_error() );
// Jeżeli został wciśnięty przycisk "wyślij"
if (isset ($_POST['wys_kom'])) {
// Jeżeli nick jest pusty
if (empty($_POST['nick'])) {
$komunikat .= '<p>Podaj swój nick (imię).</p>';
} else {
$nick = ($_POST['nick']);
}
// Jeżeli komentarz jest pusty
if (empty($_POST['komentarz']) ) {
$komunikat .= '<p>Napisz komentarz.</p>';
} else {
$koment = stripslashes($_POST['komentarz']);
}
//Jeżeli nie ma żadnego błędu
if (!isset($komunikat)) {
$zapytanie = "INSERT INTO komentarze (url, nick, komentarz, data, ip) VALUES ( '$adres', '$nick', '$koment', NOW(), '$IP')";
if ($rezultat = mysql_query ($zapytanie)) {
mysql_close();
header ("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();
} else {
$komunikat = '<p>Przepraszamy za chwilowe usterki. Wysłanie komentarza nie było możliwe. Spróbuj pózniej.</p>';
}
}
}
?>
Proszę o lekką podpowiedź jak to zrobić, bo początkowo myślałem, by przypisać zmienne do kolumn w MySql, ale nie wiem, czy to miałoby sens , a jeśli, to jak to wgl zrobic?
Z góry dzięki za pomoc, czekam na odpowiedzi, pozdrawiam.