Avatar billede fangel Nybegynder
08. august 2003 - 16:03 Der er 22 kommentarer og
1 løsning

stort array til form

Hej

jeg sidder og laver et intranet system - til dette skal der selvfølgelig være en admin-del! denne sidder jeg og laver på lige nu, og er løbet ind i det problem at jeg kan intet JS...

jeg skal derfor have hjælp med at lave noget der kan dette:

jeg har et stort (js) array med alt indhold fra databasen struktureret som dette:

medarbejdere = new array();
medarbejder[1]['addresse'] = "vej nr postnr by";
medarbejder[1]['tlfnr'] = "1111111111";
medarbejder[1]['mobilnr'] = "22222222";
medarbejder[2]['adresse'] = "vej2 nr postnr by";
...OSV...

nu vil jeg så lave det så jeg har en form med dette:

en dropdown menu med alle medarbejdere i (id som value), når denne så ændres skal den det tilsvarende array og lægge værdierne ind i formfelter som fx

medarbejder[VALGT_ID]['adresse'] => document.getElementById("formfeltAdresse").value

...OSV...

plus sætte et hidden felt til det valgte ID... (så når der trykkes send, får jeg id og oplysninger så jeg kan finde dem i databasen

---

noget man kan få lidt hjælp til? (det skal virke i Mozilla - det bliver testet i Moz. Firebird 0.6.1)

Morten
Avatar billede roenving Novice
08. august 2003 - 16:15 #1
<select ... onchange="udfyldForm(this)"

function udfyldForm(sel){
  if(sel.value=="")return;//<-- går ud fra du har en dum option øverst !->
  val = +sel.options[sel.selectedIndex].value;
  document.getElementById("formfeltAdresse").value = medarbejder[val]['adresse'];
  document.getElementById("formfeltTlfnr").value = medarbejder[val]['tlfnr'];
  document.getElementById("formfeltMobilnr").value = medarbejder[val]['mobilnr'];
  document.getElementById("formfeltId").value = val;
}

Sådan ?-)

-- du havde den jo næsten selv !-)

-- og jeg har ikke testet, nærmest bare bekræftet dit eget ...
Avatar billede roenving Novice
08. august 2003 - 16:17 #2
-- og sel.value burde også virke i val = -linjen -- den er NS6+ og IE4+
Avatar billede fangel Nybegynder
08. august 2003 - 16:19 #3
roenving => så må jeg jo blive bedre - men har stadig problemer med selects ;)

---

kan jeg logge dig til at lave en funktion der åbner et vindue (kan jeg selv), det svære er adressen:

changePaswd?id=[valgt_id_fra_formen]

hvordan laves dette?

---

jeg prøver lige at lave et live ex. så jeg kan teste om det virker

Morten
Avatar billede roenving Novice
08. august 2003 - 16:27 #4
Pakket ind i en funktion for at undgå konflikter med "" og '''

function openPass(id){
  window.open("changePaswd?id="+id,"ChangePassword")
}
Avatar billede fangel Nybegynder
08. august 2003 - 16:38 #5
den skal jo lige finde det selectede ID? skal den ik'?

---

og den sidste ting:

en af værdierne er en boolean-variabel, så derfor skal der laves noget som dette. spørgsmålet er så om der er en ordenlig måde at gøre dette på

document.getElementById("formfeltAdmin").selected = (medarbejder[val]['admin] == 1) ? 'true' : 'false';

Morten
Avatar billede roenving Novice
08. august 2003 - 16:47 #6
openPass er jo en funktion som skal kaldes -- jeg gik ud fra, at du havde den information ?-)

(f.eks. fra drop-down-boksen !-)

altså: openPass(document.getElementById('selectId').value)

-- jeg er lige ved at tro, at du ikke engang behøver at lave forespørgslen til den sidste (for ikke-0/ikke-null/findes fortolkes normalt som true), men det er en sikker måde at gøre det på !o]
Avatar billede fangel Nybegynder
08. august 2003 - 17:00 #7
jeg får følgende JS fejl i Mozilla:

Error: medarbejder[val] has no properties
Source File: http://mfa.ath.cx/vestergaards_com/alpha/js-test.roenving.php
Line: 33

du kan se scriptet her:
http://mfa.ath.cx/vestergaards_com/alpha/js-test.roenving.php

Morten
Avatar billede roenving Novice
08. august 2003 - 17:06 #8
Du har fjernet et + fra koden !

val = +sel.options[sel.selectedIndex].value;

virker ligesom:

val = parseInt(sel.options[sel.selectedIndex].value,10);

hvis værdien er en talværdi !-)
Avatar billede fangel Nybegynder
08. august 2003 - 17:07 #9
sorry - har prøve begge- tilføjer det lige igen

Morten
Avatar billede roenving Novice
08. august 2003 - 17:13 #10
Hov, den havde jeg helt overset -- og javascript er åbenbart ligeglad med typen også i indexet, så +'et er overflødigt:

  medarbejder = new Array();
  medarbejder[1] = new Array();
  medarbejder[1]['navn'] = 'Thomas';
  medarbejder[1]['adresse'] = 'Vej nr 9700 Hjørring ';
  medarbejder[1]['tlfnr'] = '11111111';
  medarbejder[1]['mtlfnr'] = '22222222';
  medarbejder[1]['admin'] = '1';
  medarbejder[2] = new Array();
  medarbejder[2]['navn'] = 'Morten Fangel';
Avatar billede fangel Nybegynder
08. august 2003 - 17:18 #11
2 sek - skal lige have det ind i PHPen ;)

Morten
Avatar billede fangel Nybegynder
08. august 2003 - 17:19 #12
fejlen kommer stadig...

Morten
Avatar billede fangel Nybegynder
08. august 2003 - 17:20 #13
sorry, havde stavet array med lille - nu virker alt undtagen admin delen

Morten
Avatar billede roenving Novice
08. august 2003 - 17:21 #14
Du har lavet det som et tekst-felt i eksemplet, lav det om til en checkbox -- og så hedder property'en checked !-)
Avatar billede fangel Nybegynder
08. august 2003 - 17:24 #15
sorry - nu virker det! du er sku' god at have ved hånden når man skal lave noget JS ;) ;) ;)

(du skulle ikke have brug for lidt PHP - så jeg kan hjælpe dig en gang i mellem)

lægger du et svar?

Morten
Avatar billede roenving Novice
08. august 2003 - 17:27 #16
Fik du lavet true og false om til boolean værdier ?-)

altså:
(medarbejder[val]['admin'] == 1) ? true : false;

Velbekomme '-)

-- og jo, præcis med databaser, for jeg har tænkt mig til min working demo #4 at have eksempler på database-opbygning fra php og asp med !-)

http://roenving.users.whitehat.dk (#4 !-)

-- men der bliver det lidt mere kompliceret, for jeg vil godt have en skalerbar javascript-database ...
Avatar billede fangel Nybegynder
08. august 2003 - 17:31 #17
jeg vil lige se om det er noget jeg kan - du kan fange mig på mfa@desi-dev.dk (hvis du får brug for det)

Morten
Avatar billede roenving Novice
08. august 2003 - 17:37 #18
Tak for points ;~}

-- nu skal jeg se hvor langt jeg når idag !-)
Avatar billede fangel Nybegynder
15. august 2003 - 18:27 #19
undskyld jeg sådan spørger igen, men hvis jeg nu vil have en "tilføj ny" option, der bare til nulstille formene, ville jeg lave det sådan her:

http://mfa.ath.cx/vestergaards_com/alpha/roenving.php (server virker måske, sig til hvis ikke)

men dette virker ikke - kan du prøve at se på det?

Morten
Avatar billede roenving Novice
15. august 2003 - 20:26 #20
Den klassiske javascript-metode til at definere 'mere' til et array er:

  newNum = medarbejder.length;
  medarbejder[newNum] = new Array();
  medarbejder[newNum]['navn'] = '';
  medarbejder[newNum]['adresse'] = '';
  medarbejder[newNum]['tlfnr'] = '';
  medarbejder[newNum]['mtlfnr'] = '';
  medarbejder[newNum]['admin'] = 0;

-- og den eneste grund til at vi sætter en variabel til at holde nummeret er, at .length opdateres øjeblikkelig.

hth
jes
Avatar billede fangel Nybegynder
15. august 2003 - 21:48 #21
ok - prøver mig lidt frem

Morten
Avatar billede fangel Nybegynder
15. august 2003 - 21:57 #22
det virker nu - endnu en gang tak! du er sku' dejlig sej til JS
Avatar billede roenving Novice
15. august 2003 - 22:07 #23
*gg*
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