Avatar billede Slettet bruger
25. juni 2007 - 14:53 Der er 54 kommentarer og
1 løsning

Dropdown box med database

Hej,

Jeg forsøger at lave en simple sms sider, hvorpå jeg ønsker en dropdown box med de nummer som der skal være mulighed for at sende til.
Hvordan får jeg min nuværende dropdown box til at kigge i databasen og checke på brugernavn og derefter liste alle brugerne i den dropdown boks?
jeg er åben forslag eller evt anden måde at gøre det på? :)

jeg har følgende kode:

<% if mode = "SMS" then
                       
                        if session("brugernavn") = "" then
                            Response.Redirect("index.asp?mode=login")
                        end if
                       
                        Set rs = Server.CreateObject("ADODB.Recordset")
                        sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
                        rs.open sql, conn, 1, 3
                           
                        %>               
<form action="123" "method="POST">
    <table border="1" width="260" id="table1">
        <tr>
            <td width="244" colspan="2" bgcolor="#C0C0C0">
            <p align="center">SMS Service</td>
        </tr>

        <input type="hidden" name="username" value="123">
        <input type="hidden" name="password" value="123">
<%       
'Open connection
        set ani = Server.CreateObject("ADODB.Recordset")
        'ani.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=items.mdb"
        ani.Open "Categories", "DBQ=" & Server.Mappath("items.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
       
%>
<p>
  <select name="Category">
    <%     Do While not ani.EOF %>
    <option value="<%=ani("Category")%>"> <%=ani("Category")%></option>
    <% ani.MoveNext
    Loop
    ani.Close
    set ani = Nothing
    %>

  </select>
</p>
        <tr>
            <td width="96">Modtager:</td>
            <td width="148"><input type="text" name="recipient" </td>
        </tr>

        <tr>
            <td width="96">Besked</td>
            <td width="148"><input type="text" name="message" size="20"></td>
        </tr>
       
        <tr>
            <td width="96">Afsender</td>
            <td width="148"><input type="text" name="from" value=<%=Rs("mobilnr")%>> </td>
        </tr>
                           
        </table>
        <p><input type="submit" value="Send SMS" name="B1"><input type="reset" value="Reset" name="B2"></p>
                </form>
   
                <%
                rs.close
                set rs = nothing
                end if %>

               
            <br><br></font>
        </td>
    </tr>
   
    <tr>
        <td align="center">
            <font class="small">
            </font>
        </td>
    </tr>
</table>
</body>
</html>
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:02 #1
Hvad er der galt med den nuværende måde at gøre det på?
Avatar billede Slettet bruger
25. juni 2007 - 15:15 #2
den nuværende vises ikke i modtager feltet af en eller anden grund,
har forsøgt at skrive den ind der...
Avatar billede Slettet bruger
25. juni 2007 - 15:24 #3
Hvis den vil vise det valgt i dropdown boksen i modtager feltet, problemet naturligvis løst. men det kan jeg desværre ikke få til at spille, nogle forslag? :)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:30 #4
Jeg kigger på det, om ca 10 minutter.. er lige igang med at besvare 2-3 andre spørgsmål.. :-)
Avatar billede Slettet bruger
25. juni 2007 - 15:31 #5
cool, mange tak :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:47 #6
Der går lige lidt mere tid.. der er en anden bruger, ikke engang en spørger, der bare spilder min tid..

Beklager ventetiden..
Avatar billede Slettet bruger
25. juni 2007 - 15:48 #7
helt iorden, Jeg venter spændt :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:59 #8
Godt så.. så fik jeg noget tid..

Modtager-feltet? Du mener vel ikke?:

            <td width="96">Modtager:</td>
            <td width="148"><input type="text" name="recipient" </td>

Den skulle gerne være der hele tiden..?
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:00 #9
Ahh.. lagde lige mærke til en fejl..

Du mangler at afslutte input-elementet med et ">": <input type="text" name="recipient" </td>

Sådan: <td width="148"><input type="text" name="recipient"> </td>


Er der stadig fejl?
Avatar billede Slettet bruger
25. juni 2007 - 16:07 #10
Det jeg egentlig vil, at have en dropdown boks.
i Dropdown boksen skal man kunen vælge et navn og så skal den automatisk indsætte det tilhørende telefon nummer som står i databasen (access)

Nummert skal sættes ind i modtager feltet

Kan du følgede mig?
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:30 #11
For at være sikker:

1)  <select name="Category">
Denne indeholder en liste med ens kontakter, dvs. en adressebog.

2) Valg af kontakt
Når man har valgt kontakten, skal kontaktens nummer skrives i modtager-feltet, som hedder "recipient"

Er det korrekt?
Avatar billede Slettet bruger
25. juni 2007 - 16:33 #12
det er korrekt
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:43 #13
Ok.. kigger på om lidt :-)
Avatar billede Slettet bruger
25. juni 2007 - 16:49 #14
cool :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:59 #15
Ok.. Man kan gøre det på 2 måde:

1) Man henter alle numrene ind i en Array i JavaScript, hvilket betyder den loader lidt mere, men tilgengæld bliver man på samme side, når man vælger personen i dropdown boksen

2) Man henter kun personerne ind i dropdown boksen, hvilket går hurtigere, men tilgengæld skal man forbi serveren igen, når man har valgt en person i dropdown boksen


Hvilken fremgangsmåde foretrækker du?
Avatar billede Slettet bruger
25. juni 2007 - 17:23 #16
måde nr 2 ville passe ganske fint :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 17:51 #17
Ok. Kigger lige på det :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 17:54 #18
Hmm.. Jeg laver normalt siden sådan, at den submitter til samme side..

Men jeg kan se, at du bruger action="123"..

Kan jeg få dig til at lave et check på "recipient"-feltet, og se om det er tomt? Hvis det er, sendes brugeren tilbage til formen..

Så vil jeg checke om Category er valgt samtidigt med recipient er tomt, hvilket betyder at brugeren har valgt i person i listen, og der nu skal findes et telefon-nummer..
Avatar billede Slettet bruger
25. juni 2007 - 23:10 #19
Recipient-feltet er tomt.
Hvis jeg vælger en i Category, så er recipent tomt.

Det jeg ønsker er så at den skal sætte nummert på den man har valgt ind
Avatar billede Slettet bruger
25. juni 2007 - 23:32 #20
Hvis det er nemmere med jave måden er jeg da også åben over for den? :)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 23:36 #21
Jeg har bare haft lidt travl.. her på eksperten.dk og i in real life..

Jeg vil se om jeg ikke kan få det lavet, engang i morgen eftermiddag..
Avatar billede Slettet bruger
25. juni 2007 - 23:44 #22
Jeg er selv først nået hjem nu :)
så jeg venter med spænding til imorgen :=)
Avatar billede thesurfer Nybegynder
26. juni 2007 - 16:21 #23
Det er meget nemmere med JavaScript-metoden.. :-)
Jeg tror ikke rigtigt at man kan mærke forskel, med mindre at man har en langsom internetforbindelse..

Jeg vil lave JavaScript-delen, og så kan du vurdere, om du synes om den..
Avatar billede Slettet bruger
26. juni 2007 - 16:22 #24
oki :)
Avatar billede thesurfer Nybegynder
26. juni 2007 - 16:33 #25
Jeg har lavet følgende ændring:


1) Put denne kode i mellem <head> og </head>:

<script type="text/JavaScript" language="JavaScript">
function skift(formen,kontaktoplysningerne)
{
oplysning = kontaktoplysningerne.split("|");
navnet_paa_kontakt_personen = oplysning[0];
nummeret_paa_kontakt_personen = oplysning[1];
formen.recipient.value = nummeret_paa_kontakt_personen; // jeg går ud fra, at det er nummeret der skal vises..?
}
</script>


2) Din Select-linie skal se sådan ud:

<select name="Category" onchange="skift(this.form, this.value)">


3) Din ASP-loop skal se sådan ud:

    <%    Do While not ani.EOF %>
    <option value="<% response.write ani("NavnetPaaKontaktPersonen") & "|" & ani("NummeretPaaKontaktPersonen") %>"> <%=ani("NavnetPaaKontaktPersonen")%></option>
    <% ani.MoveNext
    Loop
    ani.Close
    set ani = Nothing
    %>


Som giver følgende resultat:

  <select name="Category" onchange="skift(this.form, this.value)">
  <option value="">-- kontaktpersoner --</option>
  <option value="Hans Hansen|12345678">Hans Hansen</option>
  <option value="Jense Jensen|87654321">Jens Jensen</option>
  <option value="Ole Olesen|12348765">Ole Olesen</option>
  </select>


Læg mærke til, at jeg hiver både navn OG nummer ud af databasen..

Hvis du kun har navn ELLER nummer i databasen, sig lige til.. så retter jeg koden.
Avatar billede thesurfer Nybegynder
26. juni 2007 - 16:35 #26
Forresten, hvis du har både navn OG nummer i databasen, skal du lige rette disse, så de passer:

ani("NavnetPaaKontaktPersonen")
ani("NummeretPaaKontaktPersonen")

Husk at ani("NummeretPaaKontaktPersonen") står der 2 gange, og ikke kun 1.

Spørg endeligt, hvis du har spørgsmål.
Avatar billede thesurfer Nybegynder
26. juni 2007 - 16:48 #27
Hvad indeholder kolonnen "Category" egentligt..?
Avatar billede Slettet bruger
26. juni 2007 - 18:43 #28
Category er omdøbt til Phoenebook

Phonebook indholder: Navn, nummer, brugernavn

Brugernavn er den bruger som kontakterne høre til
Avatar billede thesurfer Nybegynder
27. juni 2007 - 01:36 #29
Hmm... 1 kolonne indeholder 3 forskellige oplysninger?

Hvordan er indholdet af kolonnen sat op? Giv et eksempel.
Avatar billede Slettet bruger
27. juni 2007 - 08:11 #30
Nej Nej :)

Phonebook indeholder felterne, Navn, Nummer og brugernavn. Hvert felt har så eks følgende oplysninger:

Eks:
Navn: John Doe
Nummer: +4512345678
Brugernavn: Netguard3
Avatar billede thesurfer Nybegynder
27. juni 2007 - 15:44 #31
Se, så begynder det at ligne noget..

Det der forvirrede mig, var følgende:

<option value="<%=ani("Category")%>"> <%=ani("Category")%></option>

Her virker det som om, at "Category" er et felt.. men ifølge 26/06-2007 18:43:20 og 27/06-2007 08:11:19, er "Category" en tabel..

Hvis Category / Phonebook er en tabel, giver dette ikke mening: ani("Category")


Men anyways:

- erstat ani("NavnetPaaKontaktPersonen") med ani("Navn")
- erstat ani("NummeretPaaKontaktPersonen") med ani("Nummer")


Virker det så?
Avatar billede Slettet bruger
27. juni 2007 - 16:51 #32
Tager lige et kig senere i aften :)
Avatar billede Slettet bruger
27. juni 2007 - 21:22 #33
jeg synes desværre ikke at jeg kan få det til at spille :(

Kan jeg lokke dig til at lave en dummy side, hvorpå det køre?
Avatar billede thesurfer Nybegynder
27. juni 2007 - 21:30 #34
Det kan du vel godt.. :-)
Jeg ser lige om jeg kan nå at lave det nu/om lidt.. ellers bliver det i morgen eftermiddag..
Avatar billede Slettet bruger
27. juni 2007 - 22:02 #35
Jeg takker endnu en gang :-)
Avatar billede thesurfer Nybegynder
28. juni 2007 - 20:02 #36
Jeg skal lige til at lave database, så jeg kan lave testen, og skal lige bruge nogle oplysninger..

I din database, har du 3 tekstfelter: Navn, Nummer, Brugernavn

Ved hvert nummer, står der hvem der skal kunne se oplysningerne, korrekt?
Det er det der står i brugernavn..

Eksempel:

Navn: John Doe
Nummer: +4512345678
Brugernavn: Netguard3

Navn: Hans Hansen
Nummer: +4587654321
Brugernavn: Netguard3

Navn: Jens Jensen
Nummer: +4534543233
Brugernavn: theSurfer

Hvis du er logget ind, kan du ikke se "Jens Jensen", da kontaktpersonen tilhører brugernavnet "theSurfer"


Er det korrekt?
Avatar billede Slettet bruger
28. juni 2007 - 21:18 #37
Det er korrekt :)
Avatar billede thesurfer Nybegynder
28. juni 2007 - 23:49 #38
Simpelt eksempel.. men spørg endeligt, hvis der er noget du ikke forstår:

<%
option explicit
%>
<html>
<head>
<script type="text/JavaScript" language="JavaScript">
function skift(formen,kontaktoplysningerne)
{
    formen.recipient.value = "";
    oplysning = kontaktoplysningerne.split("|");
    if (oplysning.length == 2)
    {
        navnet_paa_kontakt_personen = oplysning[0];
        nummeret_paa_kontakt_personen = oplysning[1];
        formen.recipient.value = nummeret_paa_kontakt_personen; // jeg går ud fra, at det er nummeret der skal vises..?
    }
}
</script>
</head>
<body onload="f=document.forms[0]; skift(f, f.kontaktperson.value)">
<%
dim conn, dsn, rs, sql

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db1.mdb")
Conn.Open DSN

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
rs.open sql, conn, 1, 3

%>
<form action="123" "method="POST">
<input type="text" name="recipient" value="">
<br>
<select name="kontaktperson" onchange="skift(this.form, this.value)">
<%
if rs.bof or rs.eof then
%>
<option value="">-- Ingen kontakter --</option>
<%
else
    dim navn, nummer
    do while not rs.eof
    navn = rs("navn")
    nummer = rs("nummer")
%>
<option value="<%=navn & "|" & nummer%>"><%=navn%></option>
<%
    rs.movenext
    loop

end if

rs.close
conn.close
set rs = nothing
set conn = nothing
%>
</select>
</form>

</body>
</html>
Avatar billede Slettet bruger
01. juli 2007 - 09:20 #39
Super, mange tak, og tak for tålmodigheden :=)
Laver du lige et svar så du kan få points :=)
Avatar billede Slettet bruger
01. juli 2007 - 16:51 #40
synes desværre ikke lige det spiller, den vise ikke noget i felterne, de er helt blanke.

nogle forslag? hehe
Avatar billede Slettet bruger
01. juli 2007 - 19:18 #41
Jeg har lagt min sourcekode her, hvis du kan lokkes til at tage et kig;
www.aarhus-air.net/source.txt

Håber du har tid og lyst :)
Avatar billede thesurfer Nybegynder
01. juli 2007 - 20:05 #42
Du bruger 2 forskellige database-filer?:

- db1.mdb
- community.mdb

Hvilken af dem, indeholder tabellen med brugerne?


Pas på med at bruge samme variabel ("rs"), til samtlige recordset..

Du opretter rs-objektet her:

                        'Henter brugerens profil
                        Set rs = Server.CreateObject("ADODB.Recordset")
                        sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
                        rs.open sql, conn, 1, 3


Men overskriver den vist her:


Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"
rs.open sql, conn, 1, 3

%>
<form action="123" "method="POST">



Hvis du har mulighed for det, smid et link til siden online..

Jeg vil gerne se hvordan outputtet/HTML koden (den fortolkede kode) ser ud, og evt fejlmeddelelser.
Avatar billede Slettet bruger
01. juli 2007 - 21:13 #43
link til siden: http://www.aarhus-air.net/AAA/index.asp
source http://www.aarhus-air.net/AAA/index.txt
database: community.mdb
link til database: http://www.aarhus-air.net/AAA/community.zip

Jeg har oprettet en brugeren:
username: test
password: test
Avatar billede thesurfer Nybegynder
01. juli 2007 - 21:34 #44
Jeg har nu oprettet en kolonnen, med navnet "idTilhorer".
idTilhorer er af typen "tal".
idTilhorer kommer til at indeholde brugerId på den bruger, der må se se personens oplysninger.

Jeg har også ændret sql-linien:

sql = "select * from bruger where brugernavn = '" & Session("brugernavn") & "'"

til:

sql = "select * from bruger where idTilhorer = (select brugerId from bruger where brugernavn = '" & Session("brugernavn") & "')"

Du bruger også andre navne til kolonnerne, end jeg gjorde, så jeg har rettet dem fra:

    navn = rs("navn")
    nummer = rs("nummer")

til

    navn = rs("brugerNavn")
    nummer = rs("Tlfnr")



Det er også blevet svært at holde styr på dine rs og conn objekter..

Så disse rs og conn linier skal muligvis slettes:

                <%
                rs.close
                set rs = nothing
                end if %>

</html>
<%
'Lukker connection
conn.close
set conn = nothing
%>
Avatar billede thesurfer Nybegynder
01. juli 2007 - 21:35 #45
Hvis alle skal kunne se alles oplysninger (navn og telefonnummer), skal du lige sige til.. så skal koden nemlig ændres lidt..
Avatar billede thesurfer Nybegynder
01. juli 2007 - 21:37 #46
Hvis alle skal kunne se alles oplysninger (navn og telefonnummer), skal sql-linien være:

sql = "select brugerNavn, Tlfnr from bruger"
Avatar billede Slettet bruger
01. juli 2007 - 21:47 #47
synes jeg har forsøgt at lave de nødvendige tilretninger, men intet ser umiddelbart ud til at hjælpe?

bør linjen >-- Ingen kontakter -- ikke komme frem, hvis det fungere og der ikke er nogle kontakter at vise?
Avatar billede thesurfer Nybegynder
01. juli 2007 - 21:52 #48
Jeg ved ikke hvordan din kode ser ud nu, men min kode virker, og ser sådan ud:

<body onload="f=document.forms[0]; skift(f, f.kontaktperson.value)">
<%
dim conn, dsn, rs, sql

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("community.mdb")
Conn.Open DSN

Set rs = Server.CreateObject("ADODB.Recordset")


' Hvis alle må se ALLE, brug denne SQL linie:
'sql = "select brugerNavn, Tlfnr from bruger"

' Hvis man kun må se dem, man SELV har tilføjet, brug denne SQL linie:
sql = "select * from bruger where idTilhorer = (select brugerId from bruger where brugernavn = '" & Session("brugernavn") & "')"

response.write sql ' denne linie skal slettes efters tests!!
rs.open sql, conn, 1, 3
%>
<form action="123" "method="POST">
<input type="text" name="recipient" value="">
<br>
<select name="kontaktperson" onchange="skift(this.form, this.value)">
<%
if rs.bof or rs.eof then
%>
<option value="">-- Ingen kontakter --</option>
<%
else
    dim navn, nummer
    do while not rs.eof
    navn = rs("brugerNavn")
    nummer = rs("Tlfnr")
%>
<option value="<%=navn & "|" & nummer%>"><%=navn%></option>
<%
    rs.movenext
    loop

end if

rs.close
conn.close
set rs = nothing
set conn = nothing
%>
Avatar billede thesurfer Nybegynder
01. juli 2007 - 22:00 #49
Hvordan er det lige, med at se andre personer oplysninger?

1) Alle må se alles navn og nummer

2) Man må kun se dem man SELV har tilføjet
Avatar billede Slettet bruger
01. juli 2007 - 22:00 #50
Jeg er vist nødt til at få renset ud i min kode, og så lave det hele igen, så jeg kan få sat det rigtig op, på dit tidligere test eksemple fungere alt jo... :)
Avatar billede thesurfer Nybegynder
01. juli 2007 - 22:05 #51
01/07-2007 22:00:42 :-)
Avatar billede Slettet bruger
01. juli 2007 - 22:24 #52
2) Man må kun se dem man SELV har tilføjet

laver du et svar så du kan få points? :=)
Avatar billede thesurfer Nybegynder
01. juli 2007 - 22:37 #53
Yes :-)

Husk at rette koden til, så systemet automatisk tilføjer brugerId til idTilhorer, når vedkommende tilføjer en kontaktperson..

Jeg går ud fra, at du har fået det til at virke.. :-)
Ellers må du lige sige til.. :-)
Avatar billede Slettet bruger
01. juli 2007 - 22:39 #54
jeg har ikke umiddelbart fået det til at virke, men har fået test eksemplet til at køre, så det er forhåbenlig bare et spørgsmål om tid ;-) hæhæ
Avatar billede thesurfer Nybegynder
01. juli 2007 - 22:59 #55
Det kan være at det kommer til at virke, når du har fået ryddet op.. :-)
Ellers må du lige sige til..



Nu hvor du er igang med noget oprydning...

Husk at strukturen i HTML kode, er:

DOCTYPE INDSÆTTES HER
<html>
<head>
<title>Titlen på siden</title>
Evt meta
Evt scripts
Evt stylesheets
</head>
<body>
indhold her
</body>
</html>

Der må ikke være flere forekomster af html, head eller body.. og alt indholdet skal være i mellem <body> og </body>
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