Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z komentarzami od użytkowników na stronie
Forum PHP.pl > Forum > Przedszkole
joseam
Witam.
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 ;


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');

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>';
}
}
}

?>


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.
askone
Nie wiem jak masz rozwiązaną sprawę z notkami, ale na 99% każda z nich posiada swój unikalny identyfikator ID. Możesz go wykorzystać do powiązania komentarzy z daną notką. W tym celu zamiast pola URL dajesz pole note_id. Aby teraz odczytać komentarze dla danej notki wykonujesz zapytanie:

  1. SELECT * FROM komentarze WHERE note_id = $id


Pozdrawiam
joseam
no więć zmieniłem to o czym napisałeś, więć teraz wpisując komentarz nie wyświetla się on nigdzie. Chodzi o to, ze to wszystko dzieje się na jednej podstronie - dlatego pojawił sie problem, bo gdy formularze umieszczam na różnych podstronach to tych problemów nie ma i wszystko wyświetla się tam gdzie powinno. Próbowałem już z id w divach i bazie danych pojawiało się np. /blog.php#3 ale własnie wszystkie komentarza wrzuccało mi do #3 a #2 i #1 były puste, natomiast wcześniejszy problem który opisałem polegał na tym, ze komentarze pojawiały sie pod kazdą z notek... Jak nie urok to *** itd thumbsdownsmileyanim.gif chociaż np byl napisany w #1.... wygląda to tak, ze wrzuca komentarz w pierwszy napotkany formularz... wszystko dzieje się tu: www.joseam.osobie.net/blog.php można zerknąć, może coś to pomoże...
nospor
To co podał ci askone jest poprawnym rozwiązaniem. Przestań więc kombinować już z tymi adresami tylko pokaż swoje poprawki pod to co podał askone.
joseam
a nie da sie przypisać tu np coś $_POST['komentarz'] ?
do słowa komentarz $_POST['komentarz$nr'] i wtedy każde pole identyfikowałoby się swoim adresem id który przypisałbym notce ;>

Cytat(nospor @ 24.01.2012, 12:46:41 ) *
To co podał ci askone jest poprawnym rozwiązaniem. Przestań więc kombinować już z tymi adresami tylko pokaż swoje poprawki pod to co podał askone.


jest poprawne? no to co jeszcze trzeba zmieniń? bo gdy zaminiłem URL na ID to tak jak pisałem - komentarz wcięło, w baze pokazało, ze znajduje sie pod url /blog.php, jednak nie wyświetlało go na stronie sad.gif
nospor
Cytat
jest poprawne? no to co jeszcze trzeba zmieniń? bo gdy zaminiłem URL na ID to tak jak pisałem - komentarz wcięło, w baze pokazało, ze znajduje sie pod url /blog.php, jednak nie wyświetlało go na stronie
Ile razy można pisać.... bo masz coś źle. ALe nie wiemy co źle zrobiłeś bo nie pokazałeś kodu po poprawkach ani struktury bazy po poprawkach.

Tym razem użyj właściwego bbcode do pokazania kodu!
joseam
nie wiem który bbcode sie używa, bo nigdy nie zadawłem pytań na forach odnośnie PHP. Co ja bede pokazywał po poprawkach? Wszystko to samo tylko zamiast URL dałem to co askone napisał i tyle. nic nie zmieniałem w bazie ani nic.
nospor
Cytat
nie wiem który bbcode sie używa, bo nigdy nie zadawłem pytań na forach odnośnie PHP
Włącz myślenie. Skoro przy pisaniu bbcode masz bbcode o nazwie PHP to chyba logiczne ze do kodu PHP masz go użyć :/
Temat: Tematyka i zasady panujace na forum Przedszkole

Cytat
. Co ja bede pokazywał po poprawkach? Wszystko to samo tylko zamiast URL dałem to co askone napisał i tyle. nic nie zmieniałem w bazie ani nic.
To nic dziwnego ze ci nie dziala. askone podał ci ogólny schemat postępowania, ty go miałeś zaadoptować do siebie a nie bezmyślnie skopiować.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.