Avatar billede nikolajdu Nybegynder
13. juli 2004 - 15:13 Der er 22 kommentarer og
1 løsning

oprette inputfelter og inserte

Er det muligt (og hvis hvordan) at ave en dynamisk form der kan oprette x antal inputfelter udfra felterne i databasen og ved submit opdatere disse?

/Nikolaj
Avatar billede jaw Nybegynder
13. juli 2004 - 16:53 #1
Altså at der kommer felter frem på skærmen, afhængig af hvor mange felter der er i databasen, ik?

Så må du vel kunne:

$antal = mysql_num_fields(//query);
echo"<form action='update.php' method='post'>";
$i = 0;
while($row = mysql_fetch_array($q)) {
  echo"<input type='text' name='felt".$i."' value='".$row{$i}."'>";
  $i++;
}

...eller ?
Avatar billede nikolajdu Nybegynder
13. juli 2004 - 19:34 #2
Jo det ka du ha ret i, men jeg mangler 2 ting.

1. Queryen
2. Hvordan får jeg php til at modtage igen og forstå hvilke feltnavne den skal opdatere.
Avatar billede jaw Nybegynder
13. juli 2004 - 19:38 #3
Jeg lavede faktisk det samme lige for 10 minutter... Og medmindre du bliver meget sur, så tillader jeg mig bare at taste links, i stedet for at skulle skrive det hele om igen...

Forms: http://www.eksperten.dk/spm/519520
Opdateringen: http://www.eksperten.dk/spm/519535

... Ellers må du sige til, men håber du kan bruge det :)
Avatar billede jaw Nybegynder
13. juli 2004 - 19:40 #4
Skal så nok tilknytte, at linien:
echo"<input type='text' name='felt".$i."' value='".$row{$i}."'>";

endte med at blive:
echo"<input type='text' name='".$row{$i}".' value='".$row{$i}."'>";
Avatar billede jaw Nybegynder
13. juli 2004 - 19:41 #5
Hvilket var noget ævl, den kom til at hedde:

mysql_field_name($q, $i)
echo"<input type='text' name='".mysql_field_name($q, $i)".' value='".$row{$i}."'>";
Avatar billede jaw Nybegynder
13. juli 2004 - 19:53 #6
Du får lige det hele, i ren kode, som resultatet bliver. Tror det er lidt forvirrende at se i de 2 links:

forms:

<?
//connect
$mysql_db_table = "tabel";
$q = mysql_query("SELECT * FROM $mysql_db_table WHERE id = '1'");

$antal = mysql_num_fields($q);

echo"<form action='opdater.php' method='post'>";
while($row = mysql_fetch_array($q)){
  for($i = 0; $i < $antal; $i++) {
    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='submit' name='submit' value='Opdater'></form>";
?>

opdater.php:
<?
//connect
$mysql_db_table = "tabel";
$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 marathon SET ";
for($i = 0; $i < count($felt); $i++) {
  $sql .= "$felt[$i] = '" . $_POST{$felt[$i]} . "' ";
  if($i != (count($felt)-1)) {
        $sql .= ", ";
    }
}
$sql .= " WHERE startnr = '".$_POST['id']."'";
mysql_query($sql) or die(mysql_error());

echo mysql_affected_rows();
?>

Håber det var lidt bedre...
Avatar billede nikolajdu Nybegynder
13. juli 2004 - 19:58 #7
Jeg havde nu været tilfreds med linket, men nu gik du jo helt amok mens jeg spiste. Kigger på den lidt senere :))
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 02:29 #8
Nu var det egentligt insert jeg var ude efter men her kan jeg vidst godt tænke videre selv. :))

Der var bare et perfekt svar så smid et og jeg kaster de gyldne e point efter dig :))

Tak Nikolaj
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 02:33 #9
Nåja lige ud fra sidebenene spring om det kunne være muligt at lave felterne kombineret ud fra felttype også.

Tænker måske at det er bedst at lave en reference tabel til at indeholde feltfunktioner - eller hvad vil du foreslå.
Avatar billede jaw Nybegynder
14. juli 2004 - 02:34 #10
Hej...

Godt du kunne bruge det :)

Det sidste spørgsmål må du uddybe en lille smule, klokken er mange :/
Avatar billede jaw Nybegynder
14. juli 2004 - 02:36 #11
Hvis det er felttypen fra databasen du vil have, og evt. køre noget "if" på, så kan du få den på samme måde som du får feltnavnet: mysql_field_type($q, $i);
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 02:40 #12
Jo eller måske switch/case er bedre, men det jeg er ude i er at jeg har en del ens felter som jeg i stedet for et input felt måske hellere vil tilknytte en dropdownbox eller en anden klient funktion - Så det sidste går på om jeg bør lave en reference tabel til funktionerne og tilsvarende felter med værdien?

Det lyder bare lidt omstændigt, men er selvfølgelig fint hvis det ender super dynamisk ud :))

sov vel - det vil jeg ihvertilfald.

/Nikolaj
Avatar billede jaw Nybegynder
14. juli 2004 - 02:42 #13
Tjah, men der tror jeg den bådste måde er at bruge mysql_field_type og så arbejde ud fra det, hvis det altså er konsekvent at du altid skal have blob-felter i <textarea> eller hvad det nu må være...

Og også godnat herfra, og tak for point :)
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 02:47 #14
Jeg har et utal af funktioner både client og serverside der kan lidt af hvert i forhold til hvilket felt. Det gik fint med selv at skrive og opdatere for de første 150 felter (lidt af gangen), men nu kunne jeg godt tænke mig at gøre det endnu mere dynamisk.

Eks.:

Felter

Navn (varchar)
dato (datetime)
email (varchar)
ip (varchar)

I eksemplet her har jeg brug for 3 forskellige tjeck på indholdet af felterne og i dato vil jeg gerne dele det op i 3 dropdownboxe sålede at det bliver nemt at vælge. Ydermere skal IP felter ikke være noget man skrive i men noget der bare indsættes.

Jo mere jeg selv skriver det lyder det som om jeg skal lave den ekstra tabel :))
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 02:49 #15
Problemet er at min database vokser uhæmmet hver gang jeg får lyst til nye eksperimenter. Jeg har nu 35 tabeller indeholdende ca 200 felter. Det er bare såååå kedeligt at skriver mysql_query("UPDATE tabel....") eller insert into
Avatar billede jaw Nybegynder
14. juli 2004 - 02:50 #16
hehe, ja jeg bliver nok også tilbøjelig til at give dig ret :) Det bliver nogen tossede if'er eller hvad man nu vælger...
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 02:55 #17
Ok sidste spørgsmål kan jeg i mySql lave noget smart der kan linke til en anden tabel.

Således at feltet navn får en ekstra "property" fra tabellen funktioner eller skal jeg lave mine tabeller i stilen her:

navn (varchar)
navn_funktion (int)

os så udelade at opdatere felter med navnet funktion
Avatar billede jaw Nybegynder
14. juli 2004 - 03:11 #18
hmm, jeg ved ikke om du kan. Så skal du ud i noget med *_funktion, men om du kan ved jeg sku ikke lige, der må jeg være dig svar skyldig :(
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 03:14 #19
Ok men tak for hjælpen ihvertilfald :))
Avatar billede jaw Nybegynder
14. juli 2004 - 03:15 #20
Jeg synes du sagde godnat :) Men ellers evt. check med http://dev.mysql.com - det er der måske nok :)
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 03:20 #21
Jeg sagde også godnat men blev lige grebet af tanken - Regnede egenligt heller ikke med at du var oppe.

Men u er det simpelthen i kassen. Jeg skal sgu snart op igen :)
Avatar billede jaw Nybegynder
14. juli 2004 - 03:22 #22
Jeg faldt i søvn foran fjerneren for et par timer siden, så kan ikke sove... Ellers var jeg også tøffet...

Men nat, nu er vi vist også snart ude i database-spam :)
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 19:34 #23
http://www.eksperten.dk/spm/519910 - Efterfølgeren du kan lure med på :))
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