Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter]Przetrzymanie danych..
Forum PHP.pl > Forum > PHP > Frameworki
kajzur
Wiem, troszkę dziwny tytuł winksmiley.jpg Robie w CI wyszukiwarkę, wraz z paginacją. No i mam problem, jak przedłużyć "życie" danych wpisawny w polu szukaj..

POST - Ginie po przejściu na nast stronę.

GET -
Cytat
GET data is simply disallowed by CodeIgniter since the system utilizes URI segments rather than traditional URL query strings (unless you have the query string option enabled in your config file). The global GET array is unset by the Input class during system initialization.


Po ustawieniu

Cytat
$config['enable_query_strings'] = true;


Mam dostęp do GET, ale wtedy po przejściu na nast. stronę, paginacja nadpisuje szukaną wartość, numerem strony.. Więc też nie działa.. ;/

Sesja - Po przejściu na następną stronę, nadpisuje zmienną, i zamiast szukać frazy, szuka pustego pola.. ;/

Any idea? ;>
phpion
Wysyłaj formularz metodą GET.
kajzur
Nie mam dostępu do GET! Napisałem przecież.. A jesli zmienie w configu, to mam dostęp, ale paginacja wariuje.. i URL'e się psują.. ;/ Napisałem to zresztą w 1 poście, jakieś inne pomysły?
magra
przechwytujasz za pomocą javascriptu wyszukiwaną frazę i tworzysz url, np:
http://www.moj-zajefajny-serwis.pl/search/wyszukiwana-fraza
w metodzie kontrolera masz dwa parametry :
  1. function search($searched, $page = 1)

no i paginacja powinna działać bez problemu smile.gif
kajzur
Cytat
przechwytujasz za pomocą javascriptu wyszukiwaną frazę i tworzysz url
Jak to zrobić?
f1xer
Cytat(magra @ 29.08.2009, 12:25:45 ) *
przechwytujasz za pomocą javascriptu wyszukiwaną frazę i tworzysz url, np:
http://www.moj-zajefajny-serwis.pl/search/wyszukiwana-fraza
w metodzie kontrolera masz dwa parametry :
[PHP] pobierz, plaintext
  1. function search($searched, $page = 1)
[PHP] pobierz, plaintext
no i paginacja powinna działać bez problemu smile.gif


mały OT:

chyba nie chcesz uzależniać działania tak ważnego elementu strony jak wyszukiwarka od tego czy user ma włączony Java Script?
Niestety z problemem nie pomogę bo nie znam tego framework'a ale proponowałbym zawrócić ze ścieżki Java Script.
kajzur
Cytat
chyba nie chcesz uzależniać działania tak ważnego elementu strony jak wyszukiwarka od tego czy user ma włączony Java Script?
Niestety z problemem nie pomogę bo nie znam tego framework'a ale proponowałbym zawrócić ze ścieżki Java Script.


Masz rację.. To jak to zrobić? Załączam link do dokumentacji klasy paginacji - http://codeigniter.com/user_guide/libraries/pagination.html

I mój widok:
  1. case 'search':
  2.  
  3. $attributes = array('id' => 'szukaj', 'method' => 'get');
  4. echo form_open('cytaty/search/', $attributes);
  5. echo '<p align="center">Wpisz szukaną frazę: <br>
  6. <input type="hidden" name="search" value = "yes" />
  7. <input type="text" name="phrase" />
  8.  
  9.  
  10.  
  11. <br>
  12. ';
  13.  
  14. echo '<input type="submit" value="Szukaj" />';
  15.  
  16. echo '</p>
  17.  
  18. <br><br>';
  19.  
  20.  
  21. ?>
  22. <?
  23. if(isset($dane))
  24. foreach($dane as $dana)
  25. {
  26.  
  27. echo 'Dodał: '.anchor('cytaty/profil/'.url_title($dana->dodal).'',$dana->dodal ).', dnia '.$dana->data.'; Autor: '.$imie[0]->nazwa.' ['.$dana->sklad.'] - '.$dana->kawalek.'<br><p> <br><b>'.$dana->tresc.'</b></p><br>';
  28.  
  29. }
  30.  
  31. ?>
  32.  
  33.  
  34.  
  35. <?
  36. echo $this->pagination->create_links();
  37. ?>


i kontroler:

  1. function search()
  2. {
  3.  
  4. $this->load->library('pagination');
  5. $this->load->model('cytat');
  6.  
  7. $tekst['artysci'] = $this->cytat->get_artists();
  8. $tekst['users'] = $this->cytat->get_users();
  9.  
  10.  
  11. if($this->input->get('search') == 'yes')
  12. {
  13. $config['base_url'] = site_url().'/cytaty/search';
  14. $config['total_rows'] = $this->cytat->getSResults_num($this->input->get('phrase'));
  15. $config['per_page'] = '4';
  16. $config['page_query_string'] = TRUE;
  17. $config['uri_segment'] = '3';
  18. $config['full_tag_open'] = '<p align = "center">';
  19. $config['full_tag_close'] = '</p>';
  20. $config['next_link'] = 'Dalej';
  21. $config['prev_link'] = 'Wstecz';
  22. $this->pagination->initialize($config);
  23.  
  24. if(!$this->uri->segment(3))
  25. $lol = 0;
  26. else
  27. $lol = $this->uri->segment(3);
  28.  
  29. $tekst['dane'] = $this->cytat->getSResults($this->input->get('phrase'), $config['per_page'], $lol);
  30. }
  31. $this->load->view('bzdety', $tekst);
  32.  
  33. }
  34.  
f1xer
zdaje się podobny problem:

http://codeigniter.com/forums/viewthread/124051/#614158

i rozwiązanie oparte na cudzej bibliotece być może się przyda.
kajzur
Cytat
Ya I agree with devbro on how to do it but I would set a flashdata session instead of a regular session then just reset it when they go to the next page. that way if they leave the search pages they don’t have any unnecessary session data.

Atleast that how I do it.

Identycznie u mnie reaguje na sesje...

Niby problem rozwiązałem:

  1.  
  2. function search()
  3. {
  4.  
  5. $this->load->library('pagination');
  6. $this->load->model('cytat');
  7.  
  8.  
  9.  
  10. $tekst['artysci'] = $this->cytat->get_artists();
  11. $tekst['users'] = $this->cytat->get_users();
  12.  
  13.  
  14. if($this->input->post('search') == 'yes')
  15. {
  16.  
  17. $newsite = site_url().$this->uri->uri_string().'/'.$this->input->post('phrase');
  18. redirect ($newsite, 'location');
  19. }
  20. if($this->uri->segment(3) != '')
  21. {
  22. $config['base_url'] = site_url().'/cytaty/search/'.$this->uri->segment(3).'';
  23. $config['total_rows'] = $this->cytat->getSResults_num($this->uri->segment(3));
  24. $config['per_page'] = '4';
  25. $config['uri_segment'] = '4';
  26. $config['full_tag_open'] = '<p align = "center">';
  27. $config['full_tag_close'] = '</p>';
  28. $config['next_link'] = 'Dalej';
  29. $config['prev_link'] = 'Wstecz';
  30. $this->pagination->initialize($config);
  31.  
  32. if(!$this->uri->segment(4))
  33. $lol = 0;
  34. else
  35. $lol = $this->uri->segment(4);
  36.  
  37. $tekst['dane'] = $this->cytat->getSResults($this->uri->segment(3), $config['per_page'], $lol);
  38. }
  39. $this->load->view('bzdety', $tekst);
  40.  
  41. }

Co zrobiłem? Ano, odebrałem, to po user wpisał w pole, stworzyłem z tą frazą, nowy url, i przekierowałem na niego..

Widzicie jakieś zagrożenie dla takiego rozwiązania?

1. Problem z polskimi znakami - próbowałem przez base64 lecz nie działało - nie upoważnione znaki - po przeszukaniu Internetu, pogrzebałem trochę w uri.php i teraz mam linki w postaci np http://localhost/~cyt/index.php/cytaty/search/miłość - co ciekawe, polskie znaki w adresie działają winksmiley.jpg

Jakie inne zagrożenia widzicie?
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.