Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Stronnicowanie mysql - błąd, Proszę o pomoc.
raum
post 9.02.2010, 18:56:41
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Posiadam taki fragment kodu:

  1. $ile_newsow_na_stronie = 3;
  2.  
  3. $sql = "select * from wpisy WHERE kategoria=".$id." ";
  4.  
  5. $wynik = mysql_query($sql);
  6. $records = mysql_num_rows($wynik);
  7. if (!$_GET['s']) { $s = 1; } else { $s = $_GET['s']; }
  8. $do = $s*$ile_newsow_na_stronie;
  9. $od = $do-$ile_newsow_na_stronie;
  10. if ($do>$records) { $do = $records; }
  11.  
  12. $sql = "select * from wpisy WHERE kategoria=".$id." order by id desc limit $od, $do; ";
  13.  
  14. $wynik = mysql_query($sql);
  15. $records = mysql_num_rows($wynik);
  16. for ($i=$od; $i < $do; $i++) {
  17. $wiersz = mysql_fetch_assoc($wynik);
  18. $id = $wiersz['id'];
  19. $tytul = $wiersz['tytul'];
  20. $tresc = $wiersz['tresc'];
  21. $adres = $wiersz['adres'];
  22.  
  23. echo '<h2><b><a href=http://'.$adres.' >'.$tytul.'</b></h2></a><br><div class="story"> '.$tresc.'<br /><br></div>';
  24.  
  25. };
  26.  
  27. $sq = "select * from wpisy WHERE kategoria=".$id." ";
  28. $wyn = mysql_query($sq);
  29. $r = mysql_num_rows($wyn);
  30. $re = ceil($r/$ile_newsow_na_stronie);
  31. if ($r > $ile_newsow_na_stronie) for($a=1; $a<=$re; $a++) { echo "<a href=\"?s=$a\"> $a </a>"; }
  32. {
  33. }


Oczywiście chcę pobrać listę artykułów z kategorii , którą ostatnio wybrałem. Problem jest w dwóch miejscach - gdy w bazie mam 5 rekordów a chcę wyświetlić tylko 3 to nie wyświetlają mi się na dole cyfry 1,2,3 itp. Gdy chcę wyświetlić 4 rekordy z 5 to wyświetla się normalnie:/. Drugi problem - gdy wybieram strone 2 by przejść zobaczyć rekord to wyskakuje mi błąd w liniach
  1. $records = mysql_num_rows($wynik);
Próbuję już od godzinki coś z tym zrobić ale niestety nie potrafię sobie poradzić. Proszę o jakąkolwiek pomoc albo wskazówki. Dziękuje i czekam na wasze opinie.
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 19:14:38
Post #2





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


  1. <?
  2.  
  3. $ile_newsow_na_stronie = 3;
  4.  
  5. $s = intval($_GET['s']) - 1;
  6. list($ilosc) = @mysql_fetch_row(mysql_query("select count(*) from wpisy WHERE kategoria=".$id));
  7.  
  8. if(($s < 0) || (($s * $ile_newsow_na_stronie) > $ilosc)) $s = 0;
  9.  
  10. $q = mysql_query("select id, tytul, tresc, adres from wpisy WHERE kategoria=".$id." order by id desc limit ".($s * $ile_newsow_na_stronie).", $ile_newsow_na_stronie");
  11. while(list($id, $tytul, $tresc, $adres) = @mysql_fetch_row($q)) {
  12. echo '<h2><b><a href=http://'.$adres.' >'.$tytul.'</b></h2></a><br><div class="story"> '.$tresc.'<br /><br></div>';
  13. }
  14.  
  15. $max = intval($ilosc / $ile_newsow_nastronie);
  16. for($i=0;$i<$max;$i++) {
  17. if($s == $i) {
  18. echo ($i + 1).' ';
  19. }else{
  20. echo '<a href="#">'.($i+1).'</a> ';
  21. }
  22. }
  23.  
  24. ?>


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
raum
post 9.02.2010, 19:28:39
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Zastosowanie twojej pomocy przyniosło rozwiązanie ale gdy zastosowuje ostatnią linie

  1. echo '<a href="#">'.($i+1).'</a> ';


to wyświetlają się strony po porcjowane ale nie wyświetlają się w nich wyniki.
Możesz powiedzieć jeszcze gdzie leży przyczyna?
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 19:43:23
Post #4





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Och myślałem że sam na to wpadniesz smile.gif Po prostu podmień na to:
  1. echo '<a href="?s='.($i+1).'">'.($i+1).'</a> ';


Ten post edytował altruista2 9.02.2010, 19:43:51


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
raum
post 9.02.2010, 19:57:44
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Właśnie nie działa

  1. echo '<a href="?s='.($i+1).'">'.($i+1).'</a> ';


i tego właśnie nie rozumie.

altruista2 może masz jeszcze jakiś pomysł o co może chodzić?
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 19:58:08
Post #6





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Hmmm tzn. że nie wyświetlają się newsy czy strona jest ciągle pierwsza (1)


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
raum
post 9.02.2010, 20:01:29
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


wchodze w kategorie wyświetlają się 2 newsy z 4 bo tak mam ustawioną zmienną $ile_newsow_na_stronie = 2 przechodzi do drugiej strony aby odczytać 2 następne i wyświetla się pusta strona bez newsów i bez żadnego błędu.

Ten post edytował raum 9.02.2010, 20:01:50
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 20:11:53
Post #8





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Zrobiłem na pewno literówkę, za co przepraszam:
  1. $max = intval($ilosc / $ile_newsow_nastronie);

Powinno być
  1. $max = intval($ilosc / $ile_newsow_na_stronie);


A jeśli chodzi o resztę to na 100% wszystko jest OK, przetestowałem ten skrypt.

Możlwie błędy:

a) zmienna $id jest pusta
cool.gif jedna z tych kolumn: id, tytul, tresc, adres nie istnieje.

Ten post edytował altruista2 9.02.2010, 20:14:54


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
raum
post 9.02.2010, 20:16:51
Post #9





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Co do literówki to poprawiłem wcześniej bo mi wyskoczył błąd i podał w której linii i sie skapłem tongue.gif Czy id puste? SKoro wszystkie rekordy potrafią się wyświetlić w kategorii to chyba nie powinna być pusta? bo mam 2 bazy jedna wpisy a druga wpisy_cat gdzie w tej drugiej podane są pola cat_id , nazwa_cat i cat_opis a pierwszą wpis to wiadomo standardowo id, tytul, tresc, adres i kategoria. Może błąd jest w bazie? Co o tym myślisz?
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 20:28:50
Post #10





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Dodaj po tym:
  1. $q = mysql_query("select id, tytul, tresc, adres from wpisy WHERE kategoria=".$id." order by id desc limit ".($s * $ile_newsow_na_stronie).", $ile_newsow_na_stronie");

Linijkę:


Obstawiam że mysql zwróci jakiś błąd.

Tu masz mój test:
http://www.gamesbnet.com/status/wtf.php
Wszystko działa bez zarzutu.

Ten post edytował altruista2 9.02.2010, 20:30:13


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
raum
post 9.02.2010, 21:06:19
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Masz racje błąd zwraca następujący Something is wrong in your syntax obok 'order by id desc limit 0, 1' w linii 1
Go to the top of the page
+Quote Post
nospor
post 9.02.2010, 21:10:52
Post #12





Grupa: Moderatorzy
Postów: 36 468
Pomógł: 6300
Dołączył: 27.12.2004




pewnie zmienna $id nie jest ustawiona i zapytanie szlag trafia. Na przyszlosc sprawdzajcie co dana zmienna zawiera a nie ufacie kobiecej intuicji ktorej nie macie winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
raum
post 9.02.2010, 21:16:16
Post #13





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Hmmm..czyli z poprzedniego pytania mam przekazać do kategorie.php zmienną $id?
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 21:26:32
Post #14





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


oczywiscie ze tak smile.gif


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
raum
post 9.02.2010, 22:59:30
Post #15





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Aha no to mam zadanie ładnie ciężkie bo zbytnio nie rozumie jakby to powiedzieć w jednym pliku , który wyświetla liste dostępnych kategorii widnieje kod

  1. $wynik = mysql_query ("SELECT * FROM wpisy_cat");
  2. while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
  3. echo "<a href=\"katalog.php?id=".$rekord['cat_id']."\">";
  4. echo $rekord['cat_nazwa']."</a> | ";


a w kategorie.php to co wyżej wpisane. Czy mam jakoś zmienną rekord['cat_id'] wmontować do pliku gdzie wyświetla stronicowanie czy jak ?
Go to the top of the page
+Quote Post
altruista2
post 10.02.2010, 00:34:01
Post #16





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Najprostsze rozwiązane:
po prostu na początku tego skryptu dodaj
  1. define('DOMYSLNA_KATEGORIA',1);
  2. $id = intval($_GET['cat']);
  3. if($id <= 0) $id = DOMYSLNA_KATEGORIA;

a to:
  1. echo '<a href="?s='.($i+1).'">'.($i+1).'</a> ';

zamień na to:
  1. echo '<a href="?s='.($i+1).'&cat='.$id.'">'.($i+1).'</a> ';


To nie jest OK bo jeśli jakiś idiota będzie się bawił zmiennymi w GET to mu wyjdzie brak newsów, ale nie chce mi się pisać więcej, jest w końcu 00:40 w nocy tongue.gif

Ten post edytował altruista2 10.02.2010, 00:38:44


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
raum
post 10.02.2010, 09:38:36
Post #17





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.03.2009

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


Ok działa smile.gif song dla ciebie altruista2 aha i jak będziesz czytał ten post to odezwij sie do mnie na gg 2396984 mam pytanie w sprawie serwisu gamesbnet.com

Ten post edytował raum 10.02.2010, 10:26:56
Go to the top of the page
+Quote Post
altruista2
post 10.02.2010, 18:11:29
Post #18





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Kliknij "pomógł" jak możesz bo jak przeglądam tematy z tego podforum to ciągle czytam ten twój smile.gif


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 23.05.2024 - 20:44