Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Stornnicowanie - problem z przekazaniem wartości
Forum PHP.pl > Forum > Przedszkole
Gość_mariuszg_*
Witam

Mam problem za stronicowaniem.

Poniższy skrypt działa jeśli zastąpię zmienną $kategoeia tym co ma tam być, czyli „Panie”(linia 7 i 23). Jeśli zostawię $kategoeia (wartość zostaje przekazana z formularza wyszukaj) to wynik zostanie wyświetlony tylko dla pierwszej strony ale gdy kliknę 2,3,4, itd - brak danych. Chodzi o to że wartość zmiennej $kategoeia nie jest przekazywana do kolejnych stron wyzyskiwania.

Czy ktoś wie jak to zrobić żeby ta wartość została przekazana

Pozdrawiam Mariusz


  1. <? include("poczatek.php"); ?>
  2. <?php
  3.  
  4. $page=$_REQUEST['page'];
  5. $ile=3;
  6. if($con=mysql_connect('localhost','root','krasnal')) {
  7.  
  8. $zapytanie = ("SELECT * FROM dane where kategoeia like '$kategoeia' LIMIT ".($page*$ile).", 3");
  9.  
  10.  $wykonaj = mysql_query ($zapytanie);
  11.  
  12.  
  13. while($wiersz = mysql_fetch_array($wykonaj)) {
  14.  
  15. print "".$wiersz['id']."";
  16.  
  17. print "<table cellspacing="2" cellpadding="2" border="1"><tr><td width="160" height="160" rowspan="3"><center><a href= profil.php?view=".$wiersz['id']." ><img src= fotografie/".$wiersz['foto1m']."></a></center></td><td width="300" height="30">".$wiersz['imie']."<a href= profil.php?view=".$wiersz['id']." >Zobacz szczeguły</a></td></tr><tr><td width="300" height="100">".$wiersz['tresc']."</td></tr><tr><td width="300" height="30">".$wiersz['miasto']."</td></tr></table>";
  18. }
  19.  
  20.  
  21. list($wszystkich)=mysql_fetch_row(mysql_db_query('sap',"SELECT count(*) FROM `dane` where kategoeia like '$kategoeia'"));
  22. $podstron=ceil($wszystkich/$ile-1);
  23. print "<br>";
  24. print "<center>";
  25. if ($page>0) echo "<a href=szukajwykonanie.php?page=".($page-1).">Poprzednia</a>";
  26. else
  27. echo "Poprzednia";
  28. for($x=0;
  29. $x<=$podstron;
  30. $x++) {
  31.  
  32. if ($x==$page) echo "".($x+1)."";
  33. else echo "<a href=szukajwykonanie.php?page=$x>".($x+1)." </a>";
  34. }
  35. if ($page<$podstron) echo "<a href=szukajwykonanie.php?kategoeia=$kategoeia?page=".($page+1).">Następna</a>";
  36. else echo "Następna";
  37.  
  38. }
  39. print "</center>";
  40. ?>
  41. <? include("koniec.php"); ?>
Cysiaczek
Primo: Nie używaj REQUEST, tylko GET w tym przypadku (trzeba zachować jakiś porządek)
Secundo Primo najważniejsze:
  1. <? include("poczatek.php"); ?>
  2. <?php
  3.  
  4. $page=$_REQUEST['page'];
  5. $ile=3;
  6. if($con=mysql_connect('localhost','root','krasnal')) {
  7.  
  8. $zapytanie = ("SELECT * FROM dane where kategoeia like '$kategoeia' LIMIT ".($page*$ile).", 3");


Nie wiem, co jest w pliku poczatek.php. Przyjmę zatem co nastepuje.
Nie ma możliwości, aby $kategoeia była w jakikolwiek przekazana, bo ona NIE JEST nawet zadeklarowana. Używasz jej w zapytaniu do bazy danych, ale nigdzie wcześniej nie ustawiłeś jej wartości. php automatycznie wstawia więc pusty string. Jeśłi nie wierzysz, to zajrzyj do źródła strony do linków.
Gość
Dzięki za odpowiedz.

Czy to znaczy że ma m dodać coś takiego,ale i tak cos żle robie bo nie działa. Pokazuje tylko pierwszą strone danych wyszukanucz.

  1. <?php
  2. $_okiii = $_GET[kategoeia] ;
  3. ?>



i

  1. <?php
  2. $zapytanie = ("SELECT * FROM dane where kategoeia like '$_okiii LIMIT ".($page*$ile).", 3");
  3. ?>



Plik początek i koniec to po prostu menu. które jest dołączone do każdej strony.
mariuszg
Witam
Zadeklarowałem zmienną

  1. <?php
  2. $kat = $_GET[kategoeia] ;
  3. ?>

ale nie działa.

Całość wygląda tak:
  1. <? include("poczatek.php"); ?>
  2. <?php
  3.  
  4. $kat = $_GET[kategoeia] ;
  5.  
  6. $page=$_REQUEST['page'];
  7. $ile=3;
  8. if($con=mysql_connect('localhost','root','krasnal')) {
  9. //Pan szuka Pani
  10. $zapytanie = ("SELECT * FROM dane where kategoeia like '$kat' LIMIT ".($page*$ile).", 3");
  11. $wykonaj = mysql_query ($zapytanie);
  12.  
  13. while($wiersz = mysql_fetch_array($wykonaj)) {
  14. print " <table cellspacing="2" cellpadding="2" border="1">
  15. <tr>
  16. <td width="160" height="160" rowspan="3"><center><a href= profil.php?view=".$wiersz['id']." ><img src= fotografie/".$wiersz['foto1m']."></a></center></td>
  17. <td width="300" height="30">".$wiersz['imie']."<a href= profil.php?view=".$wiersz['id']." >Zobacz szczeguły</a></td>
  18. </tr><tr>
  19. <td width="300" height="100">".$wiersz['tresc']."</td>
  20. </tr><tr>
  21. <td width="300" height="30">".$wiersz['miasto']."</td></tr></table>";
  22. }
  23.  
  24.  
  25. list($wszystkich)=mysql_fetch_row(mysql_db_query('sap',"SELECT count(*) FROM `dane` where kategoeia like '$kat'"));
  26. $podstron=ceil($wszystkich/$ile-1);
  27.  
  28. if ($page>0) echo "<a href=szukajwykonanie.php?page=".($page-1).">Poprzednia</a>";
  29. else
  30. echo "Poprzednia";
  31. for($x=0;
  32. $x<=$podstron;
  33. $x++) {
  34.  
  35. if ($x==$page) echo "".($x+1)."";
  36. else echo "<a href=szukajwykonanie.php?page=$x>".($x+1)." </a>";
  37. }
  38. if ($page<$podstron) echo "<a href=szukajwykonanie.php?page=".($page+1).">Następna </a>";
  39. else echo "Następna ";
  40. }
  41.  
  42. ?>
  43. <? include("koniec.php"); ?>


Zrobiłem

Niby proste, ale dla kogoś kto mało pisze w php to trudne.


W linkach dodałem : kategoeia=$kat



  1. <?php
  2. <a href=szukajwykonanie.php?kategoeia=$kat&page=".($page+1).">Następna </a>
  3. ?>



Pozdrawiam
Cysiaczek
Dobra. Moało być wczoraj :| ale bedzie dzisiaj.
1. Możesz umieścić aplikację na jakimś publicznym serwerze?
2. niepokoi mnie linijka zapytania do bazy danych ($page*$ile) - możesz to wyjaśnić? Licze licze i nic mi sensownego nie wychodzi.
mariuszg
Linijka zapytania do bazy danych ($page*$ile) - nie mam pojęcia jak to działą, bo pobrałem to z jakiejś strony i przerobiłem.
KG-
Cytat
($page*$ile)


$page to numer strony, a $ile to ilosc rekordow na jednej stronie.

Jeśli numerujesz strony od 0 to będzie ok, jeśli zaś od 1 to dla pierwszej strony będziesz miał (np przy $ile = 50) 1*50 czyli zaczniesz od 50-tego rekordu a nie od początku tablicy. W tym przypadku lepszy będzie algorytm
( ($page-1)*$ile ).

Fragment zapytania:
  1. LIMIT ".($page*$ile).", 3");

Skoro używasz zmiennej $ile to użyj jej też do ograniczenia ilości danych, czyli wstaw ją w miejsce tej liczby 3. Jeśli zechcesz zmienić ilość rekordów pokazywanych na stronie to nie będziesz miał problemów ze zmienianiem jej dodatkowo w tym miejscu.

Fragment kodu
  1. <?php
  2. $page=$_REQUEST['page'];
  3. ?>

wygląda troche słabo, co użytkownik usunie z adresu zmienną page? Albo jaką wartość ma przyjąć skrypt jeśli nie zostanie podana?
Lepsze byłoby coś w rodzaju
  1. <?php
  2. $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
  3. ?>

(przy założeniu że zaczynasz numerację stron od 1)
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.