13. juli 2004 - 18:18
Der er
34 kommentarer og 1 løsning
Lave SQL fra Dynamisk form.
http://www.eksperten.dk/spm/519520 Der kan i læse om formularen.
skal bruge en måde at modtage felterne navne og data'er på, og så smide dem i en database.
tænkte på post eller request ?
Annonceindlæg fra Cognizant
Er i gang, men skal lige have et minut eller 2 :)
jaw -> okey, troede du skred da du fik point'ne. *G* men okey, så er der 100 mere. :P
jaw -> tænkte på at smide et gemt felt i formularen, med alle felt navnene i, og så hive dem ud, og behandle post'en ?
Altså jeg har ikke testet den andet end outputtet på skærmen: $q = mysql_query("SELECT * FROM tabel LIMIT 1"); $felt = array(); for($i = 0; $i < mysql_num_fields($q); $i++) { $felt[] = mysql_field_name($q ,$i); } $sql = "UPDATE tabel SET "; for($i = 0; $i < count($felt); $i++) { $sql .= "$felt[$i] =" . $_POST{$felt[$i]}; } mysql_query($sql); men du kan jo prøve den, virker den ikke må jeg smide den igennem en rigtig test :) Er bange for der nok er et '-agtigt problem et sted eller 2...
niks virker ikke. og får intet på skærmen. *G*
nej, du får intet på skærmen, det var heller ikke meningen... Men øjeblik, så må jeg jo selv teste :)
okey ;) min ser sådan her ud. $mysql_host = "localhost"; $mysql_user = "user"; $mysql_pass = "pass"; $mysql_db = "db"; $mysql_db_table = "table"; mysql_connect($mysql_host, $mysql_user, $mysql_pass) or die(mysql_error()); mysql_select_db($mysql_db) or die(mysql_error()); $q = mysql_query("SELECT * FROM $mysql_db_table LIMIT 1"); $felt = array(); for($i = 0; $i < mysql_num_fields($q); $i++) { $felt[] = mysql_field_name($q ,$i); } $sql = "UPDATE tabel SET "; for($i = 0; $i < count($felt); $i++) { $sql .= "$felt[$i] =" . $_POST{$felt[$i]}; } mysql_query($sql);
Ja, men du skal nok lige lave et felt på den side med alle felterne der indeholder et id-nummer, eller hvad det nu end er du finder din række med... <input type='hidden' name='id' value='".$row['id']."'>
13. juli 2004 - 18:40
#10
UPDATE tabel SET id =1title =something elsedescription =gfhgfhgfh gdfgfdgfdarea =kjhcreate_date =1089732521potencial =heducation =lkjexp =h gfdgfdg gfdgfdg fg fdgfdabilities =lkjhlanguage =kljit_knowlegde =hfirm_desc =kljhpayment =120start_date =kljhapplication =lkcontact =jhnum_vik =0ref =0
13. juli 2004 - 18:40
#11
nå ja. og så skal $sql rettes brutalt til. Den så sådan ud. -------------------------------------------------------^
13. juli 2004 - 18:44
#12
og så mangler der i sql'en, where id = '$_POST[id]' ...
13. juli 2004 - 18:46
#13
Den her er testet og virker for mig: $q = mysql_query("SELECT * FROM tabel LIMIT 1"); $felt = array(); for($i = 0; $i < mysql_num_fields($q); $i++) { $felt[] = mysql_field_name($q ,$i); } $sql = "UPDATE tabel SET "; for($i = 0; $i < count($felt); $i++) { $sql .= "$felt[$i] = '" . $_POST{$felt[$i]} . "' "; if($i != (count($felt)-1)) { $sql .= ", "; } } $sql .= " WHERE id = '".$_POST['id']."'"; mysql_query($sql) or die(mysql_error()); echo "Opdateringen blev udført på: " . mysql_affected_rows() . "rækker.";
13. juli 2004 - 18:47
#14
tester og tjekker osv. ;)
13. juli 2004 - 18:49
#15
Opdateringen blev udført på: 0rækker. wtf...
13. juli 2004 - 18:50
#16
Ja, det var jo ikke helt meningen. Den skulle gerne hedde 1 række. Og du har husket at ændre tabel osv.? Og du er sikker på, at $_POST[] har en værdi?
13. juli 2004 - 18:51
#17
Form.php ----------------------------------- <?php $mysql_host = "localhost"; $mysql_user = "user"; $mysql_pass = "pass"; $mysql_db = "db"; $mysql_db_table = "table"; mysql_connect($mysql_host, $mysql_user, $mysql_pass) or die(mysql_error()); mysql_select_db($mysql_db) or die(mysql_error()); $q = mysql_query("SELECT * FROM $mysql_db_table WHERE id = '1'"); $antal = mysql_num_fields($q); $hidden_fields = ""; echo"<form action='update.php' method='post'>"; while($row = mysql_fetch_array($q)){ for($i = 0; $i < $antal; $i++) { $hidden_fields .= mysql_field_name($q, $i) . ";"; if(mysql_field_type($q, $i) == "blob") { echo"<b>" . mysql_field_name($q, $i) . ":</b> <textarea cols='40' rows='6' name='" . mysql_field_name($q, $i) . "'>" . $row{$i} . "</textarea><br>\n"; } else { echo"<b>" . mysql_field_name($q, $i) . ":</b> <input type='text' name='" . mysql_field_name($q, $i) . "' value='".$row{$i}."'><br>\n"; } } } echo "<input type='hidden' name='fields_name' value='" . $hidden_fields . "'>"; echo "<input type='hidden' name='id' value='".$row['id']."'>"; echo "<input type='submit'>"; ?> ------------------------------------------------ Update.php ------------------------------------------------ <?php $mysql_host = "localhost"; $mysql_user = "user"; $mysql_pass = "pass"; $mysql_db = "db"; $mysql_db_table = "table"; mysql_connect($mysql_host, $mysql_user, $mysql_pass) or die(mysql_error()); mysql_select_db($mysql_db) or die(mysql_error()); $q = mysql_query("SELECT * FROM $mysql_db_table LIMIT 1"); $felt = array(); for($i = 0; $i < mysql_num_fields($q); $i++) { $felt[] = mysql_field_name($q ,$i); } $sql = "UPDATE $mysql_db_table SET "; for($i = 0; $i < count($felt); $i++) { $sql .= "$felt[$i] = '" . $_POST{$felt[$i]} . "' "; if($i != (count($felt)-1)) { $sql .= ", "; } } $sql .= " WHERE id = '".$_POST['id']."'"; mysql_query($sql) or die(mysql_error()); echo "Opdateringen blev udført på: " . mysql_affected_rows() . "rækker."; ?> -----------------------------------------------
13. juli 2004 - 18:51
#18
er ikke 100% men 2 sec.
13. juli 2004 - 18:53
#19
tror jeg ved hvor fejlen er... har smidt den <input name=id> ind.. den fucker op.
13. juli 2004 - 18:53
#20
Hvis den allerede er opdateret (altså ingen ændringer i forhold til hvad der står i forvejen), så vil den ikke opdatere, og derfor skrive 0 rækker...
13. juli 2004 - 18:53
#21
<input type='hidden' name='id' value='".$row['id']."'> :)
13. juli 2004 - 18:54
#22
den er IKKe opdateret.. og den gør det stadig ikke. *Grrrrrrrrrrrrr*
13. juli 2004 - 18:56
#23
13. juli 2004 - 18:57
#24
Prøv lige øverst i update.php at skrive: echo $_POST['id'] . "<br>"; echo $_POST['titel'] . "<br>";
13. juli 2004 - 18:59
#25
hehe, den får id men ingen title. :(
13. juli 2004 - 19:00
#26
Det skal staves title og titel, men det ved jeg ikke om du har luret...?
13. juli 2004 - 19:01
#27
*mundlam* før ændrede jeg id til rowid... og testede intet.. nu smed jeg de 2 ting ind, og den skrev id, men ikke rowid.. så ændrede det tilbage til id. og nu virker det.. SORT!
13. juli 2004 - 19:02
#28
Virker opdateringen også? :)
13. juli 2004 - 19:02
#29
havde jeg ikke lige luret, men okey *G*
13. juli 2004 - 19:03
#30
Jaw. Så kan du godt smide et svar, du skal have de 100 som jeg har lovet, og så skal du få fred. ;)
13. juli 2004 - 19:03
#31
yeps, det hele virker. tjekker hele tiden, med databasen også. ;)
13. juli 2004 - 19:04
#32
Perfekt :) Det er ikke altid man skal forstå... Og jeg skal også videre med pakkeriet, så det passer fint med lidt fred... Og tak for point :)
13. juli 2004 - 19:05
#33
hehe det var da så lidt. ;) *G* og god fornøjelse med pakkeriet. ;) Så vil jeg stresse videre. ;)
13. juli 2004 - 19:07
#34
Hehe, good luck :)
13. juli 2004 - 19:14
#35
jo tak og tak for hjælpen. ;)
Vi tilbyder markedets bedste kurser inden for webudvikling