[PHP]losowanie... |
[PHP]losowanie... |
19.08.2013, 14:22:04
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.08.2013 Ostrzeżenie: (0%) |
Witam!
Mam problem takiej natury. Otóż mam skrypt losujący cytaty. Zrobiłem guziczek losuj i po jego naciśnięciu losowany jest kolejny cytat - i generalnie wszystko gra. Problem w tym, że nie umiem zrobić takiej opcji aby losowanie rozpoczęło się dopiero od kliknięcia w guziczek. Aktualnie po "wklepaniu" storny od razu pojawia sie jakiś losowo wybranu cytat, a chciałbym, żeby pokazywał się tylko przycisk losuj i dopiero po jego kliknięciu wylosowany cytat. Zdaję sobie sprawę, że to pewnikiem tylko jedna linijka kodu. Ale moja przygoda z PHP-em rozpoczęła się zaledwie kilka godzin temu i pomimo grzebania w googlach nie jestem w stanie dostrzec odpowiedzi (pewnie nie raz ją widziałem). Oto i kod: Kod <?php $cytaty = file('cytaty.txt'); $wyswietl = explode('||', $cytaty[array_rand($cytaty, 1)]); echo '<form>'.$wyswietl[0].'<br/><input type="submit" value="losuj"></form>'; ?> Prosiłbym o pomoc |
|
|
19.08.2013, 14:25:52
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) |
Ten post edytował markuz 19.08.2013, 14:26:34 -------------------- |
|
|
19.08.2013, 14:27:09
Post
#3
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 9 Dołączył: 18.06.2013 Skąd: Białystok Ostrzeżenie: (0%) |
|
|
|
20.08.2013, 10:07:35
Post
#4
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.08.2013 Ostrzeżenie: (0%) |
Dziękuję bardzo, dokładnie taki efekt pragnąłem uzyskać. Szczerze mówiąc to nie spodziewałem się tak szybkiej reakcji.
Pozdrawiam! jeszcze jedno pytanko. Czy istnieje możliwość "zablokowania" losowania przy odświeżaniu strony. Żeby losować tylko i wyłącznie przez kliknięcie przycisku? Ten post edytował shiru 20.08.2013, 10:27:42 |
|
|
20.08.2013, 10:19:51
Post
#5
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 3 Dołączył: 31.01.2011 Skąd: Warszawa Ostrzeżenie: (10%) |
jeżeli dasz GET'a to zawsze będzie losował (bo po uprzednim kliknięciu następnie odświeżeniu strony zawsze w adresie będzie widniał wpis: ?akcja=losuj) - musi być w POST... czyli w klamrach drugiego rozwiązania od kolegi BigPig
Ten post edytował shpaque 20.08.2013, 10:23:50 |
|
|
20.08.2013, 10:27:06
Post
#6
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.08.2013 Ostrzeżenie: (0%) |
Używałem dwóch skryptów i w każdym jest takie samo zjawisko. Po odświeżeniu strony następuje losowanie.
|
|
|
20.08.2013, 10:33:11
Post
#7
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 3 Dołączył: 31.01.2011 Skąd: Warszawa Ostrzeżenie: (10%) |
Przy rozwiązaniu BigPig'a nie ma takiej możliwości - żeby wywołanie zadziałało TRZEBA nacisnąć submit button. Odswieżanie strony nie jest równoznaczne z naciśnięciem przycisku. TYLKO w przypadku GET'a tak jest.
Sprawdź swój kod albo daj jego wycinek - musisz mieć jakiegoś babola. |
|
|
20.08.2013, 10:49:15
Post
#8
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.08.2013 Ostrzeżenie: (0%) |
oto i kod:
Kod <form method="post"> <input type="submit" value="Wyślij!" id="submit" name="submit" /> </form> <?php if(isset($_POST['submit'])) { $cytaty = file('cytaty.txt'); $wyswietl = explode('||', $cytaty[array_rand($cytaty, 1)]); echo $wyswietl[0]; } ?> wkleiłem jeno swój kod losowania w kod kolegi BigPiga |
|
|
20.08.2013, 11:11:35
Post
#9
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 9 Dołączył: 18.06.2013 Skąd: Białystok Ostrzeżenie: (0%) |
I ten kod działa jak powinien.
Dla shpaque chodziło o to, że lepiej jest ten drobny problem rozwiązać przy pomocy POST niż GET. Gdy użyjesz button'u i POST to kod się odpali tylko i tylko wtedy, gdy wciśnie się przycisk. Z GET jest już inaczej. On odpala się w momencie, gdy w link'u znajdzie się wymagane słowo. W tym przypadku jest to: ?akcja=losuj W związku z tym, gdy używamy GET, możemy spowodować losowanie(odpalenie skryptu) na trzy sposoby. 1) Wciskając przycisk, który doda do linku wymaganą frazę i to spowoduje odpalenie się skryptu 2) Użytkownik ręcznie może wpisać do linku wymaganą frazę i to też spodowoduje odpalenie skryptu 3) Gdy użytkownik ma już w linku wpisaną wymaganą frazę, by móc wylosować kolejny cytat, wystarczy, że odświeży stronę. Skrypt się odpali, ponieważ w linku dalej znajduje się wymagany przez niego zwrot. W związku z tym chodziło koledzie shpaque, że POST jest lepsze, bo tylko po wciśnięciu przycisku, wylosuje się skrypt. Nawet jak już go wylosujemy i odświeżymy stronę, to znowu będziemy musieli go wcisnąć by go wylosować. Najlepiej będzie jak napiszesz to samo z wykorzystaniem GET i sprawdzisz czy faktycznie jest tak jak mówię Ten post edytował BigPig 20.08.2013, 11:12:31 |
|
|
20.08.2013, 11:39:15
Post
#10
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.08.2013 Ostrzeżenie: (0%) |
rozumiem te różnice. Rzeczywiście z użyciem GET w pasku adresu jest permanentna komenda "akcja losuj" czy coś takiego. Ale niestety kiedy używam POST i odświeżam, pierwej wyskakuje mi komunikat: "Aby wyświetlić tę stronę, Firefox musi ponownie przesłać dane....itd itd", no i po kliknięciu "prześlij ponownie" następuje odświeżenie i losowanie kolejnego cytatu. Sam baton działa poprawnie i losuje za każdym kliknięciem.
Jest to rzecz kosmetyczna i nie chcę robić rabanu z tak błahego powodu. |
|
|
20.08.2013, 11:52:01
Post
#11
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 9 Dołączył: 18.06.2013 Skąd: Białystok Ostrzeżenie: (0%) |
Ten motyw z ponownym przesłaniem formularzu to standard. Tak powinno być, przeglądarka pyta się czy zachować się tak jakby jeszcze raz przesłać formularz, czy nie. Jesli wciśniesz to tak jakbyś ponownie wcisnął button. Wszystko jest ok.
|
|
|
20.08.2013, 11:55:56
Post
#12
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.08.2013 Ostrzeżenie: (0%) |
dzięki za pomoc...no i za cierpliwość
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 09:34 |