Avatar billede blackscorpion Nybegynder
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 ?
Avatar billede jaw Nybegynder
13. juli 2004 - 18:19 #1
Er i gang, men skal lige have et minut eller 2 :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:20 #2
jaw -> okey, troede du skred da du fik point'ne. *G* men okey, så er der 100 mere. :P
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:22 #3
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 ?
Avatar billede jaw Nybegynder
13. juli 2004 - 18:31 #4
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...
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:31 #5
jeg prøver. ;)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:34 #6
niks virker ikke.

og får intet på skærmen. *G*
Avatar billede jaw Nybegynder
13. juli 2004 - 18:34 #7
nej, du får intet på skærmen, det var heller ikke meningen... Men øjeblik, så må jeg jo selv teste :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:38 #8
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);
Avatar billede jaw Nybegynder
13. juli 2004 - 18:39 #9
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']."'>
Avatar billede blackscorpion Nybegynder
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
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:40 #11
nå ja.

og så skal $sql rettes brutalt til.

Den så sådan ud.

-------------------------------------------------------^
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:44 #12
og så mangler der i sql'en, where id = '$_POST[id]' ...
Avatar billede jaw Nybegynder
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.";
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:47 #14
tester og tjekker osv. ;)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:49 #15
Opdateringen blev udført på: 0rækker.

wtf...
Avatar billede jaw Nybegynder
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?
Avatar billede blackscorpion Nybegynder
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.";

?>
-----------------------------------------------
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:51 #18
er ikke 100% men 2 sec.
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:53 #19
tror jeg ved hvor fejlen er...

har smidt den <input name=id> ind.. den fucker op.
Avatar billede jaw Nybegynder
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...
Avatar billede jaw Nybegynder
13. juli 2004 - 18:53 #21
<input type='hidden' name='id' value='".$row['id']."'>
:)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:54 #22
den er IKKe opdateret.. og den gør det stadig ikke. *Grrrrrrrrrrrrr*
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:56 #23
Avatar billede jaw Nybegynder
13. juli 2004 - 18:57 #24
Prøv lige øverst i update.php at skrive:

echo $_POST['id'] . "<br>";
echo $_POST['titel'] . "<br>";
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:59 #25
hehe, den får id men ingen title. :(
Avatar billede jaw Nybegynder
13. juli 2004 - 19:00 #26
Det skal staves title og titel, men det ved jeg ikke om du har luret...?
Avatar billede blackscorpion Nybegynder
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!
Avatar billede jaw Nybegynder
13. juli 2004 - 19:02 #28
Virker opdateringen også? :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 19:02 #29
havde jeg ikke lige luret, men okey *G*
Avatar billede blackscorpion Nybegynder
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. ;)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 19:03 #31
yeps, det hele virker. tjekker hele tiden, med databasen også. ;)
Avatar billede jaw Nybegynder
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 :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 19:05 #33
hehe det var da så lidt. ;) *G* og god fornøjelse med pakkeriet. ;)

Så vil jeg stresse videre. ;)
Avatar billede jaw Nybegynder
13. juli 2004 - 19:07 #34
Hehe, good luck :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 19:14 #35
jo tak og tak for hjælpen. ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester