Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie jako subfolder w pasku adresu
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Cześć,
Jak zrobić żeby po kliknięciu w button 'add' w pasku adresu w przeglądarce wyświetlało 'http://localhost/strona/add-product' ?
Oczywiście nie chcę przekierowywać tym buttonem do pliku w folderze add-product, bo takowy folder nie istnieje.
Dzięki.
Salvation
przy pomocy pliku .htaccess
sadistic_son
No dobra, ale trochę dokładniej bym prosił. Przecież w .htaccess opcji jest bardzo duzo. Nie bardzo mam pomysł o co w ogóle wujka google pytać. Zapytania typu "php htaccess subfolder in address line" nie dają mi zadowalających rezultatów.
Dopowiem tylko, żeby była jasność, że chodzi mi o coś w stylu:
  1. if(isset($_GET['button']) && $_GET['button'] == 'add'){
  2. $address = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'/add-product';
  3. set_browser_address_value($address);
  4. }


Szkoda tylko że taka funkcja jak set_browser_address_value nie istnieje oraz wiem, że przez htaccess osiąga się to inaczej niż powyżej. Czyli nie chodzi mi o przekierowanie a jedynie wyświetlenie w pasku adresu wartości którą sam zdefiniuję.
nospor
Cytat
Nie bardzo mam pomysł o co w ogóle wujka google pytać.

Ladne URL
tudziez po angielski NICE URLs
Salvation
Możesz spróbować coś takiego:
Kod
RewriteEngine On
RewriteRule ^strona/add-product$ /index.php?action=add-product [QSA]

W HTML już normalny URL: `href="/strona/add-product"` i w `index.php` pod akcją: "add-product" z GET dostaniesz swój request.

Ogólnie, to szukaj pod frazą: pretty url htaccess, bo to co podałem wyżej, można regexem ogarnąć, żeby nie pisać każdego przypadku URL-a. Tylko, że wtedy 404 będziesz musiał sam sobie ograć w kodzie.
sadistic_son
Ok, 'nice urls' oraz 'pretty url htaccess'. Dzięki, widzę że jest trochę samouczków.
Natomiast to co Salvation podał to mi działa i chętnie zostanę przy tym rozwiązaniu, jednak napotkałem taki problem, że w zależności od tego który przycisk w formularzu został naciśnięty to inna strona powinna się wyświetlić. Czyli odniesienie w form action jest do tego samego adresu, i w takiej sytuacji to rozwiązanie już nie działa. Jakieś pomysły jak to rozwiązać?
Salvation
Jeżeli ma się wyświelić strona, to nie tag `button`, a `a` powinieneś użyć w HTML-u...
Pokaż strukturę HTML najlepiej.

A wracając do problemu, to możesz rozbudować podany przeze mnie RewriteRule - poczytaj trochę tych tutoriali co znalazłeś.
sadistic_son
Cytat(Salvation @ 2.01.2023, 16:28:45 ) *
Jeżeli ma się wyświelić strona, to nie tag `button`, a `a` powinieneś użyć w HTML-u...

Wiem, ale mam narzucone, że to ma być button, i to jako część większego formularza, w którym różne buttony robią różne rzeczy.

Chwilowe rozwiązanie które znalazłem to użycie JS:
  1. <button type="button" onclick="location.href='http://<?= PRODUCT_LIST_LANDING ?>add-product';" />ADD</button>

To działa jak należy, ale zastanawiam się... rzeczywiście nie da się użyć nice urls przy użyciu POST, beż wspierania się JS?

EDIT:
Ewentualnie można by jeszcze zrobić ifa, że jeśli isset($_POST['add']) to wtedy przekierowuje na localhost/stronka/add-product ale to chyba rozwiązanie na około i nie do końca poprawne.
Salvation
Ale ja nie rozumiem co chcesz osiagnąć... Masz w folmularzu dwa buttony i chcesz, żeby kierowały do dwóch innych page'y?
nospor
Cytat
rzeczywiście nie da się użyć nice urls przy użyciu POST, beż wspierania się JS?

Nie myl dwoch rzeczy. Niewazne czy masz ladne url czy standardowe, do nie da sie wyslac formularza do dwoch roznych URLi od tak sobie. Wiec ladne URL tu nie ma ja nic do rzeczy.

Na co chcesz zrobic sa 3 drogi:

1) Posiadac dwa rozne formularze i kazdy kieruje gdzie ma kierowac
2) Uzycie js
3) MIec jeden URL dla formularza i w zaleznosci co kliknieta to potem w z tego url przekierowac gdzie trzeba. To co podales ostatnie jako "na okolo"

Najlepsze jest rozwiazanie 1, potem 3 moim zdaniem. js to ostatecznosc. Chyba ze twoja strona tak czy siak wymaga js do dzialania to wtedy bez roznicy
gino
Możesz też pobawić się w js z window.history.pushState, coś w stylu:
Kod
<script>
function changePage(){
       window.history.pushState('My page', '', '/strona/add-product');
}

</script>
<button onclick="changePage();">Add</button>


powinno przenieść Cię do żądanej strony, ale to jest zabawa z wpisem w historii i ustawieniem tego wpisu w pasku adresu. Piszę z palca, ale powinno działać.

edit: nie przenieś tylko ustawić adres
trueblue
Cytat(sadistic_son @ 2.01.2023, 16:35:41 ) *
Wiem, ale mam narzucone, że to ma być button, i to jako część większego formularza, w którym różne buttony robią różne rzeczy.

Element <a> można ostylować identycznie jak <button>, <a> nie musi być tekstowym linkiem.

Tyle, że zarówno przyciskiem typu "button", jak i linkiem nie zatwierdzisz formularza, a ja nie wiem czy chcesz zatwierdzać wraz z naciśnięciem formularz czy nie.
Jeśli chcesz zatwierdzić, to wtedy rozwiązaniem jest użyciem dwóch buttonów jak napisał nospor. Przy czym button powinien być typu "submit" (z innym value od drugiego).


sadistic_son
Cytat(Salvation @ 2.01.2023, 17:07:41 ) *
Ale ja nie rozumiem co chcesz osiagnąć... Masz w folmularzu dwa buttony i chcesz, żeby kierowały do dwóch innych page'y?

Tak. Niestety to jest narzucone z góry.




Cytat(nospor @ 2.01.2023, 17:49:38 ) *
Na co chcesz zrobic sa 3 drogi:

1) Posiadac dwa rozne formularze i kazdy kieruje gdzie ma kierowac
2) Uzycie js
3) MIec jeden URL dla formularza i w zaleznosci co kliknieta to potem w z tego url przekierowac gdzie trzeba. To co podales ostatnie jako "na okolo"

Najlepsze jest rozwiazanie 1, potem 3 moim zdaniem. js to ostatecznosc. Chyba ze twoja strona tak czy siak wymaga js do dzialania to wtedy bez roznicy



Co do 1 to niestety wymaganie odgórne mi na to nie pozwala. Stronka ma JS w innych miejscach też.




Cytat(gino @ 2.01.2023, 18:19:41 ) *
Możesz też pobawić się w js z window.history.pushState, coś w stylu:

Dzięki, ale to już magia i chyba trochę na siłę wink.gif


Cytat(trueblue @ 2.01.2023, 19:44:59 ) *
Element <a> można ostylować identycznie jak <button>, <a> nie musi być tekstowym linkiem.

Wiem, ale mam narzucone, że to musi być button. Podejrzewam, że jakiś automat będzie po tym smigać.


Cytat(trueblue @ 2.01.2023, 19:44:59 ) *
Tyle, że zarówno przyciskiem typu "button", jak i linkiem nie zatwierdzisz formularza, a ja nie wiem czy chcesz zatwierdzać wraz z naciśnięciem formularz czy nie.
Jeśli chcesz zatwierdzić, to wtedy rozwiązaniem jest użyciem dwóch buttonów jak napisał nospor. Przy czym button powinien być typu "submit" (z innym value od drugiego).

Tak, to wiem. Formularze jeszcze ogarniam wink.gif





Podsumowując, zostaję przy JS. Dzięki wszystkim za uczestnictwo w rozmowie i pomoc.
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.