Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Podział na strony..., Problem z skryptem, który ma dzielić liczbę wyświetlanych newsów.
Pawel16
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.07.2010

Ostrzeżenie: (0%)
-----


Tak jak w temacie. Poniższy skrypt ma za zadanie kolejno:
1. Podzielić artykuły newsów na strony, co w tym, wyjać odpowiednią ilość artykułów i je umieścić w tablicy
2. Wyświetlić odpowiednie artykuły na odpowiedniej stronie
3. Wyświetlić spis treści

  1. <?php
  2. //PODZIAŁ NA STRONY
  3. //Ilość artykułów podzielona przez ilość która ma być wyświetlona na jednej stronie
  4. $wynik = (mysql_num_rows(mysql_query("SELECT * FROM `artykuly`")) / 5);
  5. $ilosc_stron = (intenger)$wynik;
  6.  
  7. $od_ktorego = 0;//+ 5, Podanie początkowej pozycji wybierania artykułów
  8. $do_ktorego = $od_ktorego + 5;//+ 5,Określanie ilości ile na stronę
  9.  
  10. $tablica_stron = array();//Utworzenie tablicy ze stronami
  11. for($i = 1; $i <= $ilosc_stron; $i++)
  12. {
  13. //Treść zapytania(ze wzgędu na zmieniajace sie wartości nie została podana bezpośrednio w zapytaniu dla utrzymania jego bezpieczeństwa i pewności działania aplikacji)
  14. $artykuly = mysql_query("SELECT * FROM `artykuly` LIMIT $od_ktorego, $do_ktorego");//Zapytanie
  15. while($id = mysql_fetch_assoc($artykuly))//Wyjęcie odpowiednich id artykułów
  16. {
  17. $tablica_stron[$i] = array($id['id']);//Przypisanie odpowiednich id artykułów
  18. }
  19. //Zwiększenie określeń atrybutu LIMIT dla zapytania aby wyciągnąć kolejne artykuły, anie te same
  20. $od_ktorego += 5;
  21. $do_ktorego += 5;
  22. }
  23.  
  24. //WYŚWIETLENIE
  25. $card = htmlspecialchars($_GET['card']);
  26. if($card == 1 || empty($card))
  27. {
  28. for($a = 0; $a < 5; $a++)
  29. {
  30. $zapytanie2 = mysql_query("SELECT * FROM `artykuly` WHERE `id`='".$tablica_stron[0][$a]."'");
  31. while($artykul = mysql_fetch_assoc($zapytanie2))
  32. {
  33. $ilosc_kom=mysql_num_rows(mysql_query("SELECT * FROM `art_komentarze` WHERE `id_artykulu`='".$artykul['id']."'"));
  34. echo "<table>";
  35. echo "<tr><td colspan='2'><h1>".$artykul['temat']."</h1></td></tr>";
  36. echo "<tr><td colspan='2'>".nl2br($artykul['tresc'])."</td></tr>";
  37. echo "<tr><td>".$artykul['data']."</td><td><a class='linkv linkl linkh' href='index.php?page=atrykul&id=".$artykul['id']."'>Komentarze(".$ilosc_kom.")</a></td></tr>";
  38. echo "</table>";
  39. echo "<a class='linkv linkl linkh' href='index.php?artykuly=true'>Pokaz wszystkie artykuły</a>";
  40. }
  41. }
  42. }
  43. else
  44. {
  45. $nowe_card = $card - 1;
  46. for($a = 0; $a < 5; $a++)
  47. {
  48. $zapytanie2 = mysql_query("SELECT * FROM `artykuly` WHERE `id`='".$tablica_stron[$nowe_card][$a]."'");
  49. while($artykul = mysql_fetch_assoc($zapytanie2))
  50. {
  51. $ilosc_kom=mysql_num_rows(mysql_query("SELECT * FROM `art_komentarze` WHERE `id_artykulu`='".$artykul['id']."'"));
  52. echo "<table>";
  53. echo "<tr><td colspan='2'><h1>".$artykul['temat']."</h1></td></tr>";
  54. echo "<tr><td colspan='2'>".nl2br($artykul['tresc'])."</td></tr>";
  55. echo "<tr><td>".$artykul['data']."</td><td><a class='linkv linkl linkh' href='index.php?page=atrykul&id=".$artykul['id']."'>Komentarze(".$ilosc_kom.")</a></td></tr>";
  56. echo "</table>";
  57. echo "<a class='linkv linkl linkh' href='index.php?artykuly=true'>Pokaz wszystkie artykuły</a>";
  58. }
  59. }
  60. }
  61. for($j = 1; $j <= $ilosc_stron; $j++)
  62. {
  63. echo "<a href='index.php?page=index&card=".$j."'>[".$j."]</a>";
  64. }
  65. ?>


Niby wszystko okey ale jednak kod powoduje dziwne błędy, których przyczyn nie mogę znaleźć. Między innymi: złe wyświetlanie newsów(inne niż powinny), wielokrotne wyświetlenie tego samego newsa, itp. Proszę o pomoc w znalezieniu błędów tych i innych jakie dostrzerzecie.

Proszę nie oceniać jakosci skryptu ponieważ jest to pierwszy skrypt, który robię tego typu(znaczy, który sam wymyśliłem i ma za zadanie podzielić coś automatycznie na strony). Proszę więc o pomoc w znalezieniu błędów i ewentualne pokazanie teoretycznie innych sposobów zrobienie czegoś takiego. Tablice nie są moją mocną stroną, więc staram się ją rozwijać.

Przepraszam za błędy ortograficzne ale sie śpieszyłem ;P.

Dzięki z góry.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 16:20