Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt komentarzy
Forum PHP.pl > Forum > Przedszkole
Luu
Witam.
Jestem nowy i w sumie mało się orientuje w tych sprawach [bardziej html].
Tworzę właśnie stronkę i potrzebuje skrypt komentarzy. Nie chce czegoś obszernego, wystarczy mi Nick, Treść, blokada na komentowanie w przeciągu N czasu i ew. data dodania komentarza.

Znalazłem taki prosty który zapisuje w plikach .txt ale coś nie działa ? Jak w pliku komentarze.txt coś napiszę to na stronie widać tekst. A jak już przez formularz chcę dodać to nic nie dodaje.
Myślałem że może w kodzie jest błąd, mógłby ktoś zobaczyć ? sadsmiley02.gif
  1. <b>Komentarze</b><br /><br />
  2.  
  3. <table>
  4.  
  5.  
  6.  
  7. <?php
  8.  
  9.  // nazwa pliku z trescia komentarzy
  10.  $nazwa = 'komentarze.txt';
  11.  
  12.  
  13.  // zapis jesli co wyslano z formularza
  14.  if($_POST['tytul'] & $_POST['tresc'] & $_POST['autor'])
  15.  {
  16. $fp=fopen($nazwa, 'a');
  17. flock($fp, 2); 
  18. fwrite($fp,$_POST['tytul'].'||'.strip_tags(strtr($_POST['tresc'],'\n',' ')).'||'.$_POST['autor'].'\n');
  19. flock($fp, 3); 
  20. fclose($fp);
  21.  }
  22.  
  23.  // jezeli juz istnieja jakies komentarze
  24.  if(is_file($nazwa))
  25.  {
  26. $linia = explode('\n',file_get_contents($nazwa));
  27. $ilosc = count($linia);
  28. for($i=0; $i<$ilosc; $i++)
  29. {
  30.  $komentarz = explode('||',$linia[$i]);
  31.  echo '<br /><b>'.$komentarz[0].'</b><br />'.$komentarz[1].'<br /><i>'.$komentarz[2].'</i><br />';
  32. }
  33.  }
  34.  else
  35. echo 'Jeszcze nie ma zadnych komentarzy. Badz pierwszy i skomentuj!<br /><br />';
  36.  
  37. ?>
  38. <font color="white" size="+1">
  39. </table>
  40.  
  41. <form action="" method="POST">
  42. <table><tr><td>Tytul </td><td><input type="text" name="tytul" /></td></tr>
  43. <tr><td>Tresc</td><td><textarea cols="30" name="tresc" rows="7"></textarea> </td></tr>
  44. <tr><td>Autor </td><td><input type="text" name="autor" /> </td></tr>
  45. <tr><td><input type="submit" value="Dodaj komentarz" /></td></tr></table>
  46. </form></font>


Noo z tego co jeszcze czytałem to komentarze na plikach to już przeżytek ale kurcze na bazach się nie znam ;/ Jeśli naprawdę jest dużo lepiej to mógłby ktoś jakiegoś tutka o bazach zarzucić ? Ale to tak nawiasem, bardziej narazie interesuje mnie skrypt wyżej podany...

Pozdrawiam.
Cysiaczek
Po pierwsze dodaj bbcode do listingu.

Włącz raportowanie błędów na E_ALL upewnij się, że są wyświetlane.
Info: Temat: Najczestsze bledy

Obstawiam uprawnienia do pliku z komentarzami - nadaj im odpowiedni CHMOD (777)

Pozdrawiam.
Luu
Cytat(Luu @ 23.02.2008, 15:11:01 ) *
Jestem nowy i w sumie mało się orientuje w tych sprawach [bardziej html].


Cytat(Cysiaczek @ 23.02.2008, 15:21:07 ) *
Włącz raportowanie błędów na E_ALL upewnij się, że są wyświetlane.
Info: Temat: Najczestsze bledy

Obstawiam uprawnienia do pliku z komentarzami - nadaj im odpowiedni CHMOD (777)


blinksmiley.gif
A trochę jaśniej ?
Cysiaczek
A co jest niejasne? Jeśli takich podstaw nie łapiesz, to najpierw przerób jakiś kurs php. W linku, który Ci podałem jest opisane, jak wlączyć raportowanie błędów (9. Nie widać błędów (by strife)). Uprawniani pliku zmienisz poprzez klienta FTP.

Ostatni raz proszę Ciebie o dodanie BBCODE
zasady forum Przedszkole
Luu
Cytat(Cysiaczek @ 23.02.2008, 16:01:06 ) *
Uprawniani pliku zmienisz poprzez klienta FTP.

A masz może na to tutka ? Naprawde z php etc jestem zielony; /


Cytat(Cysiaczek @ 23.02.2008, 16:01:06 ) *
Ostatni raz proszę Ciebie o dodanie BBCODE


teraz Ok ? Sry ale jestem tu nowy i jeszcze trochę się mieszam.
Cysiaczek
Tutka na zmianę atrybutów pliku przez klienta FTP? Nie przesadzasz troszkę? Umiesz obsługiwać klienta FTP, prawda? To po prostu kliknij na plik i wybierz jakąś opcję zbliżoną do "zmień atrybuty", "właściwości" etc. Zaznacz wszystkie pola.
l0ud
heh...

http://webmade.org/porady/ogolne/chmod.php

nadaj chmod 777 na ten plik...
Luu
Okej, poradziłem sobie.
Ale teraz nie wiem jak zrobić żeby można było to połączyć z kodem html ?

No bo mam np.
(...)
  1. <img src="xxx.jpg" width="530">


i pod nim chciałbym mieć ten formularz do komentowania.

Kiedy poprostu skopiuje kod php do pliku html i zapisze *.php to mam jakieś błedy.

Mógłbyś mi jeszcze z tym pomóc? Bardzo proszę.
Cysiaczek
Cytat
Kiedy poprostu skopiuje kod php do pliku html i zapisze *.php to mam jakieś błedy.


Właśnie to Ci próbuję uświadomić - my nie wróżki i musisz nam podać te błędy, żebyśmy mogli pomóc.
Pod tym obrazkiem daj
  1. <?php
  2. include('nazwa_skryptu.php');
  3. ?>


--edit
Oczywiście zapisz główny plik jako .php
l0ud
zapisz całość do pliku np. comments.php

i w miejscu na stronie, gdzie to ma się pojawić dodaj

  1. <?php include('comments.php'); ?>


plik gdzie jest dołączany skrypt, musi mieć rozszerzenie php smile.gif
Luu
Dzięki! Super winksmiley.jpg Działa!

Ale jeszcze pare pytań, teraz jak chcę do innej fotki dodać formularz to za każdym razem muszę dodać nowy skrypt + .txt do zapisywania wiadomości ?


Czy wystarczy tutaj coś dodać:
  1. <?php
  2. // nazwa pliku z trescia komentarzy
  3.  $nazwa = 'komentarze.txt';
  4. ?>

Jeśli tak to jak to zrobić ? ;>
I jeszcze czy jest możliwość zmiany koloru tekstu dodawanych wypowiedzi ? Bo tak się składa że mam stronę w kolorze bardzo ciemny szary i ledwo widać te komentarze ;( A że zapisuje te pliki w txt to właśnie nie wiem jak to zrobić, wie ktoś może ?


[a tak trochę offtopem, Cysiaczek, z GW widzę jestes;) Heeh ja mieszkam 11 km od tegoż miasta ale tam się uczę ;D]
Ale okej, to nie ważne, jeśli możecie to jeszcze w tym mi pomóżccie winksmiley.jpg
l0ud
Co do pliku. Najprościej, zamień w skrypcie:

Kod
  // nazwa pliku z trescia komentarzy
   $nazwa = 'komentarze.txt';


na

Kod
if (empty($nazwa)) exit;


a następnie dołączaj skrypt w ten sposób:
  1. <?php
  2. $nazwa = 'komentarze.txt';
  3. include('comments.php');
  4. ?>

Plik może być już inny smile.gif Tylko najpierw go utwórz i nadaj mu chmody.
Zmiany koloru tekstu dokonaj w skrypcie, bo to on przecież 'zlepia' wszystko w całość. Zainteresuj się tą linijką:
  1. <?php
  2. echo '<br /><b>'.$komentarz[0].'</b><br />'.$komentarz[1].'<br /><i>'.$komentarz[2].'</i><br />';
  3. ?>

...kodem html wysłanym przed całym skryptem smile.gif
Luu
Niestety cały czas zapisuje mi w to samo miejsce ;(

Mam poprostu wkleić to:
  1. <?php
  2. if (empty($nazwa)) exit;
  3. ?>


za to:
  1. <?php
  2. $nazwa = 'komentarze.txt';
  3. ?>



i później zamiast :
  1. <?php include('comments.php'); ?>

dodawać :
  1. <?php
  2. $nazwa = 'komentarze.txt';
  3. include('comments.php');
  4. ?>

questionmark.gif?


W pierwszy pliku dałem:
  1. <?php
  2. $nazwa = 'komentarze.txt';
  3. include('comments.php');
  4. ?>


a w drugim:
  1. <?php
  2. $nazwa = 'komentarze1.txt';
  3. include('comments.php');
  4. ?>


i kurcze i tak wszystko zapisuje w komentarze.txt ;(
Gdzieś robie błąd? Chmoda mam na 777
l0ud
W pliku skryptu nie ma być śladu po 'komentarze.txt'. Musisz usunąć linię z tym związaną i dać tam if (empty($nazwa)) exit; (tak jak napisałem wcześniej).

Dołączasz np. w ten sposób:

  1. <?php
  2. $nazwa = 'komentarze1.txt';
  3. include('comments.php');
  4. ?>


I nie ma szans raczej nie działać smile.gif
Cysiaczek
eee

Fotka1.php
  1. <?php
  2. $nazwa='komantarze.txt'; // i tyle - nic nie zmieniaj
  3. include('comments.php');
  4. ?>


Fotka2.php
  1. <?php
  2. $nazwa='komantarze2.txt'; // i tyle - nic nie zmieniaj
  3. include('comments.php');
  4. ?>
Luu
Heeh super, działa ;d

I chyba ostatnie pytanie, idzie ten kod zmodyfikować aby np. na stronie było max powiedzmy 5 komentarzy a stare usuwał bądź były niewidoczne?
l0ud
Cytat(Luu @ 23.02.2008, 17:32:09 ) *
I chyba ostatnie pytanie, idzie ten kod zmodyfikować aby np. na stronie było max powiedzmy 5 komentarzy a stare usuwał bądź były niewidoczne?


comments.php
  1. <b>Komentarze</b><br /><br />
  2.  
  3. <table>
  4.  
  5.  
  6.  
  7. <?php
  8.  
  9.  // nazwa pliku z trescia komentarzy - obowiazkowa
  10.  if (empty($nazwa)) exit;
  11.  
  12.  
  13.  // zapis jesli co wyslano z formularza
  14.  if($_POST['tytul'] & $_POST['tresc'] & $_POST['autor'])
  15.  {
  16. $fp=fopen($nazwa, 'a');
  17. flock($fp, 2);
  18. fwrite($fp,$_POST['tytul'].'||'.strip_tags(strtr($_POST['tresc'],'\n',' ')).'||'.$_POST['autor'].'\n');
  19. flock($fp, 3);
  20. fclose($fp);
  21.  }
  22.  
  23.  // jezeli juz istnieja jakies komentarze
  24.  if(is_file($nazwa))
  25.  {
  26. $linia = explode('\n',file_get_contents($nazwa));
  27. $ilosc = count($linia);
  28. for($i=$ilosc; $i>=$ilosc-6; $i--)
  29. {
  30.  if (empty($linia[$i])) continue;
  31.  $komentarz = explode('||',$linia[$i]);
  32.  echo '<br /><b>'.$komentarz[0].'</b><br />'.$komentarz[1].'<br /><i>'.$komentarz[2].'</i><br />';
  33. }
  34.  }
  35.  else
  36. echo 'Jeszcze nie ma zadnych komentarzy. Badz pierwszy i skomentuj!<br /><br />';
  37.  
  38. ?>
  39. <font color="white" size="+1">
  40. </table>
  41.  
  42. <form action="" method="POST">
  43. <table><tr><td>Tytul </td><td><input type="text" name="tytul" /></td></tr>
  44. <tr><td>Tresc</td><td><textarea cols="30" name="tresc" rows="7"></textarea> </td></tr>
  45. <tr><td>Autor </td><td><input type="text" name="autor" /> </td></tr>
  46. <tr><td><input type="submit" value="Dodaj komentarz" /></td></tr></table>
  47. </form></font>


Wyświetla 5 ostatnich komentarzy, w kolejności od najnowszego.

Co do zmiany koloru... Wskazałem linię, gdzie skrypt wyświetla komentarz. Możesz tam wpleść swój kod html.
Luu
Super, także działa winksmiley.jpg )))
A kolory już sobie zrobiłem...
Eh i kolejne pytanie ;P
czy da się formulaż przybliżyć trochę do tekstu a "Submit" bardziej wycentrować ?
Tak jak na grafice:


Próbowałem ale nie wiem, mi coś np ten submit nie chce się wycentrować worriedsmiley.gif
empuszek
edytuj tylko ten kawałek kodu
  1. <form action="" method="POST">
  2. <table><tr><td>Tytul </td><td><input type="text" name="tytul" /></td></tr>
  3. <tr><td>Tresc</td><td><textarea cols="30" name="tresc" rows="7"></textarea> </td></tr>
  4. <tr><td>Autor </td><td><input type="text" name="autor" /> </td></tr>
  5. <tr><td>&nbsp;</td><td><input type="submit" value="Dodaj komentarz" /></td></tr></table>
  6. </form></font>
l0ud
Co do centrowania...

Kod
<form action="" method="POST">
<table><tr><td>Tytul </td><td><input type="text" name="tytul" /></td></tr>
<tr><td>Tresc</td><td><textarea cols="30" name="tresc" rows="7"></textarea> </td></tr>
<tr><td>Autor </td><td><input type="text" name="autor" /> </td></tr>
<tr><td colspan="2"><p style="text-align:center"><input type="submit" value="Dodaj komentarz" /></p></td></tr></table>
</form></font>


Bardzo polecam zacząć od jakiegoś dobrego kursu o HTML i CSS. Nie będziemy Cię przecież prowadzić za rękę na każdym kroku smile.gif

Poczytaj sobie:
http://www.kurshtml.boo.pl/
Luu
Super, genialnie, o to mi właśnie chodziło ;]

Co do html'a. Umiem tylko właśnie próbowałem tak normalnie centrować i mi nie szło. A uczyć też uczyłem się z tej strony ale to już jakiś czas temu. Teraz w szkolę [technikum] jadę znowu a jak czegoś nie wiem to zazwyczaj na tą stronkę lecę.
Ale ok, dzięki wielkie za pomoc ;] Macie oboje "pomógł" i już chyba wszystko ;p
Chyba, bo jeszcze jest taka sprawa, chciałem dodać muzykę na strone, znaczy odtwarzać. Coś takiego jak jest właśnie na wrzuta.pl
Mam kilka plików i klikam na któryś i mogę sobie odsłuchać.
Nie musi być jakiś kombajn, wystarczą podstawy - start, strop, przewijanie i ew. głośność.

Macie coś takiego może ?
kacpereczek
Edytowałem ten skrypt dostosowując go do swoich potrzeb, ale mi coś nie wyszło.
Wyskakuje mi taki błąd
Cytat
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/sites/moja strona/gallery/comments.php on line 14


Mój kod:
  1. <center><h3>Komentarze<h3></center>
  2.  
  3. <?php
  4.  
  5.  // nazwa pliku z trescia komentarzy - obowiazkowa
  6.  if (empty($nazwa)) exit;
  7.  
  8.  
  9.  // zapis jesli co wyslano z formularza
  10.  if($_POST['nick'] & $data=date('d/m/Y H:i:s') & $ip=$_SERVER['REMOTE_ADDR'] & $_POST['tresc'])
  11.  {
  12. $fp=fopen($nazwa, 'a');
  13. flock($fp, 2);
  14. fwrite($fp, $_POST['nick'].'|||'.$data.'|||'.$ip.'|||'.$_POST['tresc'])'\n';
  15. flock($fp, 3);
  16. fclose($fp);
  17.  }
  18.  
  19.  // jezeli juz istnieja jakies komentarze
  20.  if(is_file($nazwa))
  21.  {
  22. $linia = explode('\n',file_get_contents($nazwa));
  23. $ilosc = count($linia);
  24. for($i=$ilosc; $i>=$ilosc-6; $i--)
  25. {
  26. if (empty($linia[$i])) continue;
  27.  $komentarz = explode('|||',$linia[$i]);
  28.  echo "<center><table width='35%' cellpadding='2' cellspacing='2'>
  29. <tr>
  30. <td align='center'>$komentarz[0] @ $komentarz[1] @ $komentarz[2]</td>
  31. </tr>
  32. <tr>
  33. <td align='center'>$komentarz[0]</td>
  34. </tr>
  35.  </table></center><br>\n";
  36. }
  37.  }
  38.  else
  39. echo 'Jeszcze nie ma żadnych komentarzy. Badź pierwszy i skomentuj!<br><br>';
  40. ?>
  41.  
  42. <center><form action="" method="POST">
  43. <table width='35%' cellpadding='2' cellspacing='2'>
  44. <tr>
  45. <td align='right'>Nick:</td>
  46. <td><input type='text' name='nick' style='font-size: 12px; width: 300px'></td>
  47. </tr>
  48. <tr>
  49. <td align='right' valign='top'>Treść:</td>
  50. <td><textarea name='tresc' style='font-size: 12px; width: 300px; height: 150px'></textarea></td>
  51. </tr>
  52. <tr>
  53. <td align='center' colspan='2'><input type='reset' name='Reset' value='Usuń' style='width: 100px; height: 20px; border-color: #000000; border-width: 1px'>
  54. <input type='submit' name='Submit2' value='Dodaj' style='width: 100px; height: 20px; border-color: #000000; border-width: 1px'></td>
  55. </tr>
  56. </table>
  57. </form></center>


Bardzo proszę o pomoc,
Pozdrawiam.
l0ud
Spraprałeś tą linię:
  1. <?php
  2. fwrite($fp, $_POST['nick'].'|||'.$data.'|||'.$ip.'|||'.$_POST['tresc'])'\n';
  3. ?>


Powinno być raczej:
  1. <?php
  2. fwrite($fp, $_POST['nick'].'|||'.$data.'|||'.$ip.'|||'.$_POST['tresc'].'\n');
  3. ?>


Być może nie tylko to jest źle winksmiley.jpg Dalej nie sprawdzałem.
so0okol
Mam problem z tym skryptem, nie chce mi pokazywać treści komentarza.
Zresztą sami sprawdźcie:

http://ijaja.cba.pl/O_Jasiu/dodaj-jas/dodaj-jas.php
nospor
komunikat bledy chyba dosc jasny: nieoczekiwany przecinek.
sobie zajrzyj do linii na ktorą wskazuje i popraw smile.gif
ggmrsl
Witam!
Jestem zielony jeśli chodzi o PHP, ale chciałbym umieścić możliwość komentowania newsów na mojej stronie. Skrypt jest bardzo podobny do podanego kilka postów wcześniej (wprowadziłem tylko niewielkie zmiany):
  1. <div style="text-align:justify; margin-bottom:5px solid #F7F7F7;">
  2. <p class="naglowek_2" align="center">
  3. <b><i>Komentarze:</i></b><br /></p>
  4. <table>
  5. <?php
  6. // nazwa pliku z trescia komentarzy - obowiazkowa
  7. if (empty($nazwa)) exit;
  8. // zapis jesli co wyslano z formularza
  9.  
  10. if($_POST['tytul'] & $_POST['tresc'] & $_POST['autor'])
  11.  
  12. {
  13. $fp=fopen($nazwa, 'a');
  14. flock($fp, 2);
  15. fwrite($fp,$_POST['tytul'].'||'.strip_tags(strtr($_POST['tresc'],'\n',' ')).'||'.$_POST['autor'].'\n');
  16.  
  17. flock($fp, 3);
  18.  
  19. fclose($fp);
  20.  
  21. }
  22. // jezeli juz istnieja jakies komentarze
  23.  
  24. if(is_file($nazwa))
  25. {
  26. $linia = explode('\n',file_get_contents($nazwa));
  27. $ilosc = count($linia);
  28. for($i=$ilosc; $i>=$ilosc-6; $i--)
  29. {
  30. if (empty($linia[$i])) continue;
  31. $komentarz = explode('||',$linia[$i]);
  32.  
  33. echo '<br /><b>'.$komentarz[0].'</b><br />'.$komentarz[1].'<br /><i>'.$komentarz[2].'</i><br />';
  34.  
  35. }
  36.  
  37. }
  38.  
  39. else
  40.  
  41. echo 'Jeszcze nie ma zadnych komentarzy. Badz pierwszy i skomentuj!<br /><br />';
  42.  
  43. ?>
  44.  
  45. <font color="white" size="+1">
  46.  
  47. </table>
  48.  
  49.  
  50. <form action="" method="POST">
  51.  
  52. <table><tr><td>Tytuł </td><td><input type="text" name="tytul" /></td></tr>
  53.  
  54. <tr><td>Treść</td><td><textarea cols="30" name="tresc" rows="7"></textarea> </td></tr>
  55.  
  56. <tr><td>Autor </td><td><input type="text" name="autor" /> </td></tr>
  57.  
  58. <tr><td><input type="submit" value="Dodaj komentarz" /></td></tr></table>
  59.  
  60. </form></font>


Na stronie gdzie chcę żeby wyświetlało mi komentarze wprowadziłem:

  1. <script language="php">
  2. $nazwa = 'komentarze/komentarz1.txt';
  3. include("comments.php");
  4. </script>


Pytanie 1 - Co trzeba zrobić by po dodaniu wpisu podczas odświeżania strony komentarz się nie powielał?
Pytanie 2 - W jaki sposób zamienić kod tak aby po dodaniu komentarza przed jego treścią pola z nazwą autora, tematem i treścią wpisu były podpisane? Chodzi mi o mniej więcej taką formę:
Komentarze:
Tytuł: jakaś tam treść
Autor: jakaś tam nazwa
Treść komentarza: jakaś tam treść
No i może 3 pytanie, które nie jest aż tak ważne - W jaki sposób edytować kod tak aby oprócz komentarza, autora i tematu wyświetlał datę wpisu?
Wiem, że to prośba w stylu: ZRÓB COŚ ZA MNIE, ale mam wprowadzić jedną zmianę na pewnej stronie internetowej i szczerze mówiąc nie chce mi się przerabiać kursu PHP wiedząc, że prędko nie będę miał z tym do czynienia.
Z góry dziękuję za ewentualną pomoc!
Pozdrawiam.
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.