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?

...
<form>
<select id="akarmi" name="akarmi">
<?php
   while ($row = mysql_fetch_array($result)) { ?>
          <option value=<?php echo "{$row['ID']}>{$row['Nev']}"?></option>
   <?php } ?>  
</select> 
</form>      
<?php
//ha a választott érték(ID) 1, akkor:
echo "1";
// ha a választott érték(ID) 2, akkor:
echo "2";  
?>
...
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.