Šta je novo?

Advanced HTML forme

skydiver021

Slavan
Učlanjen(a)
26.11.2004
Poruke
863
Poena
320
Potrebni mi je da iz drop down menija upišem u bazu i label i value.

<option value="vrednost">labela</option>

Znači i vrednost i labelu pomoću php-a u mysql. Da li je to uopšte moguće?
 
Moguće je , samo što se label ne prosleđuje kroz form. Dakle moraš nekako drugačije da ga pošalješ, npr. kao hidden field. Mada u skripti kojom obrađuješ formular trebalo bi već da znaš koji label očekuješ gde ...
 
Poslednja izmena:
Ne moze da se doda hidden tip polja pre vrednosti <option> jer to nije dozvoljeno.

Najgluplji moguci nacin da to uradis je da formu napravis ovako:

HTML:
<form name="forma" method="post"><label>
  <select name="dropmeni" id="dropmeni">
    <option value="label1_nekiID1">label1</option>
    <option value="label2_nekiID2">label2</option>
  </select>
</label><input type="submit" name="submit" value="submit" /></form>

i da u PHP-u, kad prihvatis tu vrednost preko POST/GET uradis explode() i posle to uneses u bazu.

Ili... da napravis array u kojem ce biti labeli i onda na osnovu ID-a koji dobijes iz forme da izaberes i uneses u bazu.
 
Poslednja izmena:
Šta, bre, nije dozvoljeno? Ja govorim o ovome:

PHP:
<input type="hidden" name="hiddenField" id="hiddenField" value="labela_neka" />
 
kUdtiHaEX ovo sa explode ne radi prosleđuje samo jedan parametar. Ako si probao kod i radi molim te da ga napišeš ovde.
Ovo sa hidden poljem mi nije jasno ako može malo detaljnije. Kako iz drop down menija prebaciti i value i label u hidden polje?
 
Poslednja izmena:
Šta, bre, nije dozvoljeno? Ja govorim o ovome:

PHP:
<input type="hidden" name="hiddenField" id="hiddenField" value="labela_neka" />

A to ces da stavis gde? Ovako mozda?

HTML:
<body>
<form name="forma" method="post"><label>
  <select name="dropmeni" id="dropmeni">
    <input name="fild" type="hidden" value="vrednost" /><option value="item1">label1</option>
    <input name="fild" type="hidden" value="vrednost" /><option value="item2">label2</option>
  </select>
</label><input type="submit" name="submit" value="submit" /></form>
</body>

E ako to uradis ovako, tvoj drop nikada nece raditi. Uostalom probaj pa se uveri sam.

Sto se explode() tice, to se radi ovako...

Pocetni HTML kod:

HTML:
<form name="forma" method="post"><label>
  <select name="dropmeni" id="dropmeni">
    <option value="item1">label1</option>
    <option value="item2">label2</option>
  </select>
</label><input type="submit" name="submit" value="submit" /></form>

Kada se izabere prva opcija i pritisne "Submit", dobije se sledeci array:

PHP:
Array ( [dropmeni] => item1 [submit] => submit )

E sada, ako umesto "item1" stavimo "item1_label1":

HTML:
<form name="forma" method="post"><label>
  <select name="dropmeni" id="dropmeni">
    <option value="item1_label1">label1</option>
    <option value="item2_label2">label2</option>
  </select>
</label><input type="submit" name="submit" value="submit" /></form>

array koji onda dobijamo izgleda ovako:

PHP:
Array ( [dropmeni] => item1_label1 [submit] => submit )

Da bi to lepo ubacio u bazu, treba ti sledeci kod:

PHP:
<?php 
	if (isset($_POST['submit'])) {
		
		//kupimo vrednosti iz forme
		$value = $_POST['dropmeni'];
		
		//rasclanjujemo ID (item1) od labela (label1)
		$value2 = explode ("_", $value);
		
		$query = "INSERT INTO nesto (id, label) VALUES ('$value2[0]', '$value2[1]')";
		$result = mysql_query ($query) or die ('Error: ' .mysql_error());
	}

?>

Kada se uradi explode(), promenljiva $value2 je u stvari array od 2 itema:

PHP:
Array ( [0] => item1 [1] => label1 )

Da bi to ubacio u bazu, $value2[0] je prva vrednost u array-u a $value2[1] druga.

To je to :)
 
A to ces da stavis gde? Ovako mozda?

Ih bre kutija :p .... Naravno da NE tako.


Poenta je da se label ne može poslati kroz formular kao takav. Znači savet: bataliti taj pristup, i ako može skydiver021 objasni malo bolje zašto hoćeš da pošalješ i label?

Sad da li će da ga šalje kroz select option vrednost pa explode kao što ti kažeš, ili kroz hidden polje kao što sam ja rekao, ili na neki treći način, može da bira. Problem sa tvojim pristupom je slučaj kada label sadrži separator karakter. Mada kao što sam rekao, label je nešto što je statično - to korisnik ne menja (uglavnom), tako da ako u delu aplikacije gde obrađuje formular zna u koji field u DB treba da upiše vrednost onda valjda zna i šta je to, tj. logično je da zna i koji je label. Osim ako ne radi neku egzotiku, tipa rewrite-ovanje po DOM-u ali onda već treba da zna šta radi i zašto.

Znači skydiver021 najbolje napiši šta tačno hoćeš i zašto, uz uzimanje u obzir da select kontrola nije napravljena da šalje label kao takav?
 
Poslednja izmena:
Pa u principu postoji milion nacina da se to uradi... ali zavisi sta on u stvari zeli da uradi.

To moze da se uradi i tako sto ce da uhvati id iz drop menija i onda da ispita koja bi to label vrednost bila (kroz najprostiji case) i upise u bazu. Mada, obicno se lejbl i ne upisuje u bazu, upisuje se ID.
 
kUdtiHaEX hvala, to je i meni kasnije palo na pamet da u vrednost ubacim i labelu, možda si ti odmah na to mislio, a ja te nisam shvatio. Još jednom hvala.
 
Nazad
Vrh Dno