Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Jak spowodować, żęby formularz korzystał z mod_rewrite ?
Greg23
post 28.07.2012, 17:54:55
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


Na stronie mam formularz do wyszukiwania:
  1. <form method="get" action="http://www.domena.pl/szukaj/wynik.php">
  2. <div>
  3. <input type="text" id="textf" name="co" value="" size="18" />
  4. <input type="submit" id="submit1" name="submit" value="G" />
  5. </div>
  6. </form>



W .htaccess mam takie przekierowanie:

  1. RewriteRule szukaj/(.*)$ szukaj/wynik.php?co=$1 [L,QSA]


Czyli odwołując się do:
  1. www.domena.pl/szukaj/php

tak naprawdę odwołuje się do:
  1. www.domena.pl/szukaj/wynik.php?co=php


Natomiast nie wiem jak osiągnąć ten efekt w formularzu, bo w tym momencie po wpisaniu czegoś w formularz
ładuje mi się, jak nie trudno się domyślić wersja bez mod_rewrite czyli www.domena.pl/szukaj/wynik.php?co=php a chciałbym, żeby
ładowała się wersja: www.domena.pl/szukaj/php

Jak osiągnąć taki efekt ?

Ten post edytował Greg23 28.07.2012, 17:56:05


--------------------
Go to the top of the page
+Quote Post
konrados
post 28.07.2012, 18:12:52
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Albo nie rozumiem, albo nie wiem po co się bawisz w mod_rewrite, po prostu użyj metody POST a nie GET, czyli:

  1. <form method="post" action="http://www.domena.pl/szukaj/wynik.php">


I wtedy w kodzie php zamień $_GET na $_POST
Go to the top of the page
+Quote Post
Crozin
post 28.07.2012, 18:26:50
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@konrados: Formularz wyszukiwania powinien przechowywać szukaną frazę i inne parametry wyszukiwania w URL-u - chociażby celem umożliwienia skopiowania takiego adresu.
@Greg23: Musiałbyś wysłać formularz (obojętnie jaką metodą), po stronie serwera wygenerować ostateczny URL, po czym wykonać przekierowanie na wygenerowany adres. A by całość nieco przyspieszyć (by uniknąć dodatkowego żądania HTTP) możesz przy pomocy JS wygenerować URL w momencie wysyłania formularza, przerwać wysyłanie formularza oraz wykonać przekierowanie.
Go to the top of the page
+Quote Post
konrados
post 28.07.2012, 18:34:58
Post #4





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Cytat
@konrados: Formularz wyszukiwania powinien przechowywać szukaną frazę i inne parametry wyszukiwania w URL-u - chociażby celem umożliwienia skopiowania takiego adresu.


Nie no wiem i zawsze dlatego używam GET w takich sytuacjach, ale jak przedmówcy tak bardzo to przeszkadzało... No teraz dopiero spojrzałem na ten rewrite i chyba po prostu z początku nie zrozumiałem wstydnis.gif
Go to the top of the page
+Quote Post
Greg23
post 28.07.2012, 18:44:36
Post #5





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


Cytat(Crozin @ 28.07.2012, 19:26:50 ) *
@konrados: Formularz wyszukiwania powinien przechowywać szukaną frazę i inne parametry wyszukiwania w URL-u - chociażby celem umożliwienia skopiowania takiego adresu.

Dokładnie.
Cytat
@Greg23: Musiałbyś wysłać formularz (obojętnie jaką metodą), po stronie serwera wygenerować ostateczny URL, po czym wykonać przekierowanie na wygenerowany adres. A by całość nieco przyspieszyć (by uniknąć dodatkowego żądania HTTP) możesz przy pomocy JS wygenerować URL w momencie wysyłania formularza, przerwać wysyłanie formularza oraz wykonać przekierowanie.

No właśnie tak miałem zrobione. Po wysłaniu formularza do pliku pośredniczącego, który przy okazji obliczał liczbę wyników itp następowało przekierowanie za pomocą
header("Location") na rządany url. Myślałem, że to trochę przekombinowany sposób i chciałem uprościć.

A nie da się po prostu po wypełnieniu formularza i kliknięciu przycisku szukaj załadować strony www.domena.pl/szukaj/dane_z_formularza ?
Rozumiem, że to coś w tym stylu co zasugerowałeś zrobić za pomocą JS, niestety słabo znam JS :/

Ten post edytował Greg23 28.07.2012, 18:44:46


--------------------
Go to the top of the page
+Quote Post
peter13135
post 28.07.2012, 20:21:58
Post #6





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


  1. //wcześniej dossij sobie bibliotekę jquery
  2.  
  3. $(function(){
  4.  
  5. $("form").submit(function(){
  6. $('form').get(0).setAttribute('action', '/search/' + $("input[name='nazwaInputa']").val() + '/' + $("input[name='nazwaInnegoInputa']").val() );
  7.  
  8.  
  9. });
  10.  
  11. });


Pisane z palca, ale powinno działać (jak poprawisz ewentualne błędy).
$("input[name='nazwaInputa']").val() <- to jest oczywiście pobranie wartości z inputa o name "nazwaInputa"
aby pobrać value z inputa o id "idInputa", robisz tak :
Kod
$("#idInputa").val()


--------------------
:)
Go to the top of the page
+Quote Post
Pawel_W
post 28.07.2012, 20:56:15
Post #7





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


peter, przekombinowałeś, wystarczy walnąć

  1. <form onsubmit="window.location='/search/'+this.nazwaPola.value;return false;">
smile.gif
Go to the top of the page
+Quote Post
Greg23
post 28.07.2012, 21:23:39
Post #8





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


Działa świetnie.
Dziękuje wszystkim, także Tobie peter13135 za dobre chęci, ale sposób Pawła jest 'troszkę' prostszy wink.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 06:46