Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Formularz - lista rozwijana, Jak pozbyć się przycisku
-mantis-
post 19.03.2006, 22:54:42
Post #1





Goście







Witam. Mówię z góry że to są moje początki z php i ograniczam się raczej do przeróbek skryptów i dostosowaniem niż wymyślaniem od podstaw. Oto problem.

Kiedyś miałem taki skrypt w JavaScript



Kod
<script LANGUAGE="JavaScript">
function selecturl(s) {
   var gourl = s.options[s.selectedIndex].value;   window.ramka.location.href = gourl;
}
</SCRIPT>

<iframe src="pogoda/tor_25_02_2006/tor.php" frameborder="0" width="420" height="320" scrolling="no" name="ramka"></iframe>

<FORM><B>Archiwalne stany toru.</B><BR><BR>

<SELECT NAME="urljump" OnChange="selecturl(this)">
<OPTION>&nbsp;Wybierz datę&nbsp;</OPTION>
<OPTION VALUE="pogoda/tor_25_02_2006/tor.php">&nbsp;25.02.2006&nbsp;</OPTION>  
<OPTION VALUE="pogoda/tor_2-3_04_2005/tor.php">&nbsp;2-3.04.2005&nbsp;</OPTION>
</SELECT>
</FORM>



Skrypt ładował do IFRAME stronkę którą była wybrana z listy rozwijanej.

Teraz postanowiłem to samo zrobić z php ale żeby ładował includem więc przerobiłem pewien skrypt i zrobiłem coś takiego.


  1.  
  2. <?php 
  3.  
  4. switch ($_GET['galeria']) 
  5. { 
  6. case '': 
  7. include "galerie/gal10/gal10.php"; 
  8. break; 
  9.  
  10. case 'gal10': 
  11. include "galerie/gal10/gal10.php"; 
  12. break; 
  13.  
  14.  . 
  15.  . 
  16.  . 
  17.  . 
  18.  
  19.  case 'gal2': 
  20. include "galerie/gal2/gal2.php"; 
  21. break; 
  22.  
  23. case 'gal1': 
  24. include "galerie/gal1/gal1.php"; 
  25. break; 
  26.  
  27. }?> 
  28.  
  29. <FORM ACTION="zdjecia.php" METHOD="GET"> 
  30. <SELECT NAME="galeria" SIZE="1"> 
  31.  <OPTION VALUE="">&nbsp;Zmień Galerię&nbsp;</OPTION> 
  32.  
  33. <OPTION VALUE="gal10">pozycja10</OPTION> 
  34.  
  35.  . 
  36.  . 
  37.  .
  38.  . 
  39.  
  40. <OPTION VALUE="gal2pozycja2</OPTION> 
  41. <OPTION VALUE="gal1pozycja1</OPTION> 
  42. </SELECT> 
  43. <INPUT TYPE="SUBMIT" VALUE="Zmień"> 
  44. </FORM> 




Wszystko działa OK ale jest jedno ale. Muszę naciskać przycisk. Czy jest możliwość wysłania danych bez przycisku tak jak w pierwszym skrypcie? Poprostu zaznaczam i po kliknięci na liście już jest.

Czy można to uprościć? Sporo tych Case'ów a czym galerii będzie więcej tym więcej ich będzie (pierwczy pusty dodałem żeby była jakaś wartość początkowa i od razu żeby się coś ładowało domyślnie)


P.S. A tak na marginesie jak ktoś biegły w CSSie to czy można w takim formularzu zmienić wygląd listy? Chodzi mi konkretnie o wygląd rozwijanej listy i strzałeczkę która służy do tego (kolortyka XPkowa mi się gryzie ze stronką). Bo same pozycje to wiem i przycisk też się da (dodając styl w input lub opyion). Niestety jesli dodam w select jakiś styl to się nic nie zmienia.

Będę wdzęczny za odpowiedź

Normalnie jestem zachwycony php a includ'y mi rozwiąują wiele rzeczy (np jeden plik menu dołączany do każdej podstrony, podobnie nagłowek czy stopka ). A kiedyś był tylko HTML+CSS i skrypty.
Go to the top of the page
+Quote Post
wrzasq
post 20.03.2006, 16:16:13
Post #2





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


wlasnie do tego automatycznego przesylania sluzyl kod JavaScript, ktory usunales. aczkolwiek sadze, ze wystarczy wstawic onchange="this.submit;".

a co do pozbywania sie case'ow i switcha, to coz, wystarczy popatrzec na to i od razu widac, takze jesli nie potrafisz zauwazyc prostych zaleznosci, to niestety nie zadobrze bedziesz sobie radzil, a "przerabianie, zamiast tworzenia", to "plagiat, zamiast programowania", wiec lepiej po prostu zacznij sie zastanawiac nad tym, co robisz, zamiast bezmyslnie kopiowac kod z jednego miejsca na drugie.

podpowiem, ze nazwe dolaczanego pliku mozna zapisac po porstu jako:

  1. <?php
  2. include('galerie/' . $_GET['galeria'] . '/' . $_GET['galeria'] . '.php');
  3. ?>


a wiec nie potrzeba zadnego switcha, ale musisz wtedy pamietac o bezpieczenstwie (przesylanie wartosci, ktorych nie wyswietlasz normalnie w formularzu).

Ten post edytował wrzasq 20.03.2006, 16:20:12


--------------------
Go to the top of the page
+Quote Post
-Guest-
post 20.03.2006, 22:45:39
Post #3





Goście







Cytat
wlasnie do tego automatycznego przesylania sluzyl kod JavaScript, ktory usunales.


Usunąłem bo wrzucał w ramkę a nie chcę ramek.

Cytat
aczkolwiek sadze, ze wystarczy wstawic onchange="this.submit;".


Nie działa

Cytat
wystarczy popatrzec na to i od razu widac, takze jesli nie potrafisz zauwazyc prostych zaleznosci, to niestety nie zadobrze bedziesz sobie radzil,


Gdybym widział to bym nie pytał

Cytat
"przerabianie, zamiast tworzenia",


Tak się człowiek uczy użytecznych rzeczy, poza tym php jest podobny do C++ którego MUSIAŁEM się uczyć kiedyś ale tego nie lubiłem (ma trochę inne zapisy) . Poza tym po co wyważać otwarte drzwi.

Cytat
"plagiat, zamiast programowania",


Plagiat jest gdy przepisujesz kropka w kropkę a nie gdy coś przerabiasz. Jest to już coś nowego.

Cytat
zacznij sie zastanawiac nad tym, co robisz, zamiast bezmyslnie kopiowac kod z jednego miejsca na drugie.


Myślałem ale jeśli czegoś się nie lubi to choćby się myślało 1000 dni to się nie wymyśli. Niestety nie lubię programowania (jakby tak bylo byłbym programistą) wolę design czyli grafika + html. php ułatwia sprawę i niektórych rzeczy nie da się inaczej obejść. Może kiedyś polubię programowanie ale nienawidzę jak błąd tkwi 30 lini wyżej i nie wiadomo gdzie bo i tak coś nie działa. W grafice i HTML jak się coś skopie to od razu widać że coś krzywo czy się nie wyświetla itp.

No ale ok mniejsza z tym DZIKI WIELKIE za to spojrzenie, nie wpadłbym że można wykożystać konkatenację (choć kiedyś używałem tego do innych skryptów z hasłem czy mailem.) Jednak skrypt ma wadę bo nie reaguje na wartość domyślną. Ale wymyśliłem to smile.gif

  1. <?php
  2. if ($_GET['galeria'] == '') {
  3. include "galerie/gal10/gal10.php"; 
  4. }
  5. else {
  6. include('galerie/' . $_GET['galeria'] . '/' . $_GET['galeria'] . '.php');
  7. }
  8. ?>



Po czym stwierdziłem że uproszczę jeszcze i ostatecznie mam to:

  1. <?php
  2. if ($_GET['galeria'] == '') 
  3. $_GET['galeria'] = 'gal10';
  4. include('galerie/' . $_GET['galeria'] . '/' . $_GET['galeria'] . '.php');
  5. ?>



Jak widzisz myślę choć nie wiem czy wszystko jest poprawnie ale działa.

Cytat
ale musisz wtedy pamietac o bezpieczenstwie (przesylanie wartosci, ktorych nie wyswietlasz normalnie w formularzu).


Tak wiem oryginalnie w skrypcie było POST ale zmieniłem na GET bo wtedy widać w adresie przesyłane zmienne a więc można zapisać stronę w ulubionych z prametrami (np link do konkretnej galerii)

P.S. Dzięki za szybką odpowiedź i czkem na pomysły z przyciskiem. (Chyba że sam coś wymyślę bo pokombinuję.)
Go to the top of the page
+Quote Post
-Mantis-
post 20.03.2006, 22:51:07
Post #4





Goście







Sorka za błędy. Nie jestem dysortografem (chyba) ale poprostu zbyt szybko naciskam "Wyślij" rolleyes.gif
Go to the top of the page
+Quote Post
-Mantis-
post 20.03.2006, 23:02:19
Post #5





Goście







No to sobie sam poradziłem w sumie coś tam mi podpowiedziałeś ale nie do konca było OK. Metoda prób i błędów wstawiłem coś takiego

Kod
<select OnChange="submit(this)">


i działa.

Dzięki za naprowadzenie i chyba EOT jak dla mnie sprawa rozwiązana rolleyes.gif
Go to the top of the page
+Quote Post
bigZbig
post 21.03.2006, 00:07:54
Post #6





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Mała uwaga

W petli switch akcje domyslna lepiej wykonac przy pomocy default zamiast case ''

  1. <?php 
  2. switch ($_GET['galeria']) 
  3. { 
  4.  
  5. case 'gal2': 
  6. include "galerie/gal2/gal2.php"; 
  7. break; 
  8.  
  9. case 'gal1': 
  10. include "galerie/gal1/gal1.php"; 
  11. break; 
  12.  
  13. case 'gal10':
  14. default: 
  15. include "galerie/gal10/gal10.php"; 
  16. break; 
  17.  
  18. }?>


Co do przerabiania - to jesli autor nie ma nic przeciwko temu - to ja nie widzie w tym nic zdroznego. Inna rzecz, ze jak napiszesz cos sam od poczatku do konca to sie wiecej nauczysz.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
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 Wersja Lo-Fi Aktualny czas: 27.04.2025 - 07:41