Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] => STRONICOWANIE
Forum PHP.pl > Forum > Przedszkole
Neeke
witam

moj problem polega w stronicowaniu wiem ze na forum jest pare porad i tez napisany przez "nospor" ale niechce go uzywac gdyz odrazu muwie ze potrzebuje to na strone komercyjna...

napisalem wyszukiwarke w taki sposób

  1. <?php
  2. $wh = array();
  3.  
  4. //--------------- PLEC -------------------
  5.  
  6. if (($k_plec_k=='t')and($k_plec_m=='')) $wh['plec']="plec='k'";
  7. if (($k_plec_k=='')and($k_plec_m=='t')) $wh['plec']="plec='m'";
  8. //--------------- LOGIN ------------------
  9.  
  10.  if ($login<>'') $wh['login']="login='$login'";
  11. //--------------- IMIE -------------------
  12.  if ($imie<>'') $wh['imie']="imie='$imie'";
  13.  
  14. //--------------- Województwo ------------
  15.  
  16.  if (!empty($k_woj)) $wh['woj']="woj='$k_woj'";
  17. //--------------- Miasto ----------------
  18.  
  19.  if ($miejscowosc<>'')$wh['miasto']="miasto='$miejscowosc'";  
  20. //--------------- E-mail -----------------
  21.  
  22.  if ($mail<>'')$wh['email']="email='$mail'";
  23. //--------------- ID profilu -------------
  24.  
  25.  if ($id_prof<>'')$wh['id_p']="id='$id_prof'";
  26. //--------------- 
  27.  if ($ip<>'')$wh['ip']="ostatnie_ip='$ip'";
  28.  if ($t_z_nr_gg=='t')$wh['t_z_nr_gg']="gg>''";
  29.  if ($t_online=='t')$wh['t_online']="data_aktywnosci > date_sub(now(), interval $okres_aktywnosci $okres_aktywnosci_jednostka)";
  30.  
  31.  if ($k_wiek==1) 
  32. {
  33.  $dzis=date("Y");
  34.  $rok_urodzenia=$dzis-15;
  35. $il_wiek=$dzis-20;
  36.  $wh['wiek'] = "YEAR(`data_urodzenia`)<='$rok_urodzenia' AND YEAR(`data_urodzenia`)>='$il_wiek'";
  37. }
  38.  if ($k_wiek==2) 
  39. {
  40.  $dzis=date("Y");
  41.  $rok_urodzenia=$dzis-21;
  42. $il_wiek=$dzis-30;
  43.  $wh['wiek']=" YEAR(`data_urodzenia`)<='$rok_urodzenia' AND YEAR(`data_urodzenia`)>='$il_wiek'";
  44. }
  45.  if ($k_wiek==3) 
  46. {
  47.  $dzis=date("Y");
  48.  $rok_urodzenia=$dzis-31;
  49. $il_wiek=$dzis-40;
  50.  $wh['wiek']=" YEAR(`data_urodzenia`)<='$rok_urodzenia' AND YEAR(`data_urodzenia`)>='$il_wiek'";
  51. }
  52.  if ($k_wiek==4) 
  53. {
  54.  $dzis=date("Y");
  55.  $rok_urodzenia=$dzis-41;
  56. $il_wiek=$dzis-50;
  57.  $wh['wiek'] = "YEAR(`data_urodzenia`)<='$rok_urodzenia' AND YEAR(`data_urodzenia`)>='$il_wiek'";
  58. }
  59.  if ($k_wiek==5) 
  60. {
  61.  $dzis=date("Y");
  62.  $rok_urodzenia=$dzis-51;
  63.  $wh['wiek'] = "YEAR(`data_urodzenia`)<='$rok_urodzenia'";
  64. }
  65.  
  66.  if (!empty($k_zodiak)) $wh['zodiak']="zodiak='$k_zodiak'";
  67. //------------------WYKONANIE ZAPYATNIA DO BAZY -------------------------------
  68. if (!empty($wh))  $where = 'where '.implode(' and ', $wh);
  69. else  $where = '';
  70.  
  71.  
  72.  
  73.  
  74. // ------------------- P O D S T R O N Y -------------------------------
  75.  
  76. $sq=mysql_query("SELECT count(id) as il FROM konta ". $where ." ") ;
  77.  
  78. //$il=mysql_num_rows($sq);
  79. $ile_rekordow = $il["il"];
  80.  
  81. $gdzie=
  82. // - ustawienia - wrtosci wymaganych parametrow do uruchoienia funkcji
  83. // - musi byc pobray jeszce wczesniej z bazy parametr $ile_rekordow
  84.  $poile=$poile_rezultaty_wyszukiwania; // ile rekordow na jednej podstronie
  85.  $zasieg=4; // ile w awigatorze pokazywc kolejnych i poprzedich podstron
  86.  $parametry="ord=$ord&"; // na koncu &
  87.  $skok="#szukaj";
  88. // - wykonanie funckji
  89.  $podstrony=pages($page,$ile_rekordow,$poile,$zasieg,$parametry,$skok);
  90. // - pobranie wartosci zmiennych z funkcji
  91.  $ile_page=$podstrony[0]; // ile wykryto podstro
  92.  $sOd=$podstrony[1]; // od ktorego rekordu ma zaczac wyswietlaie
  93.  $wypisz_nawigator=$podstrony[2]; // linki do przemieszczania sie pomiedzy podstronami
  94. // - wyswietlenie nawigatora 
  95.  //echo($wypisz_nawigator);
  96.  //if ($ile_page>=2) echo("<BR><BR>"); 
  97.  
  98.  
  99. //if($result<>0){
  100. $sql='SELECT * FROM konta '. $where .' limit '.$sOd.','. $poile;
  101. $res = mysql_query($sql) or die('zapytanie: '.$sql.' ---- blad: '.mysql_error());
  102. ?>
i dziala fajnie ale jest problem ze stronicowaniem gdy wyszukuje osob i sa np. 3 strony to mi wyskakuja te 1 2 3 ale w momencie gdy chce przejsc na 2 strone to wylapuje mi wszystkich userow ze strony .... jacy maja konta a nie z tych ograniczen co okreslilem je wyszukujac... gdzie moglem popelnic blad bardzo prosze o pomoc...
nospor
Cytat
tez napisany przez "nospor" ale niechce go uzywac gdyz odrazu muwie ze potrzebuje to na strone komercyjna

ze tak lekki OT zrobie:
tej klaski mozesz uzywac i w komercyjnych projektach. nie widze problemu. No chyba ze uwazasz, iz do komercyjnych sie nie nadaje bo jest za cienka, to przepraszam bardzo winksmiley.jpg

Co do problemu:
skaczas po stronach gubisz dane warunkowe ktore okresliles w formularzu. Musisz wiec dane warunkowe zapamietac np. w sesji i juz smile.gif
Neeke
nie bylem podwrazeniem Twojej pracy smile.gif naprawde bardzo dobrze jest zrobiona Twoja klasa... ale tez trzeba napisac samemu by sie tego nauczyc dokladniej .. a pozatym oop niezabardzo rozumiem... jeszcze wiec troche sie gubie w Twojej klasie ok zaraz sprobuje z sesjami...

Ok poddalem sie z tymi sesjami... i podczepilem Twojego pagera nospor ... i na localu mi wszystko smiga fajnei ale jak wzucielme na serwer to mi wywala bardzo dziwny blad ....



Parse error: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/gryonline/domains/foota.pl/public_html/Pager.class.php on line 38



gdzie linnia 38 to
  1. <?php
  2. class Pager {
  3.  /** Stałe klasy */
  4.  const _GOTO_FIRST_ = 'gtf';/// linnia 38
  5. ?>
masz jjakis pomysl na rozwiazanie tego? pewnie popelnilem jakis blad prosze o pomoc
kresh
Masz PHP4 na serwerze a const jest od PHP5
Neeke
faktycznie ... mam 4.4.4 wersje ... ohhh a dasie to jakos ustawic na ta wersje php??
nospor
przeciez moja klasa jest wydana zarowno pod php4 jak i pod php5. zajrzyj do dzialu download i sciagnij paczke dla php4

ps: i zmien ta sygnature na sesnowna albo wywal wogole winksmiley.jpg
Neeke
ohhh jestem chyba glupi sad.gif

sciagnelem dla wersji php4 ustawilem tak jak na wsczesniejszej i teraz mam problem ze niezapisuje do sesji danych.. znaczy w danych znajduje sie

pp_idPagera|i:2;

taki wpis... i jest tak ze jak wyszuka to mi ok wyszukuje ale juz np. na 2 stronie sa znow wszyscy z serwisu ludzi... co ja zle robie...?
nospor
No ale pokaz w jaki sposob ty zapisujesz do sesji, w jaki odbierasz i co wogole tam zapisujesz?
Pokaz caly kod
Neeke
to jest plik wykonawczy wyszukiwania

  1. <?php
  2. if ($k_wiek==5) 
  3. {
  4.  $dzis=date("Y");
  5.  $rok_urodzenia=$dzis-51;
  6.  $wh['wiek'] = "YEAR(`data_urodzenia`)<='$rok_urodzenia'";
  7. }
  8.  
  9.  if (!empty($k_zodiak)) $wh['zodiak']="zodiak='$k_zodiak'";
  10. //------------------WYKONANIE ZAPYATNIA DO BAZY -------------------------------
  11. if (!empty($wh))  $where = 'where '.implode(' and ', $wh);
  12. else  $where = '';
  13. // ------------------- P O D S T R O N Y -------------------------------
  14. require_once('Pager.class.php');
  15. $sql = 'select count(*) from konta '. $where ;  
  16. $result = mysql_query($sql);  $row = mysql_fetch_array($result);  $recordsCount = $row[0];//pobranie liczby rekordów  
  17. $pager = new Pager('idPagera');  
  18. $pager->SetTotalRecords($recordsCount);//ustawienie liczby rekordów  //wygenerowanie pagera i zapamietanie go w zmiennej w celu  //pozniejszego wyswietlenia  
  19. $renderPager = $pager->Render();  
  20. $start = $pager->GetIndexRecordStart();//pobranie indexu rekordu początkowego  
  21. $end = $pager->GetIndexRecordEnd();//pobranie indexu rekordu koncowego
  22. // $pager = new Pager('idPagera');  //okreslenie liczby wszystkich rekordów na 500  
  23. //$pager->SetTotalRecords(500);  
  24. //echo $pager->Render();//wyswietlenie pagera
  25. echo $pager->Render(true);
  26. $sqll = 'select * from konta '. $where .' limit '.$start.','.($end - $start + 1);  //...pobranie wyników i ich wyswietlenie  
  27. $ss=mysql_query($sqll);
  28. ?>
Zastanawia mnie bo tu jest session_start(); ale ja mam sesje wystartowana przy samym wejsciu na strone.. to raczej powinno byc moim zdaniem session_register( ); tylko co ona ma rejestrowac?

Co zapisuje ? ee id uzytkownika itd... zreszta moge pokazac..
Kod
filtr_kto|s:1:"w";filtr_woj|s:1:"0";filtr_wiek1|s:9:"(wiek<13)";filtr_wiek2|s:23:"(wiek>12) and (wiek<19)";filtr_wiek3|s:23:"(wiek>18) and (wiek<26)";filtr_wiek4|s:23:"(wiek>25) and (wiek<36)";filtr_wiek5|s:9:"(wiek>35)";filtr_sort|s:22:"order by fotki.id desc";usr|s:5:"17561";idz|N;historia|a:0:{}odslony|N;ile_odslon|N;idzz|N;historiaff|a:0:{}odslonyy|N;ile_odslonyy|N;czy_modem|N;prawa|s:5:"owner";czy_pierwsze_uruchomienie|N;pp_idPagera|i:1;
nospor
Moze ja jakis slepy jestem, ale gdzie ty tu cos do sesji wkladasz? Nie wspomne juz o odczycie z niej.

Szablon:
  1. <?php
  2. if (!empty($_POST)){//wyslano forma z danymi wyszukiwania
  3. $_SESSION['pole1'] = $_POST['pole1'];
  4. $_SESSION['pole2'] = $_POST['pole2'];
  5. //....
  6. }
  7.  
  8. //I tu budowanie warunkow na podobnej zasadzie co wczesniej
  9. $wh = array();
  10. if ($_SESSION['pole1'] cos tam)
  11.  $wh[] = 'session cos tam';
  12. //.....
  13. if (!empty($wh))
  14.  $where = 'where '.implode(' and ', $wh);
  15. else
  16.  $where = '';
  17.  
  18. //i dalej normalnie
  19. ?>
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.