Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System komentarzy PHP
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
artur5236
Witam, szukam prostego skryptu komentarzy PHP, może wykorzystywać mysql.

Dobrze by było gdyby posiadał paginację np. na jednej stronie pokazywał 20 komentarzy.

Z góry dziękuję za pomoc.
markonix
Gotowca w PHP raczej nie znajdziesz bo komentarze powinny być powiązane z jakimś obiektem np. wpisem więc i tak wymagać to będzie jakieś konfiguracji / integracji.

A może coś w stylu:
https://developers.facebook.com/docs/plugins/comments/

niekorzystałem ale domyślam się, że opiera się url.
tomxx
Najpierw wykonujesz takie zapytanie SQL do bazy:
  1. CREATE TABLE `komentarze` (
  2. `strona` TEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  3. `nick` TEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  4. `data` TEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  5. `tresc` TEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL
  6. )
I tworzysz skrypt:
  1. <?php
  2. $db = new PDO('mysql:host=localhost;dbname=nazwaBazyDanych', 'nazwaUżytkownika', 'hasłoDoBazy') or die;
  3. $db->query("SET NAMES 'utf8'");
  4. $wybierz = $db->query("SELECT * FROM `komentarze` WHERE `strona` = '".$_SERVER['SCRIPT_NAME']."'");
  5.  
  6. foreach($wybierz as $dane)
  7. echo "{$dane[1]} - {$dane[2]} <br>
  8. {$dane[3]} <hr><br>";
  9. ?>
  10.  
  11. <form action="<?php echo $_SERVER['SCRIPT_NAME'] ?>" method="post">
  12. <p>Twój nick: <input name="nick"></p>
  13. <p>Treść komentarza:</p>
  14. <textarea name="tresc" cols=50 rows=10></textarea>
  15. <p><input name="submit" type="submit" value="Wyślij!">
  16. </form>
  17.  
  18. <?php
  19. if(isset($_POST['submit']))
  20. {
  21. if(empty($_POST['nick']) || empty($_POST['tresc']))
  22. die("<p>Musisz wypełnić wszystkie pola!</p>");
  23.  
  24. if(
  25. $db->query(@"INSERT INTO `komentarze` (`strona`, `nick`, `data`, `tresc`)
  26. VALUES ('".$_SERVER['SCRIPT_NAME']."', '".$_POST['nick']."', '".date("m-d-Y, H:i:s")."', '".$_POST['tresc']."')")
  27. )
  28. echo "<script>location.href='http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."'</script>";
  29. else
  30. echo "<p>Komentarz nie został dodany z powodu błędu</p>";
  31. }
  32. ?>
Powyższy skrypt możesz wstawić w dowolnym pliku i w dowolnym jego miejscu - będzie pobierana zmienna $_SERVER['SCRIPT_NAME'] i wysyłana z komentarzem do bazy, a potem wyświetlane będą tylko te komentarze, które będą przyporządkowane do określonej nazwy pliku.
Jeśli natomiast zmienisz nazwę jakiegoś pliku, to tu już jest problem - w takim wypadku wystarczy jednak wykonanie zapytania:
  1. UPDATE `komentarze` SET `strona` = '/nazwanowegopliku' WHERE `strona` = '/nazwastaregopliku'
Natomiast jeżeli strony mają parametry GET w URL-ach, to konieczne będzie dodanie do SCRIPT_NAME tych parametrów (w czwartej linii kodu).
Z kolei 28. linijka (ze skryptem JS) służy do zabezpieczenia przed ponownym wysłaniem formularza (JavaScript sam przeładowuje stronę i użytkownik już widzi swój komentarz).
ilies
Troszkę odkopię temat, bo mam mały dylemat właśnie z formularzem komentarzy, też wykorzystuję 'textarea' i do tego mam pytanie. Jak wpiszę tam tekst na dwie trzy linie, gdzie w momęcie przechodzenia z jednej do drugiej linii wykorzystuję 'Enter' to wyświetla mi się to później w jednym ciągu. W skrócie mówiąc jak zapisać przejście do następnej linii?
kujol
ilies
Dzięki Ci dobry człowieku, wiedziałem że to jakaś pierdoła, nawet się z tym gdzieś spotkałem a nie sprawdziłem tego nawet facepalmxd.gif
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-2024 Invision Power Services, Inc.