Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przypisanie zmiennej do wyboru z formularza
Forum PHP.pl > Forum > PHP
kubatur0
Witam, mam u siebie pole formularza radio ktore wybire 2 wartosci. Czy jest mozliwosc napisania funkcji if ktora bedzie zawierala te wybory ? np
if(value==a) {
bla bla bla el
else {
bla bla bla }}

questionmark.gif

Z gory dzieki za pomoc
mortus
Jest taka możliwość. Przykład:
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. if(!empty($_POST) && isset($_POST['yesorno'])) {
  5. if($_POST['yesorno'] == 'yes') {
  6. $answer = 'yes';
  7. } else {
  8. $answer = 'no';
  9. }
  10. }
  11. echo 'Current answer: ' , isset($answer) ? $answer : 'brak odpowiedzi';
  12. ?>
  13. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  14. <input type="radio" name="yesorno" value="yes" />Yes<br />
  15. <input type="radio" name="yesorno" value="no" />No<br />
  16. <input type="submit" name="submit" value="Wyślij" />
  17. </form>
kubatur0
No dobra to kumam. Troche zle skonstruowalem swoje pytanie. Chodzi mi dokladnie o wybor z radio i po wyborze zeby lista rozwijana sie zmienila odpowiednio. W radio wybieram plec M albo K. i po wyborze M zeby w tej liscie rozwijanej byly jedne wartosci a po wyborze K zeby byly tylko drugie wartosci.

Kod
<?php
if(!empty($_POST) && isset($_POST['plec'])) {
if($_POST['plec'] = M) {
$answer = M;
} else {
$answer = K;
}
} ?>
<?php
if($answer = M) {
echo" <tr><td>Konto dla:</td><td><select name=\"profesja\" style=\"background-color: black; color: white\">
        <option>1</option>
        <option>1</option>
        <option>1</option>
        <option>1</option>
        <option>1</option>
        </select></td></tr>";}
            else {
  echo "<tr><td>Konto dla:</td><td><select name=\"profesja\" style=\"background-color: black; color: white\">
        <option>2</option>
        <option>2</option>
        <option>2</option>
        <option>2</option>
        <option>2</option>
        </select></td></tr>";
      }
      
     ?>

Probuje z czyms takim ale nie dziala.... nie wiem jak to inaczej zrobic i co moze byc zle.
tehaha
nie czytałem Twojego kodu ale jeżeli chcesz żeby następna lista zmieniała się w zależności od wyboru radio to masz 2 możliwości:
- php - ale wtedy ta zmiana w liście jest możliwa dopiero po przeładowaniu strony
- javascript - zmiana bez przeładowania strony
kubatur0
Wolalbym bez przeladowania strony, czyli java. Ale nie mam pojecia jak to teraz zrobic...
mortus
Cytat(tehaha @ 10.04.2010, 10:53:59 ) *
nie czytałem Twojego kodu ale jeżeli chcesz żeby następna lista zmieniała się w zależności od wyboru radio to masz 2 możliwości:
- php - ale wtedy ta zmiana w liście jest możliwa dopiero po przeładowaniu strony
- javascript - zmiana bez przeładowania strony
@tehaha A co będzie, jeżeli użytkownik nie będzie miał włączonej obsługi JavaScript?
@kubatur0 Najlepiej zaimplementować najpierw rozwiązanie w PHP, a później zastanowić się nad wykorzystaniem JavaScript-u. Skoro nie wiesz, jak się za to zabrać, to poczytaj o podstawach. Do obsługi pola radio możesz użyć onclick np.
  1. <input type="radio" name="plec" value="kobieta" onclick="wypelnijSelecta(this);" />Kobieta<br/>
Do wstawienia różnych opcji możesz użyć atrybutu innerHTML (np. dla select'a o danym id, którego możesz pobrać za pomocą getElementById), konkretne opcje możesz wygenerować za pomocą pętli po tabeli określonych profesji. Możesz też wypróbować któryś z frameworków JavaScript np. jQuery (powinno to ułatwić pracę). Jeśli kompletnie nie wiesz, o czym piszę, to niestety musisz zacząć od jakiegoś kursu JS.
tehaha
tu masz działający przykład:

  1. <input type="radio" name="sex" value="M" onclick="java script:second_choice('M');" checked="checked"> M<br/>
  2. <input type="radio" name="sex" value="K" onclick="java script:second_choice('K');"> K<br/>
  3. <div id="choice_k" style="display:none;">
  4. <option>K choice</option>
  5. <option>K choice</option>
  6. <option>K choice</option>
  7. <option>K choice</option>
  8. <option>K choice</option>
  9. </select>
  10. </div>
  11. <div id="choice_m" >
  12. <option>M choice</option>
  13. <option>M choice</option>
  14. <option>M choice</option>
  15. <option>M choice</option>
  16. <option>M choice</option>
  17. </select>
  18. </div>
  19. <script type="text/javascript">
  20. function second_choice(type)
  21. {
  22. var choice_k = document.getElementById('choice_k');
  23. var choice_m = document.getElementById('choice_m');
  24.  
  25. switch(type)
  26. {
  27. case 'M':
  28.  
  29. choice_k.style.display = 'none';
  30. choice_m.style.display = 'block';
  31.  
  32. break;
  33.  
  34. case 'K':
  35.  
  36. choice_k.style.display = 'block';
  37. choice_m.style.display = 'none';
  38.  
  39. break;
  40. }
  41. }


ale jeżeli będziesz to używał tylko to płci to lepiej zamień switch na else if

@mortus oczywiście masz racje z tym, że trzeba uwzględnić czy użytkownik ma obsługę javascript, ale trzeba też się zastanowić czy jest to jakiś krytyczny punkt strony, bo jeżeli to ma być tylko zmiana między: nauczyciel a nauczycielka to chyba żadna strata jeżeli ktoś nie ma javascript
kubatur0
rozumiem ze po wykorzostaniu tego skryptu strona bedzie sie przeladowywala a wlasnie tego nie chce... ma ktos moze gotowy skrypt czegos takiego ?
mortus
Cytat(kubatur0 @ 10.04.2010, 15:45:39 ) *
rozumiem ze po wykorzostaniu tego skryptu strona bedzie sie przeladowywala a wlasnie tego nie chce... ma ktos moze gotowy skrypt czegos takiego ?

Hmm... Nie strona nie będzie się przeładowywać, jeśli użyjesz rozwiązania tehaha. Jeżeli Ci się przeładowuje, to pewnie coś zrobiłeś źle.
tehaha
@kubatur0 wklej to po prostu do edytora zapisz jako html i zobacz jak działa....nie wiem co tu jest niejasne, jeżeli chociaż trochę znasz php i html/css to powinno być dość oczywiste jak to działa
kubatur0
O jaaaa dziala ... Dzieki stary smile.gif
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.