Avatar billede stargate Nybegynder
23. marts 2004 - 20:35 Der er 11 kommentarer og
1 løsning

Opdatering af form-felt fra DB

Ja, nu er jeg jo helt i tvivl om jeg skal stille spørgsmålet her..., men jeg prøver.

Hvis jeg har to input (text) felter i en form, "id" og "navn", så vil jeg gerne slå navnet op i en DataBase, når jeg forlader "id"-feltet (onblur), og derefter vise det i "navn"-feltet.

Kan jeg det, eller snakker vi noget mere end javascript ???
Avatar billede roenving Novice
23. marts 2004 - 20:44 #1
Kommer an på ...

Hvis du skal nøjes med at bruge javascript, er du nødt til at overføre hele den del af tabellen til en javascript-database, som er loadet med dokumentet, f.eks.

pseudo-kode (her php-inspireret !-)

<?
//dit database-opslag
?>

<script type="text/javascript">
var dat = new Array();

<?
for($i=0;$antalPoster>$i;$i++){

$data = $row[$i];

echo "dat[$data[$id]] = $data[$navn];
";
}
?>
</script>

Det kan jo laves på næsten samme måde med en while (/do while i vbscript !-)

-- alternativt kan du lave et kald til din side onchange på id-feltet !-)
Avatar billede keysersoze Ekspert
23. marts 2004 - 20:45 #2
ja - mere en javascript. Du skal bruger en serverside-teknologi (fx ASP eller PHP) til at lave opslaget i database - og til det er der så vidt jeg kan se to muligheder;

1. lave en array i javascript med samtlige records fra databasen, og når du så kører din onblur slår javascriptet op i array'et og indsætter den passende værdi i navn-feltet

2. din onsubmit-funktion submitter din form til en side der laver database-opslaget og går tilbage til forrige side med resultatet.
Avatar billede stargate Nybegynder
23. marts 2004 - 21:02 #3
Æhh, vi snakker ca. 16-18.000 records, så jeg vil ikke læse dem ind i et array.

Så det bliver nok noget server-side(JSP),,,
Avatar billede roenving Novice
23. marts 2004 - 21:05 #4
Det vil jeg så absolut anbefale !-)
Avatar billede olebole Juniormester
23. marts 2004 - 21:05 #5
<ole>

Nej, det er ikke nødvendigt - man kunne jo - 'i baggrunden' - lave en XMLhttp-request til serveren. Det vil dog kun kunne fungere i IE og Moz - kan det bruges?

/mvh
</bole>
Avatar billede olebole Juniormester
23. marts 2004 - 21:14 #6
I IE vil det f.eks. kunne se sådan ud:

function getNavn(id) {
    var oHTTP = new ActiveXObject( "MSXML2.XMLHTTP" );
    var url = "http://www.domain.dk/en_fil.asp?id=" + id;
    oHTTP.Open( "GET", url, false );
    oHTTP.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
   
    oHTTP.onreadystatechange = function() {
        if ( oHTTP.readyState==4) {
            var xmlDoc = oHTTP.responseXML.documentElement;
            // Nu kan du søge i xmlDoc med alm. XML-DOM
            // eller med X-Path.
            // Derefter kan du med JS skrive resultatet,
            // hvor du vil på siden.
        }
    }
    oHTTP.Send();
}

I filen 'en_fil.asp' henter du så GET-variablerne ud og foretager din DB-request. Derefter lader du ASP skrive resultatet i XML ... voila  :)
/mvh
Avatar billede stargate Nybegynder
23. marts 2004 - 21:34 #7
olebole:
Det du skriver lyder meget ASP-afhængigt???
Avatar billede roenving Novice
23. marts 2004 - 21:44 #8
Næh, det ole skrev er ie-udgaven af et script, du skal, for at få det til at virke mod andre teknologier, bare udskifte .asp med f.eks. .php !-)
Avatar billede olebole Juniormester
23. marts 2004 - 21:58 #9
Du kan bruge det med ASP, ASP.NET, PHP, JSP, Perl/CGI ... fortsæt selv  :)
Avatar billede olebole Juniormester
23. marts 2004 - 21:59 #10
PS: Jeg bruger det selv i udstrakt grad i forbindelse med PHP  :)
Avatar billede stargate Nybegynder
24. marts 2004 - 17:52 #11
Jeg har fundet en måde...
Ligner måske lidt ovenst. forslag.
kalder bare en "window.open(xxx.jsp?id=...,,,)
og lader det vindue returnere værdi og lukke...

olebole:: Kunne dog godt finde på at udforske dit forslag lidt nærmere, så smid lige et svar, så du kan få point for det...
Avatar billede olebole Juniormester
25. marts 2004 - 04:09 #12
Jamen, det kan du også. Det andet er lidt mere 'sexy', da det kan foregå 'i baggrunden'  :)
Bagdelen ved denne løsning er, at Opera er for lam til at kunne bruge XML til noget særligt .... meeeen en afart af popup-vinduet kunne jo være at lade filen loade i en iframe med style="display:none" og lade den opdatere derfra.
Det er også meget brugt ... ikke mindst i chats, så hele siden ikke står og reloader, når der hentes beskeder  :)
/mvh
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