test2 Posted March 29, 2009 Report Share Posted March 29, 2009 Man ir šāds submits: <input name="test1" value="test"> <input name="test2" value="test1"> <input name="test3" value="test2"> <input name="test4" value="test"> <textarea name="blaahblah">test</textarea> Un kā tagad varētu uztaisīt datubāzē insertu pieņemot ka katra lauka name ir kkādas tabulas lauks. un apmr šitā instert into table (test1,test2...)VALUES(test,test1...) , bet kā tu uztaisīt automātiski? Respektīvi man vajag lai šito daļu (test1,test2...)VALUES(test,test1...) ģenerē automātiski, jo sumbits var saturēt mazāk, daudzāk un citādākus laukus... Quote Link to comment Share on other sites More sharing options...
bubu Posted March 29, 2009 Report Share Posted March 29, 2009 Īsti nesapratu kas tur tev ģenerējas automātiski - lauku nosaukumi vai? Katrā ziņā, kā es to taisītu (esmu šādu kodu vairākkārt jau te rādījis): $fields = array("test1", "test2", "test3", ...); $names = array(); $values = array(); foreach ($fields as $field) { $names[] = $field; $values[] = $_POST[$field]; // te neaizmirsti par eskeipošanu } $names = implode(",", $names); $values = implode("','", $values); mysql_query("INSERT INTO tabula ($names) VALUES ('$values')") or die(mysql_error()); Protams, ja visu lauku nosaukumi ir formā testX, tad nevajag to $fields masīvu, tad vajag foreach ciklu aizstāt ar parastu for ($i=1; $i<..; $i++). Quote Link to comment Share on other sites More sharing options...
test2 Posted March 29, 2009 Author Report Share Posted March 29, 2009 (edited) MAn ir ta ka tie dati (name="xxx") ir uz dullo un es nevaru salikt arrayā, jo viņi var mainīties pēc attiecīgā pieprasījuma. Pagaidām man ir šāds kods: while(list($keys,$values)=each($_POST)){ } ar kā palīdzību varu dabūt pilnīgi visus POST datus , bet nemāku uztaisīt tā lai varētu viņus insertot iekšā, tāpēc tavs variants neder! Edited March 29, 2009 by test2 Quote Link to comment Share on other sites More sharing options...
bubu Posted March 29, 2009 Report Share Posted March 29, 2009 Mans variants der ļoti labi. Ja tev tiešām jāinserto visi POST lauki: $names = array(); $values = array(); while (list($name,$value) = each($_POST)) { $names[] = $name; $values[] = $value; // te neaizmirsti par eskeipošanu } $names = implode(",", $names); $values = implode("','", $values); mysql_query("INSERT INTO tabula ($names) VALUES ('$values')") or die(mysql_error()); Prātīgāk gan būtu zināt, kurus precīzi laukus vajag saglabāt un vilkt no $_POST ārā tikai tos. Quote Link to comment Share on other sites More sharing options...
test2 Posted March 29, 2009 Author Report Share Posted March 29, 2009 (edited) fixed! Edited March 29, 2009 by test2 Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 29, 2009 Report Share Posted March 29, 2009 Prātīgāk gan būtu zināt, kurus precīzi laukus vajag saglabāt un vilkt no $_POST ārā tikai tos. Taa arii ir, jo nevajag aizmirst ka SUBMITS ari iesuuta datus kaa POST , taatad sakumaa tapat ir jasavaac/ jatlasa tie dati , piedevam sadi ir grutak parbaudiit vai dotais lauks ir valiids... (tas ir vai ir aizpidiiti obligatie un ar ko vinji aizpildiiti ) Bet pec tam gan dotais kods lieliski der... Quote Link to comment Share on other sites More sharing options...
test2 Posted March 31, 2009 Author Report Share Posted March 31, 2009 A man tagad jautājums ja man ir lauki, kuri iekš šīs te insertošanas ir jāpārvērš pa vienu lauku, tad kā man darīt? Nu piemēram man ir divi input lauki ar name="personas_koda_1_dala" un name="personas_koda_2_dala", tad kā es iekš šī te cikla varu izdarīt lai viņi apvienojas kā viens un viņu vērtības arī kkā salikt un db viņi pievienotos personaskods="personas_koda_1_dala-personas_koda_2_dala". Quote Link to comment Share on other sites More sharing options...
marcis Posted March 31, 2009 Report Share Posted March 31, 2009 Taisi ciklā izņēmumus + ieteiktu lietot html masīvus. <input type="text" name="data[test1]" value="" /> <input type="text" name="data[test2]" value="" /> <input type="text" name="data[test3]" value="" /> <input type="text" name="pk[]" value="" /><input type="text" name="pk[]" value="" /> $fields=array(); $values=array(); foreach($_POST['data'] as $key=>$value){ $fields[]=$key; $values[]=$value; } $fields[]="personas_kods"; $values[]=implode("-",$_POST['pk']); Šis ir tikai piemērs, bet idejai vajadzētu būt skaidrai. Quote Link to comment Share on other sites More sharing options...
test2 Posted April 2, 2009 Author Report Share Posted April 2, 2009 Ok skaidrs, kā šo lietu realizēt pie INSERT, bet kā ir ar update? kā izstīsies šīs te implode jo iekš UPDATE tur vajag tač SET kkas='11', kkascits='te2' Quote Link to comment Share on other sites More sharing options...
marcis Posted April 2, 2009 Report Share Posted April 2, 2009 Lieto izdomu (: $updates=array(); foreach($_POST['data'] as $key=>$value){ $updates[]=$key."='$value'"; } $updates=implode(", ",$updates); mysql_query("UPDATE `tabula` SET $updates WHERE id=$id"); Quote Link to comment Share on other sites More sharing options...
test2 Posted April 3, 2009 Author Report Share Posted April 3, 2009 (edited) Ok varbūt kāds uzreiz var palīdzēt ar pavisam citu problēmu? Negribu vnk veidot jaunu topiku tādam mazam skriptam: <? if(!empty($_FILES[''])){ $allowed_filetypes = array('.jpg','.JPG','.JPGE'); $save_path="images/"; $pics=array(); $uploaded_files = array(); $uploaded_files = $_FILES['pics']; if(count($uploaded_files) > 0) { foreach($uploaded_files as $uf) { if(!empty($uf['name'])){ $ext = substr($uf['name'], strpos($uf['name'],'.'), strlen($uf['name'])-1); if (!in_array($ext,$allowed_filetypes)) { $error=3; }else{ $picname=md5(rand()*time()); move_uploaded_file($uf['name']['tmp_name'],$save_path.$picname.$ext); $pics[]=$picname.$ext; } }else{ echo "yoo"; } } } ?> Jautājums kāpēc šitais: if(!empty($uf['name'])){, vislaik izpildas kā false un man ar katru bildi izvadas yoo, kam pēc būtības nevajadzētu būt, jo bilde ir ieveitota un nevar būt tukša! Edited April 3, 2009 by test2 Quote Link to comment Share on other sites More sharing options...
Klez Posted April 3, 2009 Report Share Posted April 3, 2009 neredzu jēgu šai rindiņai $uploaded_files = $_FILES['pics']; man liekas ka šitā vajag, pārbaudījis neesmu ... foreach($_FILES['pics'] as $uf) { if(!empty($uf['pics']['name'])){ ... } } man ir šādi: for($i=0;$i<count($_FILES['bilde']['error']);$i++) { $b_size = $_FILES['bilde']['size'][$i]; if ($_FILES['bilde']['error'][$i] == 0) { //daraam kas jaadara } }//end for($i=0;$i<count($_FILES['bilde']);$i++) Quote Link to comment Share on other sites More sharing options...
marcis Posted April 3, 2009 Report Share Posted April 3, 2009 Ja forma izskatās kaut kā šādi <input type="file" name="pics[]" /> <input type="file" name="pics[]" /> <input type="file" name="pics[]" /> Tad nepareizs ir tikai pirmais if's un move_uploaded_file() vietas. Debugo skatoties print_r($_FILES) un ciklā print_r($uf) Quote Link to comment Share on other sites More sharing options...
test2 Posted April 3, 2009 Author Report Share Posted April 3, 2009 Lab ejam taalaak, man tagad vajag izdariit shitaa: sanjemam datus no selecta: Abols:".$row['abols'].", bet man to abols vajag dabuut no citas tabulas, respektivi no tas kuras selektoju infu ir abols garhiigs riebiiigs norm Bet vienaa citaa tabulaa ir type|name abols Abols Un man vajag izvilkt abola name plus vinjam vel vertiibu, es shitaadu prijomu vnk nespeeju izdomaat, luudzu peec iespeejas aatraak paliidzeet! Quote Link to comment Share on other sites More sharing options...
marcis Posted April 3, 2009 Report Share Posted April 3, 2009 Patiesībā lielu daļu problēmu var atrisināts pats, uzdodot sev jautājumu, kam un kā būtu jānotiek (: Šoreiz es tā īsti arī nesapratu, ko tu gribi panākt. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.