ugrás a tartalomhoz

Hol a hiba a kódban?

mazsi · 2005. Május. 9. (H), 00.19
Sziasztok adott egy <FORM> <INPUT> al és <CHECKBOX> al.

Ime:

79: <form action="etlap.php" method="get">név:
<input name="nev">
<input type="checkbox" name="menu[]" value="I. Menü"> I. Menü
<input type="checkbox" name="menu[]" value="II. Menü">II. Menü
<input type="checkbox" name="menu[]" value="III. Menü">III. Menü<BR><BR><input type="submit" value="küldés"></form>

A következő PHP-t írtam hozzá: (Életem első önnálló PHP próbálkozása)

80: <?php
81: echo "<ol><li>";
82: echo "$nev";
83: $adat= array ($menu);
84: foreach ($adat as $kiir)
85: {
86: echo "\t\t $kiir";
87: }
88: echo "</li></ol>";?>

A következő értéket kapom vissza:

1. Név Array

1. Kérdés?: Miért nem írja ki az értéket? Úgy tudom a checkbox value értékét kéne kiírnia (I. Menü stb..)

2. Úgy szeretném megcsinálni, hogy ha valaki beírja a nevét, és hogy melyik menüt választja akkor az nem tünik el hanem látható lesz, és a jelentkezők nevéből egy számozott lista íródik.
Sejtem hogy úgy kellhogy egy harmadik változóban eltárolom az értéket és az új adatok mindíg hozzáadódnak,és azt íratom ki. De pontosan hogy lehet megcsinálni?

Itt tudjátok megnézni hogy hogyan (nem)működik... http://www.woodtiger.atw.hu/etlap.php

Köszi a segítséget!
 
1

Itt

PiG · 2005. Május. 9. (H), 00.34
83: $adat= array ($menu);
84: foreach ($adat as $kiir)

helyett:
83: <------ ezt a sort nyugodtan húzd ki
84: foreach ($menu as $kiir)

Hogy ne "tűnjön el" a jelentkező, ahhoz valamilyen formában el is kell tárolni az értékeket: szövegfájlban vagy adatbázisban, majd onnan visszaolvasva kiírni.

Én mondjuk nem checkboxokkal oldanám meg, hanem rádiógombokkal - gondolom egy ember csak egy menüt választ. De lehet, hogy tévedek...

P][G
2

Ha kihúzom, akkor ezt a

mazsi · 2005. Május. 9. (H), 01.05
Ha kihúzom, akkor ezt a hibaüzenetet kapom:
Warning: Invalid argument supplied for foreach() in /etlap.php on line 83
A fenti 84. sor lett a 83. természetesen, mivel egy sort kihúztam.

Először így írtam meg, a hibaüzenet miatt változtattam rajta...
3

mukodik az.... sajnos ::)

ashnur · 2005. Május. 9. (H), 05.44
humm. mazsi... de ismeros egy nick.... nah mind1.
lenyeg az, hogy mukodik az lazan, csak amikor eloszor mesz az oldalra akkor semmi $_GET nincs, ezert hat nincs array sem amin a forech vegigfuthatna es ezert a hibauzenet. :)

esetleg kiprobalhatod, hogy:

<?php
83: foreach ($adat as $kiir)
84: {
85: echo "\t\t $kiir";
86: }
?>
helyett ezt irod:

<?php
if(isset($adat)&&is_array($adat))foreach ($adat as $kiir)echo "\t\t".$kiir;
?>
:))


mellesleg a register globals = on egy rossz dolog, valoban radiobuttont, vagy select/optiont kero helyzetnek tunik az egesz, es en a helyedben eloszor a html-t tanulnam meg nem a php-t.
6

Rádio buttont azért nem

mazsi · 2005. Május. 9. (H), 09.26
Rádio buttont azért nem akarok, mert így egyszerre töb lehetőséget is lehet választani. Tavalyi bulin is volt rá példa...
4

$_GET

Török Gábor · 2005. Május. 9. (H), 05.47
Az űrlapról érkező adatokat a $_GET tömbben fogod elérni, tehát:

<?php
echo "<ol><li>";
if (!empty($_GET['nev'])) {
    echo $_GET['nev'];
}
if (!empty($_GET['menu'])) {
    foreach ($_GET['menu'] as $kiir) {
        echo "\t\t $kiir";
    }
}
echo "</li></ol>";
?>
--
slink
http://20y.hu/
5

Koránkelők

PiG · 2005. Május. 9. (H), 08.30
ashnur, slink, ti aztán korán keltek!

P][G
7

Ez a jó megoldás,

mazsi · 2005. Május. 9. (H), 09.30
Ez a jó megoldás, köszi!
A 2. kérdésre tudtok valami megoldást?
Tehát ha valaki 2.-nak 3.-nak írja be magát az előtte lévők is megjelenjenek a listában, és ne írja felül őket...
8

Adatok tárolása a megoldás

Török Gábor · 2005. Május. 9. (H), 09.37
PiG már válaszolt erre:

Hogy ne "tűnjön el" a jelentkező, ahhoz valamilyen formában el is kell tárolni az értékeket: szövegfájlban vagy adatbázisban, majd onnan visszaolvasva kiírni.


Egy űrlap postázásakor az értékek átkerülnek az őt feldolgozó kódnak (jelen esetben ugyanaz az oldal), de amennyiben nem tárolod el őket adatbázisban (akár egyszerú szöveges állomány is lehet), akkor elvesznek. Tehát az űrlap postázásakor szükséges egy olyan kód részletet megírnod, ami a kapott adatokat eltárolja, kiíratásnál pedig nem az űrlapról érkező adatokkal kell törődnöd, hanem az adatbázisból kell visszaolvasni az összes korábban elmentett rekordot.

--
slink
http://20y.hu/