Avatar billede chrfoss Nybegynder
09. maj 2009 - 13:15 Der er 5 kommentarer

OnChange: JSP + SQL

Hej guys.

Jeg sidder og bakser med en simpel webshop i JSP og har et spørgsmål.
Jeg har lavet en database der indeholder et vareregister og nu vil jeg lave en sider hvor man kan redigere varerne.
Jeg vil lave en drop-down menu hvor man vælger varen man vil redigere og derefter skal informationen loades i en redigerbar form.

Jeg har:


<form name="FormList">
        <select name="VareList" onChange="">
        <option value="Default">Vælg vare at redigere</option>
        <%
        while (rs.next() == true){

            %><option value="<%out.println(rs.getString("itemname"));%>"><% out.println(rs.getString("itemname"));%></option>
            <%
       
        }

Dette generer en drop-down menu med alle varer i databasen.
Nu vil jeg gerne have at når man vælger en vare så skal informationen loades ind i en form.
Jeg ville tro at jeg kunne bruge onChange="" til dette, men er usikker på hvordan.

Nogen der kan give et skub i den rigtige retning?

Tak!
Avatar billede jonesw Nybegynder
09. maj 2009 - 13:42 #1
Du skal kigge på javascript når det er onchange... for det er jo i HTML-delen at der sker en ændring..
Du kan jo evt. gøre sådan at når der sker et valg i drop-down menuen så bliver det automatisk submittet til en ny side, som jo så henter dine data via din jsp-side/servlet..

Hvis du endelig ønsker at gøre det rigtig fancy kan du gøre det via ajax, så der ikke sker en side opdatering, men at teksten blot bliver ændret.
Avatar billede chrfoss Nybegynder
09. maj 2009 - 13:46 #2
Kan du forklare lidt mere om ajax, for det er helt klart dét jeg er ude efter!
Avatar billede jonesw Nybegynder
09. maj 2009 - 14:00 #3
Ajax er jo egentlig også javascript, blot med sammenkædning af en serverside.
Processen er den at du via et javascript og funktionen xmlhttprequest. Via javascriptet sender du et request ned til en servlet, som jo så henter dine data fra din database. Data bliver så udformet til et XML dokument som bliver sendt tilbage til javascriptet på din side. Nu skal javascriptet som fortolke XML dokumentet, og ændre i din HTML side så informationen nu bliver vist på hjemmesiden...
Avatar billede arne_v Ekspert
09. maj 2009 - 15:18 #4
Du kunne f.eks. bruge http://ajaxtags.sourceforge.net/ til det.
Avatar billede baitianlong Nybegynder
16. maj 2009 - 22:15 #5
Jeg tror dette svar skal vaere lidt mere fra bunden... jvf koden, som er beskrevet.

Du kan udskifte

while(rs.next() == true) med while(rs.next()) hvilket betyder praecis det samme. Men hvor kommer rs fra i denne kode?

Endvidere:

<%
        while (rs.next() == true){

            %><option value="<%out.println(rs.getString("itemname"));%>"><% out.println(rs.getString("itemname"));%></option>
            <%
     
        }

=

<%
while(rs.next()) {
%>
<option value="<%= rs.getString("itemname") %>">
<%= rs.getString("itemname") %>
</option>
<%
}
%>

Dette vil dog give Arne_v graa haar i hovedet da man boer bruge jstl, taglibs og EL, men dette er blot et foreslag fra en old school java coder :)

Du skal basically hente resultaterne fra din database 'onchange' som du siger, og det goer du ved at bruge onchange="window.location.href='minside.jsp?vare='+this.value"

Men du kan ogsaa hente skidtet uden at reloade siden, ved at bruge ajax og sige onchange="hentVarer(this.value)"

Og have en ajax funktion, som kalder serveren via javascript uden at reloade siden...

Hvis du er lidt ny mht programmering foreslaar jeg du opdaterer siden og laegger dine server/database-kald i en <% java kode %> blok i toppen af siden, men hvis du er lidt erfaren, synes jeg du skal kigge paa Prototype Ajax, som kan forkorte dine javascript / ajax funktioner til faa linier. Det kraever dog at du forstaar hvordan du faar det til at virke med side-reload (kalde en servlet, som henter resultaterne).
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
Kurser inden for grundlæggende programmering

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