Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmiana URL-a przed wyslaniem formularza
miseczka
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.12.2011

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


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ć?

Ten post edytował miseczka 6.03.2012, 22:56:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Leihto
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 4
Dołączył: 9.01.2012

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


Mod_Rewrite:
Kod
RewriteEngine On
RewriteRule ^baty-([^-]*)-([^-]*)-Szukaj$ /index.php?menu=baty&suma=$1&okres=$2&szukaj=Szukaj [L]

(do pliku .htaccess)
Go to the top of the page
+Quote Post
miseczka
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.12.2011

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


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ą.
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Ż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


Ten post edytował Sephirus 7.03.2012, 15:30:21


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
miseczka
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.12.2011

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


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?
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 Aktualny czas: 22.08.2025 - 05:21