ugrás a tartalomhoz

Multiple select mező értéke nem lesz tömb PHP-ben

Anonymous · 2004. Nov. 29. (H), 19.25
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:
<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>
ez pedig a 9.5.szkript.php tartalma:
<?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>";}
?>
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:
<?php
$felhasznalo1 = "halado";
foreach ($GLOBALS as $kulcs=>$ertek) {
print "\$GLOBALS [\"$kulcs\"] == $ertek<br>";
}
?>
Futtatva:

$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

Szóval nem igazán vágom, hogy mi lehet.
 
1

select tömb

Anonymous · 2004. Nov. 29. (H), 20.35
Csak úgy ránézésre szúrtam ki:
<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
2

multiple

Anonymous · 2004. Nov. 30. (K), 14.19
Átírtam a multiple-t, úgy ahogy írtad, de sajnos nem volt elég az üdvösséghez. Itt van a feldolgozás eredményének a forrása:
<html>
<head>
<title>Urlap feldolgozasa</title>
</head>
<body>
Udvozollek, <b>david</b>!<p>

A cimed:<p>

<b>2030 Vác Tó u. 1.</b><p>

Az altalad valasztott varosok:<p>

<ul>

<br><br></body>
</html>
4

Megoldódott

Anonymous · 2004. Nov. 30. (K), 16.29
Köszönöm a segítséget, sikerült a végére járni a dolognak: a $varosok helyett is $_POST[varosok] -at írtam + volt egy apró html elírás.
3

html

Jano · 2004. Nov. 30. (K), 15.42
A P nem sortorest jelent hanem bekezdest! P = paragraph.

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
5

re:html

kmm · 2004. Nov. 30. (K), 17.00
Nem a sor vegere kell tenni ahol helyet akarsz kihagyni, hanem kozre kell vele fogni a bekezdest!

<p>Habla habal</p>

ha HTML es enm XHTML, elegendo a
<p>Habla habal
forma is.

A PHP-ben a tagado ! es a valtozo koze ne tegyel space-t.

miert?

Az option mezoknek legyen value erteke.

HTML ben ugyemlekszem ez sem kotelezo.

--
üdv: kmm...
6

<Nincs cím>

Anonymous · 2004. Nov. 30. (K), 19.07
ha HTML es enm XHTML, elegendo a
<p>Habla habal
forma is.


mire? Ennyi erővel már akkor még a html (40) szabványnak még így sem megfelelő
<html><head><title>
*
</title></head><body>
*
</body></html>
felépítés is fölösleges, hiszen elég, ha csak beírod a szöveget...

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 :)]
7

html 4

kmm · 2004. Nov. 30. (K), 20.00
mire? Ennyi erővel már akkor még a html (40) szabványnak még így sem megfelelő
<html><head><title>*</title></head><body>*</body></html>
felépítés is fölösleges, hiszen elég, ha csak beírod a szöveget...

a HTML4 ben nem kell lezarni minden tag-et.

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 :)]

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 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  <title>dss</title>
</head>
<body>
  asdfdsf
  <p>sdfdsf
</body>
</html>
--
üdv: kmm...
8

html 4 doc

Anonymous · 2004. Nov. 30. (K), 20.58
Azzal tisztában vagyok, hogy mi a különbség az xhtml és a html közt.

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?
<p id="xy">jihgids
<p id="xy2">sjhgjsdkfdpfkg
<p id="xy3">fldskgjlsfdjg
tehát a p az egy bekezdést jelöl. a bekezdésnek lenne eleje és vége is ... És akkor a xy-nak a kód végén van a vége? Vagy a xy2-nél? A p-t egymásba ágyazva értelmezze a böngésző, vagy ne? Stb.
9

re: html doc

kmm · 2004. Nov. 30. (K), 21.20
Tehat akkor azzal nem vagy tisztaban mit irtal az elobb :-)
a html (40) szabványnak még így sem megfelelő

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...
10

...

kgyt · 2004. Dec. 1. (Sze), 16.26
Azzal tisztában vagyok, hogy mi a különbség az xhtml és a html közt.

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
11

html pongyola

Jano · 2004. Dec. 1. (Sze), 18.11
A forrasbol jol lathato, hogy a kerdezo nem erti pontosan a HTML logikajat, a P elem mukodeset!

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.
12

:-)

kgyt · 2004. Dec. 3. (P), 23.36
Nem is a te hozzászólásod miatt írtam ide, hanem Anonymous erőszakossága miatt...
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
13

sztem, nem kell mindig magyar

toxin · 2004. Dec. 4. (Szo), 11.35
sztem, nem kell mindig magyarázkodni: beraksz egy linket a megfelelő oldalra jelen esetben pl.:http://htmlinfo.polyhistor.hu/html_ref/blocklevel.htm#P

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