Multiple select mező értéke nem lesz tömb PHP-ben
Sziasztok, eddig bírtam idegekkel. Egy könyv alapján próbálom működésbe hozni az űrlapomat. A textek mennek is, de a listát képtelen vagyok megoldani.2 file-ból szkript-tel dolgozom. Az első az űrlap, az működik is:ez pedig a 9.5.szkript.php tartalma:A böngészőmbe pedig a foreach tartalmával van baja. Pontosan:Warning: Invalid argument supplied for foreach() in H:\www\urlap\9.5.szkript.php
Valaki mentsen meg! Köszi
Nem tudom, hogy mennyire lehet köze a dologhoz, de van egy 3. szkript is, amibe szerepel az $ertek, ami ott van a foreach-ba is, bár próbáltam más néven, de úgy se megy:Futtatva:
Szóval nem igazán vágom, hogy mi lehet.
■ <body>
<form action="9.5.szkript.php" method="POST">
Név:<br>
<input type="text" name="felhasznalo">
<br>
Cím:<br>
<textarea name="cim" rows="5" cols="40"></textarea>
<br>
Választott városok:<br>
<select name="varosok" multiple>
<option>Budapest</option>
<option>Tatabánya</option>
<option>Tab</option>
<option>Vác</option>
<option>Sárbogárd</option>
<option>Sopron</option>
</select>
<br><br>
<input type="submit" value="Gyerünk">
</form>
</body>
<?php
print "Udvozollek, <b>$_POST[felhasznalo]</b>!<p>\n\n";
print "A cimed:<p>\n\n<b>$_POST[cim]</b><p>\n\n";
print "Az altalad valasztott varosok:<p>\n\n";
if (! empty($_POST[varosok])) {
print "<ul>\n\n";
foreach ($_POST[varosok] as $ertek)
{
print "<li>$ertek<br>\n";}
print "</ul>";}
?>
Valaki mentsen meg! Köszi
Nem tudom, hogy mennyire lehet köze a dologhoz, de van egy 3. szkript is, amibe szerepel az $ertek, ami ott van a foreach-ba is, bár próbáltam más néven, de úgy se megy:
<?php
$felhasznalo1 = "halado";
foreach ($GLOBALS as $kulcs=>$ertek) {
print "\$GLOBALS [\"$kulcs\"] == $ertek<br>";
}
?>
$GLOBALS ["HTTP_POST_VARS"] == Array
$GLOBALS ["_POST"] == Array
$GLOBALS ["HTTP_GET_VARS"] == Array
$GLOBALS ["_GET"] == Array
$GLOBALS ["HTTP_COOKIE_VARS"] == Array
$GLOBALS ["_COOKIE"] == Array
$GLOBALS ["HTTP_SERVER_VARS"] == Array
$GLOBALS ["_SERVER"] == Array
$GLOBALS ["HTTP_ENV_VARS"] == Array
$GLOBALS ["_ENV"] == Array
$GLOBALS ["HTTP_POST_FILES"] == Array
$GLOBALS ["_FILES"] == Array
$GLOBALS ["_REQUEST"] == Array
$GLOBALS ["GLOBALS"] == Array
$GLOBALS ["felhasznalo1"] == halado
$GLOBALS ["kulcs"] == felhasznalo1
$GLOBALS ["ertek"] == felhasznalo1
$GLOBALS ["_POST"] == Array
$GLOBALS ["HTTP_GET_VARS"] == Array
$GLOBALS ["_GET"] == Array
$GLOBALS ["HTTP_COOKIE_VARS"] == Array
$GLOBALS ["_COOKIE"] == Array
$GLOBALS ["HTTP_SERVER_VARS"] == Array
$GLOBALS ["_SERVER"] == Array
$GLOBALS ["HTTP_ENV_VARS"] == Array
$GLOBALS ["_ENV"] == Array
$GLOBALS ["HTTP_POST_FILES"] == Array
$GLOBALS ["_FILES"] == Array
$GLOBALS ["_REQUEST"] == Array
$GLOBALS ["GLOBALS"] == Array
$GLOBALS ["felhasznalo1"] == halado
$GLOBALS ["kulcs"] == felhasznalo1
$GLOBALS ["ertek"] == felhasznalo1
Szóval nem igazán vágom, hogy mi lehet.
select tömb
<select name="varosok" multiple>
Ezt így kellene:
<select name="varosok[]" multiple="multiple">
...szerintem. A lényeges hiba a name= paraméternél leledzik.
De lehet, hogy van még benne más turpisság is, még nem néztem végig.
Üdv: Thom
multiple
Megoldódott
html
Nem a sor vegere kell tenni ahol helyet akarsz kihagyni, hanem kozre kell vele fogni a bekezdest!
<p>Habla habal</p>
A form cimkeire hasznald a Label tag-et!
A PHP-ben a tagado ! es a valtozo koze ne tegyel space-t. Az option mezoknek legyen value erteke.
Multiple select PHP példa
re:html
<p>Habla habal</p>
ha HTML es enm XHTML, elegendo a
miert?
HTML ben ugyemlekszem ez sem kotelezo.
--
üdv: kmm...
<Nincs cím>
mire? Ennyi erővel már akkor még a html (40) szabványnak még így sem megfelelő
Amúgy (látszólag) kezdőknek nem a hozzád hasonló lények által lecsonkított nyelvet kell megtanítani, mert nem explorerre, hanem http böngészőre írjuk a weblapokat. [pl nekem tiltja a vallásom az ie-t :)]
html 4
a HTML4 ben nem kell lezarni minden tag-et.
nem csonkitom a nyelvet.
nem hasznalok ie-t, de az en vallasom nem tiltja. Ellenben ugy erzem utannajaras nelkul postolni nem csak illetlen, de buta szokas is.
a html nyelv sabajai nem az XML -re hanem az SGML -re alapulnak, amiben nem kotelezo lezarni mindent.
igy a html-ben sem
az alabbi kod a w3c validator szerint helyes HTML 401Transitional :
üdv: kmm...
html 4 doc
The P element defines a paragraph. The closing tag for P is optional, but its use prevents common browser bugs with style sheets. Note that P cannot contain block-level elements such as TABLE and ADDRESS.
Tehát nem ajánlott elhagyni. És megmagyaráznád ennek a kódrészletnek a jelentését így?
re: html doc
azaz a p le nem zarasa nem szabvanyos. Ez nem igaz. Lehet, hogy nem ajanlott le nem zarni, de nem hiba!
Es utanna azt irtad, hogy explorerre, es nem HTTP bongeszokre fejlesztek.
Ez erdekes. en HTML es XHTML bongeszokre fejlesztek.
jelenleg egy nagyvallalati rendszeren dolgozom, ami XHTML kodot ad ki magabol, de explorerben is mukodik. Miota idejottem a ceghez sok embert birtam ra a ff v az opera hasznalatara, egyikuk sem banta meg.
nem vitazni szeretnek, de nem erzem, hogy a kerdezot felrevezetnem azzal, ha azt mondom neki mit lehet szabvany szerint. persze celszeru lezarni, sot mondok 1et, lehet xhtml-t is hasznalni, sokkal konnyebb, logikusabb (csak ienek nem kell xhtml fejlec, mert nem szeresse ;o)).
csokolom :-)
reszemrol lezarva.
--
üdv: kmm...
...
Biztosan?
Íme egy példa arra, hogy a HTML nem igényli a p teg lezárását:
http://kgyt.hu/lista/gagyi.html (példa)
http://kgyt.hu/lista/gagyi-source.html (forrás)
Az oldal az általad beírt példát hozza alapul...
Az Internet Explorer, a Firefox, és az Opera egyformán külön bekezdésként kezeli a lezáratlan p tegeket, talán azért, mert ez a szabályos... ;-)
--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
html pongyola
Valoban a HTML van annyira pongyola, hogy nem koveteli meg az ajanlasban a P lezarasat. Ennek az az okda, hogy a P nem tartalmazhat mas blokk szintu elemet, igy minden blokk szintu elem ami utana kovetkezik implicit modon a P elem veget is jelenti.
Sajat tapasztalat, hogy bizonyos esetekben a le nem zart bekezdesnel elofordul, hogy mashogy szamolja a mrgokat es mas meretu helyet hagy ki a bongeszo.
Ettol fuggetlenul nem a lezarasra hivtam fel a kerdezo figyelmet, hanem arra, hogy a P nem egy sortores karakter hanem egy blokk szintu elem, ami az oldalon egy teglalap alaku teruletet jelent.
Tehat nem attol van 1 sor kihagyas, hogy ott egy P elem van, hanem a P elemnek margoja van.
Tehat nem:
szoveg
szoveg
(P elem ezert kihagyas)
szoveg
szoveg
Hanem:
[p]
szoveg
szoveg
[/p]
[p]
szoveg
szoveg
[/p]
Es a ketto kozott strukturailag nincs semmi! A hely a formazas miatt marad ki.
:-)
A jó dolgokat sem kalapáccsal kell elmagyarázni...
(Nem véletlen a gagyi elnevezés a fájl nevében :) )
--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
sztem, nem kell mindig magyar
mellesleg érdemes olyan fejlesztőeszközt használni amibe beépítik a W3 Tidy-t(automatikus html korrektor, képes xhtml-re is formázni a doksidat) ilyen pl. a free HTMLGate : http://www.mpsoftware.dk/htmlgate.php , nekem nagyon bejött