Forma za masovno unosenje podataka !

Forma za masovno unosenje podataka !

offline
  • Pridružio: 13 Mar 2009
  • Poruke: 229

Pozdrav svima
Nasao sam na netu jednu formu koja se sastoji od jedne labele i dugmeta (javascript) na ciji klik mozemo da kreiramo proizvoljan broj labela koje mogu da posluze za unos nekih podataka u bazu. Evo da bude jasnije ova forma izgleda ovako:

<html> <head> <SCRIPT type="text/vbscript" src="snow.js"> </SCRIPT> <style> body{ font-size:small; font-family:Arial; } form {background:#f8f8f8; padding:15px; border:1px silver solid; width:450px; } </style> </head> <body> <h1>Create new poll</h1> <form id="myform" name="myform" method="post"> <label for="poll_question">Klikom na dugme kreira se nova labela</label> <ul id="options"> <li><label for="poll_option1">Option1:</label><input type="text" size="20" id="poll_option1" name="poll_option1"/><input type="button" value="Kreiraj novu labelu" id="add_option" name="add_option"/></li> </ul> <input type="hidden" name="method" value="post" /> <input type="submit" value="Create!" id="create_poll" name="create_poll"/><br /><br /> </form> <script type="text/javascript"> function add_new_option() { var form = document.getElementById("options"); var new_number = form.childElementCount+1; var new_id="poll_option"+new_number;   var poll_label = document.createElement("label"); poll_label.htmlFor=new_id; var p_label_text="Option"+new_number+":"; poll_label.appendChild(document.createTextNode(p_label_text));   var new_option = document.createElement("input"); new_option.type = "text"; new_option.id = new_id; new_option.name = new_id;   var html_li = document.createElement("li"); html_li.appendChild(poll_label); html_li.appendChild(new_option); form.appendChild(html_li); } if (document.getElementById) { window.onload = myUnobtrusiveBehavior; }   function myUnobtrusiveBehavior() { document.getElementById("add_option").onclick=function() {add_new_option();} } </script> </html> </body>

Mene zanima sledece: Ako u bazi na primer imam tabelu koja ima 2 polja id i naziv i ako kreiram 10 labela za unos kako da ih upisem sve od jednom. Ne znam da li sam bio jasan, znaci kliknem 10 puta dodaj novu labelu, upisem u tih 10 labela neke nazive i zelim od jednom da ih smestim u tabelu. Ja imam neku ideju u smislu da prebrojim koliko je labela kreirano a u for petlji napravim isto toliko prolaza i u svakom prolazu vrsim INSERT id i naziv u tabelu, al ne znam kako bi izvukao broj kreiranih labela.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Cekaj ti kada napravis label koje se njemu podrazumevano ime generise?
label-1, label-2?
Jedio resenje sto meni pada sada je da grabis broj labela (label-$value) i sve to kroz petlju da izlistas... Pa tek onda upisujes u bazu... Najlakse je upisati, nego koliko vidim ovde je js sada nisam gledao nesto kod. Moras da dodas tu promenljivu koja ce uzimati broj labela koje imas..

Nije tesko da se uradi nego osmisliti najbolje resenje.
Meni je ovo palo na pamet,sacek mozda se neko javi sa boljom idejom



offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

protrci po $_POST nizu i prebroj
on izgleda otprilike ovako
Array (     [poll_option1] => 111     [poll_option2] => 222     [poll_option3] => 333     [method] => post     [create_poll] => Create! )

ili izmi count($_POST)-2

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Ovo resenje sto je MED dao je mnogo bolje, ja sam ono cisto iz glave napamet rekao.... Mada moze da posluzi

offline
  • Pridružio: 13 Mar 2009
  • Poruke: 229

Znaci prodjem kroz niz, prebrojim koliko ih ima i onda ovo sto sam ja rekao for petljom ?

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

$values=''; foreach ($_POST as $key=>$val){    if (substr($key,0,-1)=='poll_option'){       $values.="'".$val."',";    } } $values=substr($values,0,-1); $SqlStr='INSERT INTO poll VALUES('.$values.');';
i dobijes
INSERT INTO poll VALUES('111','222','333');

naravno tu treba jos staviti zastitu od injectiona
http://php.net/manual/en/security.database.sql-injection.php

offline
  • Pridružio: 13 Mar 2009
  • Poruke: 229

Napisano: 06 Sep 2011 15:24

Hvala, testiracu pa se javljam kasnije

Dopuna: 06 Sep 2011 15:49

Nesto sam zeznuo. Malo sam testirao ovo sve i radi kada unostim podatke iz jedne tabele, ali ako hocu istovremeno iz 2,3... ne radi

Kod mene konretno ovako izgleda:
$SqlStr='INSERT INTO kategorije (naziv)  VALUES('.$values.')';    mysql_query($SqlStr);

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

treba
  $values=''; foreach ($_POST as $key=>$val){    if (substr($key,0,11)=='poll_option'){       $values.="('".$val."'),";    } } $values=substr($values,0,-1); $SqlStr='INSERT INTO kategorije (naziv) VALUES '.$values.';';
da dobijes INSERT INTO kategorije (naziv) VALUES('111'),('222'),('333');

offline
  • Pridružio: 13 Mar 2009
  • Poruke: 229

Svaka cast majstore , tako je ! Hvala puno. Mozda se javim jos jednom kada budem pokusao ova da uradim jos sa selekt listiama <select name="lista">  </select>, ali prethodno cu da pokusam sam na osnovu ovoga sto si ti ovde radio. Hvala jos jednom !

Ko je trenutno na forumu
 

Ukupno su 842 korisnika na forumu :: 28 registrovanih, 3 sakrivenih i 811 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Andrija357, ccoogg123, cenejac111, darkangel, Dimitrije Paunovic, djboj, dule10savic, FileFinder, gorval, HrcAk47, janbo, Karla, Mercury, mik7, mikrimaus, milan.vukovic, minmatar34957, Mlav, Nemanja.M, nikoladim, Romibrat, sasa87, Sir Budimir, Srki94, vladetije, vlajkox, 1107