(HTML, PHP) Hogy lehet megcsinálni hogy a választólista értéke a frsissites utan is megmaradjon?
<form method="GET" action="">
<select name="list">
<option value="Kolbász">Kolbász</option>
<option value="Hurka"></option>
</select>
<input type="submit" value="send" name="send">
</form>
if(isset($_GET['send'])) {
$list = $_GET['list'];
echo $list;
}
Eddig azt csinalja ha megnyomom a gombot, ugye kiirja a $list-et, De a valaszto listaban eltunik melyiket valasztottam, szoval visszaugrik az első option-ra, Azt hogy lehet hogy ne tunjenek el frissites utan(Submit,és utanna ha lefrissitem az oldalt, akkor ugyis megmaradjon az érték)
<option value="Kolbász" selected>Kolbász</option>
A "trükk" az, hogy a "selected" attribútumot ahhoz az option taghez adod hozzá, amelyiknek az értéke megegyezik a felhasználó által elküldöttel.
Ez persze nem 100%-os megoldás. A komolyabb verzióhoz már session kezelése is szükséges (így tárolhatod a user által kiválasztott értéket).
Bár kezdőként még az ilyen egyszerű feladatok is bonyodalmat okozhatnak, hadd javasoljam, hogy majd ha már kissé magabiztosabban megy a dolog, ásd bele magad az MVC (Model-View-Controller) nevű design patternbe, mert nagyon sokat javíthat a munkád minőségén és a dolgodat is meg tudja könnyíteni számos esetben.
de a sessionös megoldásnál vigyázni kell, nagyon tudom utálni mikor nincs egy alapállapot gomb, és visszával sem tűnik el...
ha nem sessionnel csinálod, és hosszabb a selected, szerintem tedd egy tömbbe a valuekat, foreachel kiteszed, és ellenőrzöd vane és az-e a get['list'], ha igen akkor selected
Igy gondoltad?
<?php
$lehetosegek = array(
1 => 'Akciós',
2 => 'Nem akciós',
'' => 'Mindkettő'
);
$selected = isset($_GET['akcio']) ? $_GET['akcio']:'';
?>
<select name="akcio">
<?php foreach($lehetosegek as $value => $label): ?>
<option value="<?= $value ?>"<?= $value == $selected?' selected':'' ?>>
<?= $label ?>
</option>
<?php endforeach; ?>
</select>
De ez valamiert nem joo:/ nem tudja valaki hogy mi a hiba?
A select listtába "->" látszanak, és nem a value
#8: Ha nem tudod, az elég nagy baj, ha csak szőrszálhasogatnál, annak meg nincs sok teteje.
Nos, úgy, mint bármelyik másik esetben: az eltérő problémákat különválasztod és külön is kezeled. A kód átláthatóbb, a hibák kisebb eséllyel tudnak elbújni, a problémák megoldásai is kézenfekvőbbek, mindenki happy.
Nem szeretnék most idelapátolni egy komplett megoldást, mert a poszt amúgy sem erről szólt.
Úgyszintén, pontosan azért fogalmaztam a tanácsomat úgy, ahogy, mert kezdők számára az MVC pattern komplexnek, nehezen érthetőnek tűnhet. Millió és millió karakterben ki lehetne fejteni a dolog előnyeit, hátrányait, bemutatni egy megoldást erre a feladatra, elmagyarázni a koncepciókat, stbstbstb. Ennek azonban nem itt van a helye; no meg már számtalanszor megtették helyettem mások.
Basically, a view a megjelenítés mikéntjéért felelős, a modell az adatokért és a hozzájuk szorosan kapcsolódó üzleti logikáért, a kontroller pedig e kettő együttműködésének koordinálásáért, kikötve, hogy mindenki csak a saját háza táján söpröget (pl. kontrollerben, modellben HTML kódnak helye nincs, ahogyan view -ban SQL query -nek, vagy adatfeldoglozásnak sincs)
MVC (and SoC in general) virtually applies everywhere. Higgy nekem, elég régóta tolom már a talicskát, hogy tudjam.
...és hogy a kedves kérdező is kapjon választ:
A "<?=" nem működik nálad, mert nincs engedélyezve a short delimiter ("<? ... ?>").
Vagy engedélyezd, vagy cseréld ki explicit echo -kra vagy printekre valahogy így:
<?= $value ?>
helyett
<?php echo $value; ?>
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!