Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP] Stronicowanie wyników wyszukiwania
Kshyhoo
post
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Do tej pory wyświetlałem dane bez problemów, teraz jednak wymyśliłem sobie wyszukiwarkę i mam problemy ze stronicowaniem wyników. Pobierałem wyniki tak:
  1. SELECT * FROM tutoriale LIMIT $start, $na_strone

W wyszukiwarce, jeżeli ustalę np. 10 wyników na stronę, to kolejne strony są puste, mimo, że jest więcej wyników wyszukiwania. Są jakieś sposoby, żeby "pamiętać" dane do wyszukiwania w sposób efektywny? Moje zapytanie:
  1. SELECT * FROM tutoriale WHERE $gdzie LIKE '%$fraza%' LIMIT $start, $na_strone

Strony zapamiętuję w sesji.
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Może czas na sesje? (IMG:style_emoticons/default/winksmiley.jpg) Dane z wyszukiwarki też do sesji i po problemie.

Ten post edytował thek 19.01.2010, 20:28:08
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Całe wyniki? Nie łapię ;p
Go to the top of the page
+Quote Post
bl4ck_b0x
post
Post #4





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 21.11.2006

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


Nie całe wyniki (IMG:style_emoticons/default/winksmiley.jpg) Żebyś przechowywał w sesji którą "porcję" danych bierzesz (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Hmm, strony mam tak:
  1. if (!empty($_GET['s'])) {
  2. $s = ($_GET["s"]>1)?number_format($_GET["s"], 0, "", ""):1;
  3. $_SESSION["s"] = $_GET["s"];
  4. } else {
  5. $s = ($_SESSION["s"]>1)?number_format($_SESSION["s"], 0, "", ""):1;
  6. }

Go to the top of the page
+Quote Post
Pilsener
post
Post #6





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Po co sesje do tego? Rozwiązania są dwa:
1. Jeżeli zależy Ci na historii wyszukiwania, statystykach itp. to i tak to wrzucasz do bazy, co nie? Potem wystarczy dodać do porcjowania id, pod którym będą zapisane szukane kryteria, np. index.php?szukaj=4844&a=2 - strona druga. Rozwiązanie to ma także tą zaletę, że można zapamiętać w linkach wyniki wyszukiwania dla danych kryteriów. W bazie możesz przechowywać np. 10k ostatnich wyszukiwań.
2. Zapamiętać kryteria w ciachu, ja używam ciacha do poprawienia funkcjonalności, np. zapamiętywania numerów stron (gdy user kliknie powrót to jest tam, gdzie był a nie znowu na głównej), tutaj też się idealnie nada, bo jak ktoś ma wyłączone cookies to najwyżej nie zobaczy pozostałych stron wyszukiwania, przed czym łatwo się zabezpieczyć wysyłając mu komunikat.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Tutaj o tym pisałem
http://nospor.pl/formularz-i-stronicowanie...-stanu-n26.html
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #8





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No właśnie... Problem w tym, że nie bardzo wiem, jak się do tego zabrać. Link mam taki:
index.php?page=szukaj&opcja=tytul&fraza=trąbka
ale w następnych stronach:
index.php?page=szukaj&s=2
Kiedyś Twój artykuł czytałem, ale zrobię to ponownie, może coś "zjarzę" ;p

EDIT:
Jeżeli mój formularz wyglądał tak:
  1. <form method='get' action='index.php?go=szukaj'>
  2. <input type='hidden' name='go' value='szukaj' class=''>
  3. Autor: <input type='radio' name='opcja' value='autor' />
  4. Tytuł: <input type='radio' name='opcja' value='tytul' checked='checked' />
  5. Treść: <input type='radio' name='opcja' value='tresc' />
  6. <input type='text' size='40' name='fraza' class='edit'>
  7. <input type='submit' value='' class='search'>
  8. </form>

To teraz, jak rozumiem, powinien wyglądać tak: (IMG:style_emoticons/default/questionmark.gif)
  1. <?php
  2. $formData = array(
  3. 'autor' => !isset($_GET['autor']) ? null : $_GET['autor'],
  4. 'tytul' => !isset($_GET['tytul']) ? null : $_GET['tytul'],
  5. 'tresc' => !isset($_GET['tresc']) ? null : $_GET['tresc'],
  6. 'fraza' => !isset($_GET['fraza']) ? null : $_GET['fraza'],
  7. );
  8. ?>
  9. <form method="get" action="cpax.php?go=szukaj">
  10. <input type="hidden" name="go" value="szukaj" class="">
  11. Autor: <input type="radio" name="opcja" value="<?php echo $formData["autor"];?>" />&nbsp;&nbsp;&nbsp;
  12. Tytuł: <input type="radio" name="opcja" value="<?php echo $formData["tytul"];?>" checked="checked" />&nbsp;&nbsp;&nbsp;
  13. Treść: <input type="radio" name="opcja" value="<?php echo $formData["tresc"];?>" />&nbsp;&nbsp;&nbsp;
  14. <input type="text" size="40" name="fraza" class="edit" value="<?php echo $formData["fraza"];?>">
  15. <input type="submit" value="" class="search">
  16. </form></font>

Jak przechwycić to z radio?

Ten post edytował Kshyhoo 20.01.2010, 10:52:49
Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Najprostsza wersja to "weź i zapamiętaj w sesji co masz pod tytul i fraza" (IMG:style_emoticons/default/smile.gif) Te dane potem z sesji przekaż do zapytania ze zmienionym już page pobranym z GET (IMG:style_emoticons/default/winksmiley.jpg) Możliwości jest wiele. Ja choćby zmienne z sesji w ten sposób przerobiłem do formy, która tworzy wyszukiwarkę SEO-friendly linków, a z kolei znajomy zrobił cały serwis jako niejawne wywołanie wyszukiwarki. Po prostu linki w całym serwisie to tak naprawdę front na silnik wyszukiwawczy. Link z kategorii czy czegokolwiek to po prostu rozbicie na parę klucz => wartość, co po stronie silnika ładnie tworzy odpowiednie zapytania do bazy.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #10





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No dobra, w sesji. Zrobiłem tak, jak w przykładzie nospora, i nie przesyła mi do sesji.
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Zrobiłem tak, jak w przykładzie nospora, i nie przesyła mi do sesji.
No popatrz, a mi przesyła (IMG:style_emoticons/default/smile.gif)
Sorki, ale juz nie raz slyszalem: zrobilem tak jak on, ale mi nie dziala.... A po pokazaniu kodu okazalo się, ze jednak nie zrobił dokładnie tak jak on (IMG:style_emoticons/default/winksmiley.jpg)

pokaz kod
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #12





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Wydaje mi się, że $_POST['oursubmit'] jest pusta (IMG:style_emoticons/default/winksmiley.jpg) , bo:
Cytat
POST: Array
(
[go] => szukaj
[opcja] =>
[fraza] => aaa
[oursubmit] =>
)

Cały kod:
  1. <?php
  2. if (!empty($_POST['oursubmit'])) {
  3. $_SESSION['form'] = array(
  4. 'autor' => $_POST['autor'],
  5. 'tytul' => $_POST['tytul'],
  6. 'tresc' => $_POST['tresc'],
  7. 'fraza' => $_POST['fraza'],
  8. );
  9. }
  10. $formData = array(
  11. 'autor' => !isset($_SESSION['form']) ? null : $_SESSION['form']['autor'],
  12. 'tytul' => !isset($_SESSION['form']) ? null : $_SESSION['form']['tytul'],
  13. 'tresc' => !isset($_SESSION['form']) ? null : $_SESSION['form']['tresc'],
  14. 'fraza' => !isset($_SESSION['form']) ? null : $_SESSION['form']['fraza'],
  15. ); echo $_POST['oursubmit'];
  16. ?>
  17. <div class="kontener"><font class="nag1">
  18. <form method="post" action="cpax.php?go=szukaj" name="formData">
  19. <input type="hidden" name="go" value="szukaj" class="">
  20. Autor: <input type="radio" name="opcja" value="<?php echo $formData["autor"];?>" />   
  21. Tytuł: <input type="radio" name="opcja" value="<?php echo $formData["tytul"];?>" checked="checked" />   
  22. Treść: <input type="radio" name="opcja" value="<?php echo $formData["tresc"];?>" />   
  23. <input type="text" size="40" name="fraza" class="edit" value="<?php echo $formData["fraza"];?>">
  24. <input type="submit" value="" class="search" name="oursubmit">
  25. </form></font></div>

Nie wiem też, czy tak mogę "zapodać" z radio?

Ten post edytował Kshyhoo 20.01.2010, 12:04:39
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




no bo dla submita nie nadałeś wartosci: value=""
Skoro tak sie bronisz z tą wartością to zamiast:
if (!empty($_POST['oursubmit']))
daj:
if (isset($_POST['oursubmit']))

Widzisz, nie zrobiłeś dokładnie tak samo jak ja (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #14





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A no tak. To dlatego, że mam graficzny przycisk i napis wyłazi (IMG:style_emoticons/default/winksmiley.jpg) No teraz:

Cytat
POST: Array
(
[go] => szukaj
[opcja] =>
[fraza] => aa
[oursubmit] =>
)
SESSION: Array
(
[form] => Array
(
[autor] =>
[tytul] =>
[tresc] =>
[fraza] => aa
)
)
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




no ale do sesji zapisujesz z forma rzeczy, ktorych w formie nie ma, takie jak: autor, tresc, tytul.
Ty nie wymagasz za duzo od kodu co napisalem? Myslisz ze sam z siebie dorzuci ci pozostałe pola? (IMG:style_emoticons/default/winksmiley.jpg)

ps: aa, widze ty to probujesz w dziki sposob w radio przekazac
poczytaj najpierw jak zachowuje się pole RADIO bo widzę nie rozumiesz tego.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #16





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Hmm, wciąż mam [oursubmit] => puste, nie wiem, dlaczego.
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




no bo dla oursubmit nie przekazałeś wartosci. dlatego kazałem ci zamienic warunek na isset()
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #18





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Zmieniłem, Wodzu:
  1. if (isset($_POST['oursubmit'])) {
  2. $_SESSION['form'] = array(
  3. 'fraza' => $_POST['fraza'],
  4. 'opcja' => $_POST['opcja'],
  5. );
  6. }


Ten post edytował Kshyhoo 20.01.2010, 13:09:22
Go to the top of the page
+Quote Post
nospor
post
Post #19





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No i super. Jeszcze jakis problem? Jak tak to od razu pisz a nie zmuszasz nas do dopytywania ciebie.
A jak już nie ma problemu to też napisz: dziękuję (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #20





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Ale ja zmieniłem wcześniej i dalej mam pusto ;( Googluję na ten nieszczęsny radio... Teraz mam tak:
  1. <?php
  2. if (isset($_POST['oursubmit'])) {
  3. $_SESSION['form'] = array(
  4. 'fraza' => $_POST['fraza'],
  5. 'opcja' => $_POST['opcja'],
  6. );
  7. }
  8. $formData = array(
  9. 'fraza' => !isset($_SESSION['form']) ? null : $_SESSION['form']['fraza'],
  10. 'opcja' => !isset($_SESSION['form']) ? null : $_SESSION['form']['opcja'],
  11. );
  12. ?>
  13. <div class="kontener"><font class="nag1">
  14. <form method="post" action="cpax.php?go=szukaj" name="formData">
  15. <input type="hidden" name="go" value="szukaj" class="">
  16. Autor: <input type="radio" name="<?php echo $formData["opcja"];?>" value="autor" />&nbsp;&nbsp;&nbsp;
  17. Tytuł: <input type="radio" name="<?php echo $formData["opcja"];?>" value="tytul" checked="checked" />&nbsp;&nbsp;&nbsp;
  18. Treść: <input type="radio" name="<?php echo $formData["opcja"];?>" value="tresc" />&nbsp;&nbsp;&nbsp;
  19. <input type="text" size="40" name="fraza" class="edit" value="<?php echo $formData["fraza"];?>">
  20. <input type="submit" value="" class="search" name="oursubmit">
  21. </form></font></div>

i nadal pusto ;(

Ten post edytował Kshyhoo 20.01.2010, 13:35:32
Go to the top of the page
+Quote Post
nospor
post
Post #21





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No bo radio to nie input text i zachowuje się zupelnie inaczej...
  1. <?php
  2. if (!empty($_POST['oursubmit'])) {
  3. $_SESSION['form'] = array(
  4. 'opcja' => $_POST['opcja'],
  5. 'fraza' => $_POST['fraza'],
  6. );
  7. }
  8. $formData = array(
  9. 'opcja' => !isset($_SESSION['form']) ? null : $_SESSION['form']['opcja'],
  10. 'fraza' => !isset($_SESSION['form']) ? null : $_SESSION['form']['fraza'],
  11. );
  12. ?>
  13. <div class="kontener"><font class="nag1">
  14. <form method="post" action="cpax.php?go=szukaj" name="formData">
  15. <input type="hidden" name="go" value="szukaj" class="">
  16. Autor: <input type="radio" name="opcja" value="0" <?php if (empty($formData['opcja'])) echo 'checked="checked"';?> />
  17. Tytuł: <input type="radio" name="opcja" value="1" <?php if ($formData['opcja'] == 1) echo 'checked="checked"';?> />
  18. Treść: <input type="radio" name="opcja" value="2" <?php if ($formData['opcja'] == 2) echo 'checked="checked"';?> />
  19. <input type="text" size="40" name="fraza" class="edit" value="<?php echo $formData["fraza"];?>">
  20. <input type="submit" value="" class="search" name="oursubmit">
  21. </form></font></div>
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #22





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Test wykazał:
Cytat
POST: Array
(
[go] => szukaj
[opcja] => 1
[fraza] => aaa
[oursubmit] =>
SESSION: Array
(
[form] => Array
(
[fraza] => aaa
[opcja] =>
)
)

I wyniki puste...
Go to the top of the page
+Quote Post
nospor
post
Post #23





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




no bo bez namyslu skopiowales...
Z rozpedu zostawilem stary kod
nie: if (!empty($_POST['oursubmit'])) {
a: if (isset($_POST['oursubmit'])) {

Mysl trochę nad kodem co dostajesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #24





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nadal pusto:
Cytat
POST: Array
(
[go] => szukaj
[opcja] => 1
[fraza] => bbb
[oursubmit] =>
)
SESSION: Array
(
[form] => Array
(
[opcja] => 1
[fraza] => bbb
)
)
Go to the top of the page
+Quote Post
nospor
post
Post #25





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




no jak pusto? Juz w sesji masz to co masz miec.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #26





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No mam to, co wkleiłem... Yyyyy, no tak, nie mam w bazie 0, 1, 2, tylko autor, tytul i tresc (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Kshyhoo 20.01.2010, 14:00:32
Go to the top of the page
+Quote Post
nospor
post
Post #27





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Yyyyy, no tak, nie mam w bazie 0, 1, 2, tylko autor, tytul i tresc
No ale chyba juz sam wiesz jak to poprawic?
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #28





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nie bardzo. Wiem, jak zmienić wartości:
  1. $gdzie = array("0" => "autor", "1" => "tytul", "2" => "tresc");

Ale potem... (IMG:style_emoticons/default/sciana.gif)

Kurde, chyba znalazłem:
  1. $opcje = array("0" => "autor", "1" => "tytul", "2" => "tresc");
  2. $gdzie = current($opcje);

current

Chyba nie! Pobiera pierwszą wartość tablicy.

Ten post edytował Kshyhoo 20.01.2010, 15:26:51
Go to the top of the page
+Quote Post
thek
post
Post #29





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A sprawdzałeś chociaż co uzyskasz poprzez wywołanie $gdzie[0], $gdzie[1]? Nie rób z siebie głupszego niż jesteś (IMG:style_emoticons/default/winksmiley.jpg)

EDIT: Current pobiera wartość tablicy ustawioną pod aktualnym wskaźnikiem tablicy. Niekoniecznie pierwszym...

Ten post edytował thek 20.01.2010, 15:29:22
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #30





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(thek @ 20.01.2010, 15:28:10 ) *
Nie rób z siebie głupszego niż jesteś (IMG:style_emoticons/default/winksmiley.jpg)

Jeżeli chciałeś mnie obrazić, to dobrze trafiłeś. To, że jestem raczkujący w php nie oznacza, że nie umiem sprawdzić co dostaje z tablicy...
Go to the top of the page
+Quote Post
nospor
post
Post #31





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




  1. $jakisindex = 1;
  2. $opcje = array("0" => "autor", "1" => "tytul", "2" => "tresc");
  3. $gdzie = $opcje[$jakisindex];


Cytat
Jeżeli chciałeś mnie obrazić, to dobrze trafiłeś.
Widac nie zalapales grypsu theka. Przeczytaj jego tekst jeszcze raz na spokoknie.

Swoją drogą naprawdę mógłbyś patrzeć co piszesz a nie strzelasz po omacku. Nie dziw się, ze ludzie zaczynają powoli żartować sobie.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #32





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No tak, niby wszystko ok, a wyniki wyszukiwania puste...
Go to the top of the page
+Quote Post
nospor
post
Post #33





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Czy ja za kazdym razem muszę pisac:
"pokaż kod"
?
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #34





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Sorry Winetu, kod całej szukajki:
  1. <?php
  2. if (isset($_POST['oursubmit'])) {
  3. $_SESSION['form'] = array(
  4. 'opcja' => $_POST['opcja'],
  5. 'fraza' => $_POST['fraza'],
  6. );
  7. }
  8. $formData = array(
  9. 'opcja' => !isset($_SESSION['form']) ? null : $_SESSION['form']['opcja'],
  10. 'fraza' => !isset($_SESSION['form']) ? null : $_SESSION['form']['fraza'],
  11. );
  12. ?>
  13. <div class="kontener"><font class="nag1">
  14. <form method="post" action="cpax.php?go=szukaj" name="formData">
  15. <input type="hidden" name="go" value="szukaj" class="">
  16. Autor: <input type="radio" name="opcja" value="0" <?php if (empty($formData['opcja'])) echo 'checked="checked"';?> />&nbsp;&nbsp;&nbsp;
  17. Tytuł: <input type="radio" name="opcja" value="1" <?php if ($formData['opcja'] == 1) echo 'checked="checked"';?> />&nbsp;&nbsp;&nbsp;
  18. Treść: <input type="radio" name="opcja" value="2" <?php if ($formData['opcja'] == 2) echo 'checked="checked"';?> />&nbsp;&nbsp;&nbsp;
  19. <input type="text" size="40" name="fraza" class="edit" value="<?php echo $formData["fraza"];?>">
  20. <input type="submit" value="" class="search" name="oursubmit">
  21. </form></font></div>
  22. <?php
  23. $jakisindex = $_SESSION['form']['opcja'];
  24. $opcje = array("0" => "autor", "1" => "tytul", "2" => "tresc");
  25. $gdzie = $opcje[$jakisindex];
  26.  
  27. echo $gdzie; echo ' '; echo $_SESSION['form']['fraza'];
  28. ///////////////////////// DANE DO STRONICOWANIA /////////////////////////
  29. if (isset($_SESSION['form']['fraza'])) {
  30.  
  31. function pasek($rekordow,$na_strone,$na_pasku,$skryptszu,$s) {
  32. $stron = ceil($rekordow/$na_strone);
  33. if ($s<1) $s=1;
  34. if ($s>$stron) $s=$stron;
  35. $koniec = $s+$na_pasku;
  36. if ($s<=$na_pasku) $koniec = $na_pasku*2+1;
  37. if ($koniec>$stron) $koniec = $stron;
  38. $start = $koniec-$na_pasku*2;
  39. if ($start<1) $start=1;
  40. if ($s>1) $p = "<a href='$skryptszu".($s-1)."'><img style='height: 21px; width: 57px;' alt='w lewo' border='0' cursor: pointer; src='./gfx/pla.png'></a>";
  41. else $p = "<img style='height: 21px; width: 57px;' alt='w lewo' border='0' cursor: pointer; src='./gfx/pln.png'>";
  42. if ($s<$stron) $n = "<a href='$skryptszu".($s+1)."'><img style='height: 21px; width: 57px;' alt='' border='0' cursor: pointer; src='./gfx/ppa.png'></a>";
  43. else $n = "<img style='height: 21px; width: 57px;' alt='w prawo' border='0' cursor: pointer; src='./gfx/ppn.png'>";
  44. for ($i=$start; $i<=$koniec; $i++) {
  45. if ($i==$s) $l .= "&nbsp;<span style='color:#cc0000;'><b>$i</b></span>&nbsp;";
  46. else $l .= "&nbsp;<a href='$skryptszu$i'>$i</a>&nbsp;";
  47. }
  48. if ($rekordow<1) $wynik = "<font class='en'>Brak informacji spełniających kryteria wyszukiwania...</font>";
  49. else $wynik = "<font class='en'>znalezionych: $rekordow <br /> strona <b>$s</b> z $stron<br />"; //znalezionych: $rekordow,
  50. if ($stron>1) $wynik .= "<font class='en'>$p&nbsp; - $l - &nbsp;$n</font>";
  51. return $wynik;
  52. }
  53.  
  54. if (!empty($_GET['s'])) {
  55. $s = ($_GET["s"]>1)?number_format($_GET["s"], 0, "", ""):1;
  56. $_SESSION["s"] = $_GET["s"];
  57. } else {
  58. $s = ($_SESSION["s"]>1)?number_format($_SESSION["s"], 0, "", ""):1;
  59. }
  60. /////////////////////////
  61.  
  62. $start = ($s-1)*$na_strone;
  63. $wynik = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM tutoriale WHERE $gdzie LIKE '%$fraza%' LIMIT $start, $na_strone");
  64. $rekordow = mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);
  65. // ponownie szuka, gdy ktos celowo wpisze "s" większe od ilości stron:
  66. $stron = ceil($rekordow/$na_strone);
  67. if ($s>$stron and $rekordow>0) {
  68. $start = ($stron-1)*$na_strone;
  69. $wynik = mysql_query("SELECT * FROM tutoriale WHERE $gdzie LIKE '%$fraza%' LIMIT $start, $na_strone");
  70. }
  71.  
  72. /////////////////////////
  73. echo "<div class='stron'>";
  74. echo "<font class='en'>";
  75. echo pasek($rekordow,$na_strone,$na_pasku,$skryptszu,$s);
  76. echo "</font>\n";
  77. echo "</div>"; // stron
  78. /////////////////////////
  79. if ($wynik and mysql_num_rows($wynik)>1) {
  80. echo "<div class='tabele'>
  81. <table class='t_table'>
  82. <tr>
  83. <td class='t_th' width='75px'>Obraz</td>
  84. <td class='t_th'>Tytuł tutoriala</td>
  85. <td class='t_th' width='100px'>Kategoria</td>
  86. </tr>";
  87.  
  88. while ($wynik and $dane = mysql_fetch_array($wynik)) {
  89. $bgl = ($kl++%2 == 0)?"t_tdjl":"t_tdcl";
  90. $bgc = ($kc++%2 == 0)?"t_tdjc":"t_tdcc";
  91. echo "</tr>
  92. <tr>
  93. <td class='$bgc'><img src='".$dane['obraz']."' alt='obraz' width='70' height='70' /></td>
  94. <td class='$bgl'><b>Tytuł: </b> <a href='cpax.php?go=pokaz&id=".$dane['id']."'class='key'>".$dane['tytul']."</a><br />
  95. <b>Autor: </b> ".$dane['autor']."<br />
  96. <b>Data: </b> ".$dane['data']."<br />
  97. <b>Notatki: </b> ".$dane['notatki']."<br />
  98. <b>Dodał: </b> ".$dane['moderator']."</td>
  99. <td class='$bgc'><a href='cpax.php?go=tutoriale&k=2&c=".$dane['kat_id']."'class='key'>".$dane['kat']."</a></td>
  100. </tr>";
  101. } //zap
  102. echo "</table>
  103. <div class='stron'><font class='en'>";
  104. echo pasek($rekordow,$na_strone,$na_pasku,$skryptszu,$s);
  105. }// wynik>1
  106. echo "</font></div>"; // stron</div>";
  107. } //
  108. ?>


EDIT: Niby wszystko ok, ale wyszukiwanie nie działa poprawnie...

Ten post edytował Kshyhoo 21.01.2010, 10:09:45
Go to the top of the page
+Quote Post
nospor
post
Post #35





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




w zapytaniu korzystasz ze zmiennej $fraza, ale nigdzie wczesniej do tej zmiennej nic nie przypisujesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #36





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Masz rację (jak zawsze). Jakimś cudem skrypt pobiera sobie frazę z $_SESSION['form']['fraza'];. Skrypt zachowuje się dziwnie, po wpisaniu frazy "Adam" w tytuł, nie znajduje jej, chociaż taka fraza istnieje. Po zmianie opcji na treść, znajduje frazę - po wybraniu opcji tytuł, już znajduje frazę "Adam".
Jak wykonać przycisk "Nowe szukanie", który czyści opcje szukania? Zerować sesję?
Go to the top of the page
+Quote Post
nospor
post
Post #37





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




tak, po wcisnieciu "nowe szukanie " masz zrobic:
  1. unset($_SESSION['form']);
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #38





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A można to zrobić na zasadzie:
  1. <button type="reset" onclick="<?php unset($_SESSION['form']);?>"> Nowe szukanie </button>

(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #39





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




nie
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #40





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Generalnie, to już w miarę chodzi. Wyszukuje i stronicuje dobrze. nie wiem tylko, jak miałbym zrobić usuwanie z sesji numeru strony, w przypadku nowego szukania. Formularz mam wyświetlony cały czas.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 5.10.2025 - 14:34