Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z komentarzami od użytkowników na stronie
joseam
post 24.01.2012, 02:05:53
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.01.2012
Skąd: Madrid

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
askone
post 24.01.2012, 08:47:43
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


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


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
joseam
post 24.01.2012, 12:42:05
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.01.2012
Skąd: Madrid

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
nospor
post 24.01.2012, 12:46:41
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
joseam
post 24.01.2012, 12:56:12
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.01.2012
Skąd: Madrid

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post 24.01.2012, 12:58:00
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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!


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
joseam
post 24.01.2012, 17:16:18
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.01.2012
Skąd: Madrid

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 25.01.2012, 08:30:43
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ć.
Powód edycji: [nospor]: Na życzenie użytkownika zmieniam formę na bardziej oczywistą


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:04