Avatar billede hcthorsen Praktikant
02. marts 2009 - 08:37 Der er 15 kommentarer og
1 løsning

Nem måde at indsætte "value" i input-felt

Jeg har lavet nogle ret omfattende formularer hvor man kan indtaste data fra et videnskabeligt forsøg. Data er i første omgang skrevet ind på papir. Alt i alt er der ca. 2500 input-felter fordelt på 35 html-sider. Der er alle typer input (text, check-box, radio-buttons). ID på input-felterne er spg1, spg2, ... spgx.

Jeg vil nu gerne lave det sådan, at man kan hive en gammel formular frem m.h.p. at rette data. Formularen skal være udfyldt med de tidligere gemte data fra mySQL-databasen. Jeg kan godt finde ud af at lave det på slave-metoden med at tildele en "value" linje for linje, men er der en nemmere måde? Der er som bekendt 2500 input-felter.
Avatar billede erikjacobsen Ekspert
02. marts 2009 - 08:54 #1
Der er vel to slave-måder (skitser):

1) Putte værdierne ind med html: 
  <input type="text" name="p17" value="<?php print $p17;?>">

2) Putte værdierne ind med javascript
  <input type="text" id="p17" name="p17">
og så andet steds i js:
  document.getElementById('p17').value="<?php print $p17;?>";

I begge tilfælde skal du naturligvis hente ting fra databasen.
Avatar billede hcthorsen Praktikant
02. marts 2009 - 09:01 #2
Det er ikke noget problem at hente data fra DB, men jeg gad bare ikke lige side og rette 2500 input-felter. Men hvis jeg bruger metode 2, så er det vel egentlig heller ikke nødvendigt når jeg nu har nummereret mine felter som jeg har. Jeg kan vel bare lave en løkke og så bruge din kodestump js?
Avatar billede erikjacobsen Ekspert
02. marts 2009 - 09:03 #3
Ja, formentlig det nemmeste ;)
Avatar billede hcthorsen Praktikant
02. marts 2009 - 09:18 #4
Jeg prøver om jeg kan få det til at virke:-)
Avatar billede olebole Juniormester
02. marts 2009 - 12:23 #5
<ole>

- alternativt kunne du lade PHP skrive filerne ud med de udfyldte felter

/mvh
</bole>
Avatar billede hcthorsen Praktikant
02. marts 2009 - 14:03 #6
Nu må I ikke falde ned af stolen af grin hvis det er helt i skoven, men jeg har lavet følgende, som ikke virker:

<script type="text/javascript">document.getElementById('spg'$i).value="<?php print $row['spg'$i];?>"</script>

Som nævnt er mine id'er spg1, spg2 OSV. Jeg har hentet data ind i $row via $row = mysqli_fetch_assoc($query);. I databasen er navngivningen den samme som i mine formularer (spg1, spg2).

$i stammer fra en if-løkke som løber fra 1 til antal-spg.

Fejlmeddelelsen er: Parse error: syntax error, unexpected T_VARIABLE, expecting ']' in /home/virtual/thorsen-meyer.dk/public_html/ret_crf.php on line 74

Kan I se fejlen+
Avatar billede erikjacobsen Ekspert
02. marts 2009 - 14:12 #7
Er det php skal du nok

<script type="text/javascript">document.getElementById('spg<?php print $i;?>').value="<?php print $row['spg'$i];?>"</script>
Avatar billede erikjacobsen Ekspert
02. marts 2009 - 14:13 #8
Og måske endda:

<script type="text/javascript">document.getElementById('spg<?php print $i;?>').value="<?php print $row['spg'.$i];?>"</script>
Avatar billede hcthorsen Praktikant
02. marts 2009 - 14:26 #9
OK, nu kommer der ingen fejlmeddelelser, men felterne er stadig tomme. Mærkeligt!
Avatar billede olebole Juniormester
02. marts 2009 - 15:04 #10
Kik i browserens View->Source og tjek, hvad der faktisk bliver skrevet ud
Avatar billede erikjacobsen Ekspert
02. marts 2009 - 15:50 #11
Og er der fejl i browseren?
Avatar billede hcthorsen Praktikant
02. marts 2009 - 20:45 #12
Ingen fejl i browseren. Jeg har fået det til at virke ved at samle "spg" og $i før scriptet:

$spg = "spg".$i; ?>
<script type="text/javascript">document.getElementById('<?php print $spg;?>').value="<?php print $row[$spg]; ?>"</script>

Før det havde jeg prøvet med og uden punktum og anførselstegn i alle tænkelige kombinationer:-)

Nu har jeg jo også en del radio buttons og check boxes, og dem sker der desværre ikke noget med. Kunne man lave scriptet om så de også bliver udfyldt?
Avatar billede erikjacobsen Ekspert
02. marts 2009 - 22:10 #13
Så kan du med passende if-sætninger rundt om skrive:

document.getElementById('p17').checked=true;
Avatar billede hcthorsen Praktikant
03. marts 2009 - 08:34 #14
Ja, det kan vel lade sig gøre. Jeg prøver lige om jeg kan få det til at virker. Ellers skifter jeg bare mine radio buttons ud med en select box.
Avatar billede hcthorsen Praktikant
03. marts 2009 - 10:04 #15
Jamen det virker jo fint. Du er en knag. Jeg ved ikke hvorfor jeg har en blokering overfor JS. Jeg fatter det bare ikke. Jeg går ud fra at du stadig ikke vil have point? Ellers smid et svar:-)
Avatar billede erikjacobsen Ekspert
03. marts 2009 - 10:16 #16
Nej tak, ingen point.
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