Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana URL-a przed wyslaniem formularza
Forum PHP.pl > Forum > Po stronie przeglądarki
miseczka
Witam,
Na wstępie przyznam się, że w ogóle nie znam javascript, a muszę zrobić pewną rzecz. Mianowicie mam taki formularz:

  1. <form action="" method="get">
  2. <input type="hidden" name="menu" value="baty" />
  3. <input type="text" name="suma" maxlength="15" value="1000" />
  4. <select name="okres">
  5. <option value="1_dzien">1 dzień</option>
  6. <option value="1_tydzien">1 tydzień</option>
  7. <option value="2_tygodnie">2 tygodnie</option>
  8. <option value="1_miesiac">1 miesiąc</option>
  9. <option value="2_miesiace">2 miesiące</option>
  10. </select>
  11. <input type="submit" name="szukaj" value="Szukaj" />
  12. </form>

I gdy wyślę ten formularz URL wygląda tak:
Kod
http://localhost/test/index.php?menu=baty&suma=1000&okres=2_miesiace&szukaj=Szukaj

A musi wyglądać tak:
Kod
http://localhost/test/baty-1000-2_miesiace-Szukaj


Mógłby ktoś naprowadzić mnie jak coś takiego wykonać?
Leihto
Mod_Rewrite:
Kod
RewriteEngine On
RewriteRule ^baty-([^-]*)-([^-]*)-Szukaj$ /index.php?menu=baty&suma=$1&okres=$2&szukaj=Szukaj [L]

(do pliku .htaccess)
miseczka
Nie o to mi chodziło. Ja chce to zrobić po stronie przeglądarki, a to co Ty pokazałeś jest rzeczą dokładnie odwrotną.
Sephirus
Żeby uzyskać coś takiego musisz w ogóle zastąpić wysyłanie formularza przekierowaniem GET.

Najprościej (idea) to ustawić formularzowi zdarzenie onsubmit(). Dajemy formularzowi ID:

  1. <form action="" method="get" id="form1">


Następnie w JS pobieramy wszystkie pola i tworzymy adres url:

[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById('form1').onSubmit = function () {
  2.  
  3. var urlParts = new Array();
  4. urlParts.push(this.menu.value); // dodajemy po kolei dane formularza
  5. urlParts.push(this.suma.value);
  6. urlParts.push(this.okres.value);
  7. urlParts.push(this.szukaj.value);
  8.  
  9. window.location.href = this.action + urlParts.join('-'); // tu łączymy nasze wartości w formę "a-b-c-d-e" itd... ;)
  10. return false;
  11. }
[JAVASCRIPT] pobierz, plaintext
miseczka
Dzięki za odpowiedź. Niestety u mnie to nie działa ale naprowadziło mnie na dobry kierunek. Po przejrzeniu kursu javascript i kilku postów na forum mam coś takiego:
  1. <script type="text/javascript">
  2. function wyslij_form()
  3. {
  4. var wartosc1 = document.getElementById("form1").menu.value;
  5. var wartosc2 = document.getElementById("form1").suma.value;
  6. var wartosc3 = document.getElementById("form1").okres.value;
  7. window.location.href = wartosc1+'-'+wartosc2+'-'+wartosc3;
  8. }
  9. </script>
  10. <form action="" method="get" id="form1">
  11. <input type="hidden" name="menu" value="baty" />
  12. <input type="text" name="suma" maxlength="15" value="1000" />
  13. <select name="okres">
  14. <option value="1_dzien">1 dzien</option>
  15. <option value="1_tydzien">1 tydzien</option>
  16. <option value="2_tygodnie">2 tygodnie</option>
  17. <option value="1_miesiac">1 miesiac</option>
  18. <option value="2_miesiace">2 miesiace</option>
  19. </select>
  20. <input type="button" value="wys" onclick="wyslij_form()" />
  21. </form>

Przycisk submit został zmieniony na button. Wszystko to działa tak jak ma działąć. Ale tu pojawia się kolejne pytanie. Ponieważ zostało to "sklecone" z kilku postow na forach i kursu zastanawia mnie czy takie rozwiązanie jest poprawne?
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.