Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Jak spowodować, żęby formularz korzystał z mod_rewrite ?
Forum PHP.pl > Forum > Przedszkole
Greg23
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 ?
konrados
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
Crozin
@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.
konrados
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
Greg23
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 :/
peter13135
  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()
Pawel_W
peter, przekombinowałeś, wystarczy walnąć

  1. <form onsubmit="window.location='/search/'+this.nazwaPola.value;return false;">
smile.gif
Greg23
Działa świetnie.
Dziękuje wszystkim, także Tobie peter13135 za dobre chęci, ale sposób Pawła jest 'troszkę' prostszy wink.gif
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.