ugrás a tartalomhoz

Form feldolgozás php fájlon belül

bvc · 2010. Júl. 18. (V), 20.13
Sziasztok!

Újra és újra előjön az a probélma, hogy egy PHP fájlon belül kellene mondjuk egy választólista kiválasztott elemének értékét átadnom egy PHP változónak.
Mondok példát:
Van egy formon belüli választólista, és a választott elemtől függően kellene a további form elemeknek vagy szövegeknek megjelenni, vagy éppen rejtve maradni. Vagyis tudnom kellene mit választottak ki elötte.
Megoldható külön fájl és Post nélkül?
Az is jó lenne, ha a javascript eseménykor át tudna adni egy változó értéket a PHP-nek. Na de hogyan? :)
Van erre valami megoldás?
 
1

ajax? :)

ironwill · 2010. Júl. 18. (V), 20.59
Erre találták ki az ajax-ot.. :)

Még könnyebb megoldás, ha nem a php-vel printelteted ki a listát, hanem kliens oldalon js-el generáltatod és a lista onchange eseményére kötöd a többi lista generálását.
2

re: ironwill

bvc · 2010. Júl. 18. (V), 21.50
Minden megoldható, ezt én is tudom. Csak a legfőbb kérdés, itt is a hogyan... :)

Ebből kellene kiindulni, leegyszerűsítve, nos ebbe hogyan keverhető bele a javascript?
  1. ...  
  2. <form>  
  3. <select id="akarmi" name="akarmi">  
  4. <?php  
  5.    while ($row = mysql_fetch_array($result)) { ?>  
  6.           <option value=<?php echo "{$row['ID']}>{$row['Nev']}"?></option>  
  7.    <?php } ?>    
  8. </select>   
  9. </form>        
  10. <?php  
  11. //ha a választott érték(ID) 1, akkor:  
  12. echo "1";  
  13. // ha a választott érték(ID) 2, akkor:  
  14. echo "2";    
  15. ?>  
  16. ...  
3

Ezen az elven sehogy.

Schmidi · 2010. Júl. 18. (V), 23.39
Ebben a formában sehogy.

A PHP feldolgozása szerver oldalon, egyszerre fut le. Miután lefutott, utána kapja meg a böngésző az előállított HTML forrást, így a későbbi felhasználói cselekvés, pl. select lista kiválasztás ezt már nem tudja befolyásolni.

1. megoldás:
Azt tudod megcsinálni, hogy az első elemet előállítod PHP-ból, a további elemeket pedig a kliens oldalán valamilyen JavaScript megoldással. Ha egyszerűbb adatokról van szó, pl. egy dátumválasztó vagy ilyesmi mezőről, akkor simán JavaScriptből belegenerálhatod. Ha olyan adatokról van szó, amiket a szerveren tárolsz, adatbázis hozzáférés kell hozzá, stb. akkor szükséged lesz egy AJAX-os hívásra, és a szerver oldalon egy olyan különálló PHP megoldásra, ami csak ezt a speciális kérést szolgálja ki.

2. megoldás:
A select elem kiválasztásakor a "félig kitöltött" űrlapot elküldöd (szintén JavaScript), és a feldolgozó PHP a kiválasztás alapján egy új űrlapot generál az első feltételtől függően, ezt jeleníted meg.

Az első megoldás szebb, a második talán kicsit egyszerűbb, ha még sosem foglalkoztál AJAX-szal. De ha van rá kapacitásod, akkor inkább az elsőnek járj utána.
4

re:

bvc · 2010. Júl. 19. (H), 20.56
Köszi, értem, elég bonyolult ez így, szerintem hagyjuk. Akkor inkább marad a POST, és az új feldolgozó fájl.