Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System Komentarzy
Forum PHP.pl > Forum > Przedszkole
Gość_kuba
mam takie dwa problemy, ktore nie wiem jak rozwiazac, poniewaz bede to robil pierwszy raz...

1. chcialbym zrobic system komentarzy... mam na razie plik autor2.php?link=komentarze, w ktorym napisalem skrypt wyswietlajacy mi wszystkie komentarze.
jak natomiast zrobic, zeby wyswietlalo mi tylko 10 ostatnich? a po kliknieciu na numer strony, kolejne 10 itd.?

2. przepraszam, nad tym musze sie sam zastanowic, wiec na razie - nic.
rogrog
masz to na plikach tekstowych czy na bazie danych??

bo jak np. mysql to dajesz:

  1. LIMIT 0, 10


a potem

  1. LIMIT 10, 20


itd.

poszukaj o stronicowaniu
Misiek
Na tym forum było to wiele razy. Sam nie tak dawno napisałem komuś kod na zrobienie zakładek. Poszukaj.

Pozdrawiam
Gość_kuba
no to zrobilem cos takiego...
poszukalem, pokopiowalem, pozmienialem, dodalem od siebie storzylem cos, co powinno mi wyswietlac 10 komentarzy na kazdej stronie, a na dole powinny byc linki do kolejnych stron z kolejnymi komentarzami.
jednak gdzies jest blad... wg tego co jest mi zwracane, to w linii 19:

Parse error: parse error, unexpected ')' in c:\inetpub\wwwroot\kuba\inc\autor_komentarze2.inc on line 19

a to jest kod:

  1. <?php
  2. //zliczanie komentarzy
  3. require_once ('../polacz.php');
  4.  
  5. //ustawienie ilosc komentarzy na stronie
  6. $ilosc_kom = 10; //ilość rekordów na stronie;
  7.  
  8. //skrypt wyswietlajacy okreslona liczbe komentarzy
  9. if (!isset($_GET['id'])) {
  10. $_GET['id'] = 0;
  11. } else {
  12. $liczba_kom = $_GET['id'];
  13. }
  14.  
  15. $query1 = &#092;"SELECT nick FROM autor_komentarze\";
  16. $result1 = @mysql_query($query1);
  17. $numer = mysql_num_rows ($result1);
  18.  
  19. $query = &#092;"SELECT numer, data, nick, email, adres, tresc FROM autor_komentarze ORDER B
    Y
  20. data DESC LIMIT \" . ($liczba_kom*$ilosc_kom) . \"\" . $ilosc_kom);
  21. $result = @mysql_query ($query);
  22. if ($result) {
  23. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  24. echo '<table class=\"komentarz\" cellspacing=\"0\" cellpadding=\"0\">';
  25. echo '<tr>';
  26. echo '<td class=\"numer\" rowspan=\"5\">' . $numer-- . '.' . '</td>';
  27. echo '<td class=\"nick\">' . stripslashes($row[2]) . '</td>';
  28. echo '</tr>';
  29. echo '<tr>';
  30. echo '<td class=\"email\">' . '<a href=\"mailto:' . stripslashes($row[3]) . '\">' . stripslashes($row[3]) . '</a>' . '</td>';
  31. echo '</tr>';
  32. echo '<tr>';
  33. echo '<td class=\"adres\">' . '<a href=\"' . stripslashes($row[4]) . '\" target=\"_blank\">' . stripslashes($row[4]) . '</a>' . '</td>';
  34. echo '</tr>';
  35. echo '<tr>';
  36. echo '<td class=\"data\">' . stripslashes($row[1]) . '</td>';
  37. echo '</tr>';
  38. echo '<tr>';
  39. echo '<td class=\"tresc\">' . stripslashes($row[5]) . '</td>';
  40. echo '</tr>';
  41. echo '</table>';
  42. }
  43. mysql_free_result ($result);
  44. } else {
  45. echo 'awaria systemu' . '<br />' . mysql_error();
  46. }
  47.  
  48. //zamkniecie polaczenia
  49. mysql_close();
  50.  
  51. //kod odpowiedzialny za zakladki
  52. while ($liczba_kom % $ilosc_kom != 0) {
  53. $liczba_kom++;
  54. }
  55.  
  56. echo '<div id=\"strony\">';
  57. $ilosc_str = $liczba_kom / $ilosc_kom;
  58. $a = ($_GET ['id'] + $ilosc_kom) / $ilosc_kom;
  59. if ($ilosc_str > 1) {
  60. for ($k=1; $k<=$ilosc_str; $k++) {
  61. if ($k == $a) {
  62. echo \"[$k] \";
  63. } else {
  64. $d = ($k * $ilosc_kom) - $ilosc_kom;
  65. echo \"[<a href=\"autor2.php?link=komentarze&d=$d\">\";
  66. echo \"$k</a>] \";
  67. }
  68. }
  69. }
  70. print '</echo>';
  71. ?>
Gość_kuba
ok - blad twkil w tym, ze w zapytanie SELECT przypisanem do $query dalem na koncu niepotrzebnie zamkniecie nawiasu. prawidlowy kod to:

  1. <?php
  2. $query = &#092;"SELECT numer, data, nick, email, adres, tresc FROM autor_komentarze ORDER B
    Y
  3. data DESC LIMIT \" . ($liczba_kom*$ilosc_kom) . \"\" . $ilosc_kom;
  4. ?>


dodalem jeszcze funkcje str_replace, zeby automatycznie robilo mi lamanie wierszy z trescia pochodzaca z pola 'tresc':

  1. <?php
  2. $tresc = $row[5];
  3. $tresc = str_replace(&#092;"n\",\"<br>\",$tresc);
  4. echo '<td class=\"tresc\">' . stripslashes($tresc) . '</td>';
  5. ?>


teraz za to nie moze odczytac zmiennej $liczba_kom

to jest kod obslugujacy system komentarzy:

  1. <?php
  2. //zliczanie komentarzy
  3. require_once ('../polacz.php');
  4.  
  5. //ustawienie ilosc komentarzy na stronie
  6. $ilosc_kom = 10; //ilość rekordów na stronie;
  7. $liczba_kom = 20;
  8.  
  9. //skrypt wyswietlajacy okreslona liczbe komentarzy
  10. if (!isset($_GET['id'])) {
  11. $_GET['id'] = 0;
  12. } else {
  13. $liczba_kom = $_GET['id'];
  14. }
  15.  
  16. $query1 = &#092;"SELECT nick FROM autor_komentarze\";
  17. $result1 = @mysql_query($query1);
  18. $numer = mysql_num_rows ($result1);
  19.  
  20. $query = &#092;"SELECT numer, data, nick, email, adres, tresc FROM autor_komentarze ORDER B
    Y
  21. data DESC LIMIT \" . 
  22.  
  23. ($liczba_kom*$ilosc_kom) . \", \" . $ilosc_kom;
  24. $result = @mysql_query ($query);
  25. if ($result) {
  26. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  27. echo '<table class=\"komentarz\" cellspacing=\"0\" cellpadding=\"0\">';
  28. echo '<tr>';
  29. echo '<td class=\"numer\" rowspan=\"5\">' . $numer-- . '.' . '</td>';
  30. echo '<td class=\"nick\">' . stripslashes($row[2]) . '</td>';
  31. echo '</tr>';
  32. echo '<tr>';
  33. echo '<td class=\"email\">' . '<a href=\"mailto:' . stripslashes($row[3]) . '\">' . stripslashes($row[3]) . '</a>' . '</td>';
  34. echo '</tr>';
  35. echo '<tr>';
  36. echo '<td class=\"adres\">' . '<a href=\"' . stripslashes($row[4]) . '\" target=\"_blank\">' . stripslashes($row[4]) . '</a>' . 
  37.  
  38. '</td>';
  39. echo '</tr>';
  40. echo '<tr>';
  41. echo '<td class=\"data\">' . stripslashes($row[1]) . '</td>';
  42. echo '</tr>';
  43. echo '<tr>';
  44. $tresc = $row[5];
  45. $tresc = str_replace(\"n\",\"<br>\",$tresc);
  46. echo '<td class=\"tresc\">' . stripslashes($tresc) . '</td>';
  47. echo '</tr>';
  48. echo '</table>';
  49. }
  50. mysql_free_result ($result);
  51. } else {
  52. echo 'awaria systemu' . '<br />' . mysql_error();
  53. }
  54.  
  55. //zamkniecie polaczenia
  56. mysql_close();
  57.  
  58. //kod odpowiedzialny za zakladki
  59. while ($liczba_kom % $ilosc_kom != 0) {
  60. $liczba_kom++;
  61. }
  62.  
  63. echo '<div id=\"strony\">';
  64. $ilosc_str = $liczba_kom / $ilosc_kom;
  65. $a = ($_GET ['id'] + $ilosc_kom) / $ilosc_kom;
  66. if ($ilosc_str > 1) {
  67. for ($k=1; $k<=$ilosc_str; $k++) {
  68. if ($k == $a) {
  69. echo \"[$k] \";
  70. } else {
  71. $d = ($k * $ilosc_kom) - $ilosc_kom;
  72. echo \"[<a href=\"autor2.php?link=komentarze&d=$d\">\";
  73. echo \"$k</a>] \";
  74. }
  75. }
  76. }
  77. echo '</echo>';
  78. ?>
Misiek
Co to znaczy, że nie może odczytać zmiennej? Wyskakuje jakiś błąd związany z tą zmienną?
Gość_kuba
dobra, teraz mam kod troche zmieniony.
prawie wszystko jest jak powinno, z tym ze...
1. zalozmy, ze mam 23 komentarze. na pierwszej stronie wyswietla mi sie 10, na drugiej wszystkie pozostale, a na 3 - trzy. chcialbym, zeby na drugiej tez bylo tylko 10.
2. dojde do ostatniej strony z komentarzami, to mimo to mam link 'nastepna strona'. jak zrobic, zeby sie nie wyswietlal?

oto kod:
  1. <?php
  2. //polacz z baza
  3. require_once ('../polacz.php');
  4.  
  5. //ilosc wyswietlanych komentarzy na stronie
  6. $ilosc_na_stronie = 10;
  7.  
  8. //sprawdza czy istnieje zmienna start i ustawia wartosc zmiennej $end
  9. if (!isset($_GET['start'])) {
  10. $start = 0;
  11. $end = 10;
  12. } else {
  13. $start = $_GET['start'];
  14. $end = $start + 10;
  15. }
  16.  
  17. //zlicza ilosc wszystkich komentarzy
  18. $query1 = mysql_query(&#092;"SELECT numer FROM autor_komentarze\");
  19. $ilosc = mysql_num_rows ($query1);
  20.  
  21. $numer = $ilosc - $start;
  22.  
  23. //zapytanie do bazy i wyswietlenie komentarzy
  24. $query2 = mysql_query(&#092;"SELECT data, nick, email, adres, tresc FROM autor_komentarze ORDER BY data 
    D
  25. SC LIMIT \" . $start . \",\" . $end);
  26. if ($query2) {
  27. while ($row = mysql_fetch_array($query2, MYSQL_NUM)) {
  28. echo '<table class=\"komentarz\" cellspacing=\"0\" cellpadding=\"0\">';
  29. echo '<tr>';
  30.  
  31. echo '<td class=\"numer\" rowspan=\"5\">' . $numer-- . '.' . '</td>';
  32. echo '<td class=\"nick\">' . stripslashes($row[1]) . '</td>';
  33. echo '</tr>';
  34. echo '<tr>';
  35. echo '<td class=\"email\">' . '<a href=\"mailto:' . stripslashes($row[2]) . '\">' . stripslashes($row[2]) . '</a>' . '</td>';
  36. echo '</tr>';
  37. echo '<tr>';
  38. echo '<td class=\"adres\">' . '<a href=\"' . stripslashes($row[3]) . '\" target=\"_blank\">' . stripslashes($row[3]) . '</a>' . '</td>';
  39. echo '</tr>';
  40. echo '<tr>';
  41. echo '<td class=\"data\">' . stripslashes($row[0]) . '</td>';
  42. echo '</tr>';
  43. echo '<tr>';
  44. $tresc = $row[4];
  45. $tresc = str_replace(\"n\",\"<br>\",$tresc);
  46. echo '<td class=\"tresc\">' . stripslashes($tresc) . '</td>';
  47. echo '</tr>';
  48. echo '</table>';
  49. }
  50.  
  51. //linki
  52. echo '<div id=\"linki\">';
  53. if ($ilosc > 10) {
  54. $next = $start + 10;
  55. echo \"<a href=\"autor2.php?link=komentarze&start=\" . $next . \"\">następna strona</a>\";
  56. }
  57. if ($start != 0) {
  58. $prev = $start - 10;
  59. echo \" | <a href=\"autor2.php?link=komentarze&start=\" . $prev . \"\">poprzednia strona</a>\";
  60. }
  61. echo '</div>';
  62.  
  63. } else {
  64. echo 'awaria systemu' . '<br />' . mysql_error();
  65. }
  66.  
  67. ?>
Misiek
Nie mam za bardzo czasu na pisanie kodu. Pisałem kiedyś kod na zakładki. Jeśli chodzi o pierwsze pytanie to wg mojej wersji: sprawdzasz, czy wyświetlana strona jest ostatnią zakładką i jeśli tak to wyświetlasz ostatnie 10. Jak to zrobić? Od ilości wpisów odejmujesz 10 i wrzucasz obie te zmienne do pętli wypisującej. Co do pytania drugiego: jeśli wyświetlana strona jest ostatnią zakładką, nie wypisujesz linku. Wszystko to robisz za pomocą instrukcji warunkowej.

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.