Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Paginacja
Forum PHP.pl > Forum > Przedszkole
smigla
Witam mam problem z paginacją php mysql. 1. Wywala mi błąd: "Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead" - wiem co oznacza ale nw jak zmienić ten kod żeby nie wyświetlał tego komunikatu.
  1. <?php
  2. //definicja stałych
  3. define('SQL_HOST','localhost');
  4. define('SQL_USER', '');
  5. define('SQL_PASS', '');//hasło admin1 było by już ekstrawagancją ;)
  6. define('SQL_DB', '');//tak sobie nazwałem moją bazę
  7.  
  8. //połączenie
  9. $conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die ("Nie udało sie połączyć z bazą danych MySQL " . mysql_error());
  10. mysql_select_db(SQL_DB, $conn);
  11.  
  12. //informacje do poprawnego kodowania
  13. mysql_query("SET NAMES utf8");
  14. mysql_query("SET CHARACTER SET utf8");
  15. mysql_query("SET collation_connection = utf8_general_ci");
  16. ?>


Drugi błąd polega na tym że wywala mi błąd: "Unknown column 'title' in 'field list'"

  1. <?php
  2. $amount = 123;//to jest liczba naszych newsów jakie dodamy proponuję zostawić bez zmian
  3. $content=<<<EOD
  4. TestTestTestTestTestTestTest
  5. <p class="hidden">TestTestTestTestTestTestTest
  6. TestTestTestTestTestTestTestTest
  7. TestTestTestTestTestTest
  8. TestTestTestTestTestTestTestTestv
  9. TestTestTestTestTestTest</p>
  10. <br />
  11. <br />
  12. <button>Czytaj więcej</button>
  13. <button class="przycisk"> Zwiń</button>
  14. <br />
  15. <br />
  16. TestTestTestTestTestTestTest
  17. <p class="hidden">TestTestTestTestTestTestTest
  18. TestTestTestTestTestTestTestTest
  19. TestTestTestTestTestTest
  20. TestTestTestTestTestTestTestTestv
  21. TestTestTestTestTestTest</p>
  22. <br />
  23. <br />
  24. <button>Czytaj więcej</button>
  25. <button class="przycisk"> Zwiń</button>
  26. <br />
  27. <br />
  28. TestTestTestTestTestTestTest
  29. <p class="hidden">TestTestTestTestTestTestTest
  30. TestTestTestTestTestTestTestTest
  31. TestTestTestTestTestTest
  32. TestTestTestTestTestTestTestTestv
  33. TestTestTestTestTestTest</p>
  34. <br />
  35. <br />
  36. <button>Czytaj więcej</button>
  37. <button class="przycisk"> Zwiń</button>
  38. EOD;
  39.  
  40. for($i = 1; $i <= $amount; $i++){
  41. $title = "Tytuł newsa testowego: ".$i;
  42. $query = "INSERT IGNORE INTO news(title, content)
  43. VALUES ('".$title."','".$content."')";
  44. $result = mysql_query($query) or die (mysql_error());
  45. }
  46.  
  47. //musimy wyciągnąć z bazy informacje o ilości postów ogólnie do wyliczenia ilości stron
  48. //celowo nie kożystamy z SQL_CALC_FOUND_ROWS, bo zależy nam na zabezpieczeniu się przed wś****skimi
  49. //użytkownikami, którzy zmodyfikują url i będą chcieli wejść na stronę jaka nie istnieje
  50. $query = "SELECT COUNT(*) as all_posts FROM news";
  51. $result = mysql_query($query) or die (mysql_error());
  52. $row = mysql_fetch_array($result);
  53. extract($row);
  54.  
  55. $onpage = 5; //ilość newsów na stronę
  56. $navnum = 7; //ilość wyświetlanych numerów stron, ze względów estetycznych niech będzie to liczba nieparzysta
  57. $allpages = ceil($all_posts/$onpage); //wszysttkie strony to zaokrąglony w górę iloraz wszystkich postów i ilości postów na stronę
  58.  
  59. //sprawdzamy poprawnośc przekazanej zmiennej $_GET['page'] zwróć uwage na $_GET['page'] > $allpages
  60. if(!isset($_GET['page']) or $_GET['page'] > $allpages or !is_numeric($_GET['page']) or $_GET['page'] <= 0){
  61. $page = 1;
  62. }else{
  63. $page = $_GET['page'];
  64. }
  65. $limit = ($page - 1) * $onpage; //określamy od jakiego newsa będziemy pobierać informacje z bazy danych
  66.  
  67. $query = "SELECT * FROM news ORDER BY id DESC LIMIT $limit, $onpage";
  68. $result = mysql_query($query) or die (mysql_error());
  69.  
  70. while($row = mysql_fetch_array($result)){
  71. echo "<h1>".$row['title']."</h1>";
  72. echo "<p>".$row['content']."</p>";
  73. echo "<hr>";
  74. }
  75.  
  76. //zabezpieczenie na wypadek gdyby ilość stron okazała sie większa niż ilośc wyświetlanych numerów stron
  77. if($navnum > $allpages){
  78. $navnum = $allpages;
  79. }
  80.  
  81. //ten fragment może być trudny do zrozumienia
  82. //wyliczane są tu niezbędne dane do prawidłowego zbudowania pętli
  83. //zmienne są bardzo opisowę więc nie będę ich tłumaczyć
  84. $forstart = $page - floor($navnum/2);
  85. $forend = $forstart + $navnum;
  86.  
  87. if($forstart <= 0){ $forstart = 1; }
  88.  
  89. $overend = $allpages - $forend;
  90.  
  91. if($overend < 0){ $forstart = $forstart + $overend + 1; }
  92.  
  93. //ta linijka jest ponawiana ze względu na to, że $forstart mogła ulec zmianie
  94. $forend = $forstart + $navnum;
  95. //w tych zmiennych przechowujemy numery poprzedniej i następnej strony
  96. $prev = $page - 1;
  97. $next = $page + 1;
  98.  
  99. //nie wpisujemy "sztywno" nazwy skryptu, pobieramy ja od serwera
  100. $script_name = $_SERVER['SCRIPT_NAME'];
  101.  
  102. //ten fragment z kolei odpowiada za wyślwietenie naszej nawigacji
  103. echo "<div id=\"nav\"><ul>";
  104. if($page > 1) echo "<li><a href=\"".$script_name."?page=".$prev."\">Poprzednia</a></li>";
  105. if ($forstart > 1) echo "<li><a href=\"".$script_name."?page=1\">[1]</a></li>";
  106. if ($forstart > 2) echo "<li>...</li>";
  107. for($forstart; $forstart < $forend; $forstart++){
  108. if($forstart == $page){
  109. echo "<li class=\"current\">";
  110. }else{
  111. echo "<li>";
  112. }
  113. echo "<a href=\"".$script_name."?page=".$forstart."\">[".$forstart."]</a></li>";
  114. }
  115. if($forstart < $allpages) echo "<li>...</li>";
  116. if($forstart - 1 < $allpages) echo "<li><a href=\"".$script_name."?page=".$allpages."\">[".$allpages."]</a></li>";
  117. if($page < $allpages) echo "<li><a href=\"".$script_name."?page=".$next."\">Następna</a></li>";
  118. echo "</ul></div><div class=\"clear\">";
  119. ?>


Zapytanie:
  1. CREATE TABLE IF NOT EXISTS `news` (
  2. `id` int(9) NOT NULL AUTO_INCREMENT,
  3. `title` varchar(255) NOT NULL,
  4. `content` mediumtext NOT NULL,
  5. PRIMARY KEY (`id`),
  6. UNIQUE KEY `title` (`title`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Bardzo proszę o pomoc dodam że jestem zielony w tym temacie
JoShiMa
A sprawdź jaką masz wersję php i jaki masz opis tej funkcji w dokumentacji wink.gif
goartur
Cytat(JoShiMa @ 1.07.2015, 20:11:46 ) *
A sprawdź jaką masz wersję php i jaki masz opis tej funkcji w dokumentacji wink.gif

What?


Oke 1) Poczytaj o mysqli bo mysql to juz nie jest wspierane przez php od paru lat
2) Sprawsz nazwe tabeli.
JoShiMa
Cytat(goartur @ 2.07.2015, 00:53:01 ) *
Oke 1) Poczytaj o mysqli bo mysql to juz nie jest wspierane przez php od paru lat

Toteż właśnie o tym piszę. Tylko chciałam, żeby pytający wykazał się jakąś dozą samodzielności i zajrzał chociaż do manuala.
smigla
Wersja php: 5.5.22
Nazwa tabeli: news
Zaraz coś poczytam o mysqli ale wątpie że uda mi się rozwiązać ten problem sam.
pasman
bez przesady, mysqli nie zawiera żadnej magii.

przykłady
smigla
Chodziło mi bardziej o ten drugi problem smile.gif
goartur
Cytat(smigla @ 2.07.2015, 12:38:42 ) *
Chodziło mi bardziej o ten drugi problem smile.gif



Wejdz do panelu myadmin, przejdz do konsoli i wklej zapytanie:
  1. SELECT * FROM news ORDER BY id DESC LIMIT 0, 5


I pokaz blad.
smigla
Nw czy o to chodziło ale proszę:
  1. Showing rows 0 - 4 (5 total, Wykonanie zapytania trwało 0.0002 sekund(y)) [id: 5 - 1]
  2. SELECT *
  3. FROM news
  4. ORDER BY id DESC
  5. LIMIT 0 , 5

W phpmyadmin nie posiadam chyba konsoli
com
Cytat
Oke 1) Poczytaj o mysqli bo mysql to juz nie jest wspierane przez php od paru lat


co za bzdury, ten komunikat to tylko informacja jest o tym że zostanie usunięte z core, ale to dopiero w wersji 7. I zaleca się już teraz używać mysqli lub PDO, ze względu na to iż tam można min bindować wartości określając odpowiednie typy itp na co nie pozwala mysql bo nie jest już rozwijany wink.gif

chodziło o form gdzie możesz wykonać zapytanie smile.gif

a blad to oznacza ze mysql nie widzi kolumny wiec zrób sobie var_dump na $row i spr co dostajesz smile.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-2025 Invision Power Services, Inc.