Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Stornnicowanie - problem z przekazaniem wartości
-Gość_mariuszg_*-
post
Post #1





Goście







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"); ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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.

Ten post edytował Cysiaczek 4.07.2006, 00:28:45
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







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.
Go to the top of the page
+Quote Post
mariuszg
post
Post #4





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

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


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
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #5





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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.
Go to the top of the page
+Quote Post
mariuszg
post
Post #6





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

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


Linijka zapytania do bazy danych ($page*$ile) - nie mam pojęcia jak to działą, bo pobrałem to z jakiejś strony i przerobiłem.
Go to the top of the page
+Quote Post
KG-
post
Post #7





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 30.05.2006

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


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)

Ten post edytował KG- 8.07.2006, 16:43:38
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 21:56