Skrypt paginacji wykorzystany do obrazków:

  1. <?php
  2. $dir = "images"; // katalog z plikami
  3.  
  4. define('wiersze',10);
  5. define('kolumny',1);
  6.  
  7. $i = 0;
  8.  
  9. foreach (glob("$dir/{*.jpg,*.png,*.gif,*.JPG,*.PNG,*.GIF}",GLOB_BRACE ) as $name) {
  10. $tablica[$i] = "<a href=\"".$name."\"><img src=\"".$name."\" alt=\"loading...\" width=800> <br></a>";
  11. $i++;
  12. }
  13. $ilosc = count($tablica); // ilosc zdjec w katalogu
  14. $iloscNaStronie = wiersze*kolumny; //maksymalna ilosc na stronie
  15. $iloscStron = ceil($ilosc/$iloscNaStronie); // wylicza ilosc stron
  16. if($_GET['strona'] && $_GET['strona'] > 0 && $_GET['strona'] <= $iloscStron) $strona = $_GET['strona']-1;
  17. else $strona = 0;
  18. $start = $strona * $iloscNaStronie;
  19. if($start >= $ilosc) $start = 0;
  20. $stop = $start + $iloscNaStronie;
  21. if($stop >= $ilosc) $stop = $ilosc;
  22. for($i = $start; $i < $stop; $i++){
  23.  
  24. if (!($i % kolumny)){
  25. echo "<br />";
  26. }
  27. echo $tablica[$i];
  28. }
  29. echo '<div align="center">';
  30. if($strona > 0) echo '<a href="images.php?strona='.($strona).'"> &laquo; Previous </a>';
  31. else echo ' &laquo; Previous ';
  32. for($i = 1; $i <= $iloscStron; $i++){
  33. if($_GET['strona'] == $i){
  34.  
  35. echo '<b> ['.$i.'] </b>';
  36. } else {
  37. echo '<a href="images.php?strona='.$i.'" > ['.$i.'] </a>';
  38. }
  39. }
  40. echo $linki;
  41. if($strona < $iloscStron-1) echo '<a href="images.php?strona='.($strona+2).'"> Next &raquo; </a>';
  42. else echo ' Next &raquo; ';
  43. echo '</div>';
  44. ?>


Teraz moje 2 pytania:
1. Stronicowanie działa poprawnie, natomiast po kliknięciu obrazka otwiera mi go w nowym oknie, nie wiem jak spowodować otwarcie strony z obrazkiem i komentarzami pod nim (gdy podłączę do tego pobieranie rekordów z bazy i trochę spreparuje to żądany efekt jest, ale połowicznie, ponieważ nie wybiera właściwego id obrazka tylko losowe. (obrazki wyświetlam jako widok.php?id=... gdzie kropki to wartość id danego obrazka w bazie).
2. chciałbym jeszcze zbudować stronicowanie komentarzy pod takim obrazkiem, niestety za to już nie wiem jak się zabrać.
Poniżej skrypty komentarzy oraz strony widoku.

komentarze.php
  1. <?php
  2. include('mysql.php');
  3.  
  4. // Pobieramy pełny adres strony na której wysyłany jest komentarz
  5. $lokalizacja = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  6. // Pobieramy adres aktualnej strony bez nazwy domeny, czyli np.: "jakis-artykul.php", do bazy danych
  7. $adres = $_SERVER['REQUEST_URI'];
  8.  
  9. // Jeżeli został wciśnięty przycisk "wyślij"
  10. if (isset ($_POST['wys_kom'])) {
  11.  
  12. // Jeżeli nick jest pusty
  13. if (empty($_POST['nick'])) {
  14. $komunikat .= '<p> wpisz nick </p>' ;
  15. } else {
  16. $nick = ($_POST['nick']);
  17. }
  18.  
  19. // Jeżeli komentarz jest pusty
  20. if (empty($_POST['komentarz']) ) {
  21. $komunikat .= '<p> wpisz komentarz </p>';
  22. } else {
  23. $koment = stripslashes($_POST['komentarz']);
  24. }
  25.  
  26. //Jeżeli nie ma żadnego błędu
  27. if (!isset($komunikat)) {
  28. $zapytanie = "INSERT INTO komentarze (url, nick, data, komentarz) VALUES ('$adres', '$nick', NOW(), '$koment')";
  29. mysql_query("set names utf8;");
  30. if ($rezultat = mysql_query ($zapytanie)) {
  31. header ("Location: " . $_SERVER['HTTP_REFERER']);
  32. exit();
  33. } else {
  34. $komunikat = '<p>Przepraszamy za chwilowe usterki. Wysłanie komentarza nie było możliwe. Spróbuj później.</p>';
  35. }
  36. }
  37. }
  38.  
  39. <body> ';
  40.  
  41. // Wyświetla wszystkie komentarze do tego artykułu
  42. echo'<h2> komentarze:</h2>';
  43.  
  44. $zapytanie2 = "SELECT * FROM komentarze WHERE url = '$adres' ORDER BY id";
  45. mysql_query("set names utf8;");
  46. $rezultat2 = mysql_query ($zapytanie2);
  47. while ($dane = @mysql_fetch_array ($rezultat2, MYSQL_ASSOC)) {
  48. <div class="koment">
  49. <p class="koment_nag"><b>',$dane['nick'],'</b> (',$dane['data'],')</p>
  50. <p>',nl2br($dane['komentarz']),'</p>
  51. </div>';
  52. }
  53.  
  54. // Jeżeli są jakieś komunikaty - wyświetl je
  55. if (isset($komunikat)) {
  56. echo '<div class="komunikat">'.$komunikat.'</div>';
  57. }
  58.  
  59. // Formularz wysyłania komentarza
  60. <div class="formularz">
  61. <h2> dodaj komentarz: </h2>
  62. <form action="'.$lokalizacja.'" method="post">
  63. <p><b> nick </b>: <br /><input type="text" name="nick" size="35" maxlength="35" /></p>
  64. <p><b> komentarz </b>:<br /><textarea name="komentarz" cols="77" rows="10" ></textarea></p>';
  65. echo '</div>
  66. <p class="submit"><input type="submit" name="wys_kom" value="wyslij" class="przycisk"/></p>
  67. </form>
  68. </body>
  69. </html>';
  70. ?>


widok.php
  1. <?php
  2. include('mysql.php');
  3.  
  4. if(!$_GET['id']){
  5. header("Location: index.php");
  6. }
  7. $id = $_GET['id'];
  8. $search_image = mysql_query("SELECT * FROM images WHERE id='$id'");
  9.  
  10. if(mysql_num_rows($search_image) == 0){
  11. header("Location: index.php");
  12. }
  13.  
  14. $info_pic = mysql_fetch_assoc($search_image);
  15. $name_pic = $info_pic['image'];
  16. echo "<img src='img/$name_pic' alt='pic' 'width=500' /> ";
  17.  
  18. include('komentarze.php');
  19. ?>