Avatar billede 4b4 Nybegynder
29. november 2000 - 13:36 Der er 51 kommentarer og
1 løsning

Udtræk fra database!

Jeg er ved at lave et adresse projekt.
Projektet går ud på at lave et system hvor flere brugere kan have deres eget lille adresse kartotek.

Det jeg har lavet indtil videre er:
login system, som henter oplysninger fra en database. Når man har logged ind gemmes sit login navn i: UserID og kan hentes ved: <% Response.Write \"\" & session(\"UserID\") & \"\" %>.

ideen er så, når de adder en ny person til deres kartotek addes UserID til ID i kartoteket via. en hidden input med variablen userID.

Problemet er så, at jeg ikke ved hvordan man kan hente fra en database, så de eneste udsnit der bliver hentet er de hvori ID=deres UserID!.. Altså alle oplysninger gemmes i et stort kartotek, men med deres eget personlige userid som ID ud for hver gemte data. Og derved kun kan se deres egne gemte date(dem med ID=userid)...

Som sagt ved jeg ikke hvordan man kun udtrækker de data fra(scheduler.mdb Access -> ID .. hvor id er det samme som UserId blev sat til ved login..).. any idears ?

/4b4
Avatar billede sp Nybegynder
29. november 2000 - 13:41 #1
Hvergang brugeren poster i db\'en så sørger du for at personen poster sit id med i en anden kollonne.
Så selecter du alle der har det rigtige id.

/Søren
Avatar billede tulle Nybegynder
29. november 2000 - 13:43 #2
Du kan vælge at anvende sql til at udvælge de felter du vil udtrække og så udskrive dem med asp.
Avatar billede sp Nybegynder
29. november 2000 - 13:47 #3
SQL = \"SELECT noget FROM tablenavn WHERE id=\'\" & id & \"\';\"

Tablenavn skal du ændre til navnet i din database, id er så feltet med brugerens id.

Spørgsmål?
Avatar billede sp Nybegynder
29. november 2000 - 13:47 #4
Har du noget kode eller noget mere konkret?
Avatar billede ellebaek Nybegynder
29. november 2000 - 13:50 #5
<%
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"*****.mdb\")
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN
\'hentet fra HTML dokument
\'formdata indsættes i databasen

addresse = Request.Form(\"addresse\")
Dato = Date()
user = session(\"UserID\")



Id = 1
StrSQL = \"INSERT INTO TNoter(Dato, Addresse, UserID) VALUES (\'\"&Dato&\"\',\'\"&Addresse&\"\',\'\"&UserID&\"\')\"
Set rs = myConn.Execute(strSQL)

%>

nu sætter den values ind i databasen, og et felt ind hvor der står hvad navn der har oprettet den. På denne måde kan du så vælge at det kun er dem med dette bruger navn der kan hente disse data.

-Ellebaek
Icq#29506560
Avatar billede ellebaek Nybegynder
29. november 2000 - 13:52 #6
addresse = Request.Form(\"addresse\")
Dato = Date()
user = session(\"UserID\")

skal selvfølgelig være ...

addresse = Request.Form(\"addresse\")
Dato = Date()
UserID = session(\"UserID\")
-Ellebaek





Avatar billede 4b4 Nybegynder
29. november 2000 - 13:52 #7
tule: ehhm.. dvs:

SQL = \"SELECT noget FROM access WHERE id=\'\" & id & \"\';\"

Da min grupper hedder access.. men ehmm hvordan sætter jeg Where id= <-- skal sættes så ID = userId .. som jeg kan hente.. session(userID)..
ehmm jeg kan ikke rigtig se.. hvordan .. og hvorledes..! :)

/K
Avatar billede tulle Nybegynder
29. november 2000 - 13:54 #8
Hvis du bruger insert into kvæver det at strengen er tom, ellers skal du bruge update, men det er jo ikke til at udtrække data med!
Avatar billede 4b4 Nybegynder
29. november 2000 - 13:54 #9
elleb: ehmm var nu ikke hvordan det skulle sættes ind.. det er jo nemt nok.. bruger bare en hidden input box.. i min form.. med variablen UserID (har jeg lavet..)
det var nu mere hvordan man kun vælger de data hvor id er sat til det samme som userid :)
Avatar billede ubbe Nybegynder
29. november 2000 - 13:57 #10
Du kan vise det ved at skrive det sådan her:

<--------vis ham der logger ind------------>
Sql = \"SELECT * FROM tabelnavn WHERE userid=\"& Session(\"userid\")
Set Sql = Conn.Execute(Sql)

<%=Sql(\"kolonnenavn\")%> ---på pågælende brugerid

<---------viser alle---------------->
Sql = \"SELECT * FROM tabelnavn ORDER BY kolonnenavn\"
Set Sql = Conn.Execute(Sql)

<%Do while not Sql.EOF%>
<%=Sql(\"kolonnenavn\")%>
<%
Sql.Movenext
Loop
%>

håber du forstå
Avatar billede 4b4 Nybegynder
29. november 2000 - 13:58 #11
session(userid) bliver sat til den persons brugerId der logger ind. (forskellige brugerids..).. derefter alt hvad denne person adder til access hvorfi der er en kolonne med navnet ID.. bliver kolonnen id sat til det brugerid som personen loggede ind med..

det eneste jeg sådan set spørger om.. er hvordan man kan hente KUN DE felter ud.. hvor id er sat til det brugerid som er logged ind med! :)

(nu er jeg selv lidt forviret.. må i undskylde) :)

/K
Avatar billede sp Nybegynder
29. november 2000 - 13:58 #12
Du logger ind :

id=Session(\"userid\")

SQL = \"SELECT * FROM Tablenavn WHERE id=\'\" & id & \"\';\"
Avatar billede sp Nybegynder
29. november 2000 - 13:59 #13
id skal din kolonne hedde
Avatar billede ubbe Nybegynder
29. november 2000 - 13:59 #14
Har jeg skrevet en gang
Avatar billede sp Nybegynder
29. november 2000 - 14:01 #15
Ja men han forstod det jo ikke...
Avatar billede ubbe Nybegynder
29. november 2000 - 14:03 #16
Selve udtrækket bliver lavet med

<%=Sql(\"kolonnenavn\")%>

men du skal lige have sat SQL først med \"SELECT\"
Avatar billede 4b4 Nybegynder
29. november 2000 - 14:03 #17
Ja men \"forpokkerda\"..

SQL = \"SELECT * FROM Tablenavn WHERE id=\'\" & id & \"\';\"

userid hedder det man logger ind med.. og jeg kan ikke se den tjekker om id = userid her.. så nej mig ik forstå ! :(

hurtigere og nemmere komm. undernet #userhelp !
Avatar billede tulle Nybegynder
29. november 2000 - 14:04 #18
når du andvender sql skal du helst ikke bruge * til udvælgelse af felterne, men skrive navnene på felterne. På den måde er du sikker på ikke at få for meget med. Ellers er den sql der er skrevet flere steder her på siden korrekt.
Avatar billede ubbe Nybegynder
29. november 2000 - 14:05 #19
ok fortæl mig hvad den session som kommer fra login siden hedder og hvad kolonne den id står i så kan jeg vise dig det! Også hvad selve tabellen hedder.
Avatar billede ubbe Nybegynder
29. november 2000 - 14:07 #20
Fortæl mig lige hvad der kan ske......hvis jeg bruger *..... har aldrig haft problemer desuden er det lettere end at skrive alle kolonne navne.
Hvis man skal have flere ting ud fra db\'en
Avatar billede sp Nybegynder
29. november 2000 - 14:07 #21
Ja men man skal sætte en variabel til utrækningen af databasen

Set User= Conn.execute(SQL)
<%=User(\"kolonnenavn\")%>

En ting er det script du bruger til at logge på. Et andet er det du bruger til at trække de rigtige oplysninger frem.
Avatar billede webbe Nybegynder
29. november 2000 - 14:07 #22
Prøv med

SQL = \"SELECT * FROM Tablename WHERE Userid LIKE \'\"&Request(\"Form-field-name\")&\"\'\"

hvor tablename er din tabel Userid er dit feltnavn i tabellen og Form-field-name er det navn du har givet det felt hvor du taster Userid ind på din login-site!
Avatar billede sp Nybegynder
29. november 2000 - 14:08 #23
ubbe>
Man kan godt brug * det sker der ikke noget ved..
Jeg bruger det selv
Avatar billede ubbe Nybegynder
29. november 2000 - 14:08 #24
<--------vis ham der logger ind------------>
Sql = \"SELECT * FROM tabelnavn WHERE userid=\"& Session(\"userid\")
Set Sql = Conn.Execute(Sql) <--------------------------------------den er der

<%=Sql(\"kolonnenavn\")%> ---på pågælende brugerid

<---------viser alle---------------->
Sql = \"SELECT * FROM tabelnavn ORDER BY kolonnenavn\"
Set Sql = Conn.Execute(Sql) <----------------------------------og der

<%Do while not Sql.EOF%>
<%=Sql(\"kolonnenavn\")%>
<%
Sql.Movenext
Loop
%>

Avatar billede 4b4 Nybegynder
29. november 2000 - 14:08 #25
ubbe:
scheduler.mdb
login kommer fra \'Users\'.. som ved login (brugernavn) bliver sat til \'UserID\' <-- Den \"variabel\" som jeg bruger til genkendelse af ens egne indslag!

access <-- der ens indslag gemmes.
har en kolone \'ID\' hvor hvad der står i \'userid\' bliver gemt.. når man adder noget.. så den kan genkende ens via. brugernavnet(userid)...
Avatar billede tulle Nybegynder
29. november 2000 - 14:08 #26
For at få userid\'et mener jeg du kan gøre således:

dim id
for each id in session.contents
response.write id
next
Avatar billede ubbe Nybegynder
29. november 2000 - 14:09 #27
sp> ok syntes nok, det nemlig meget lettere
Avatar billede tulle Nybegynder
29. november 2000 - 14:09 #28
men jeg er ikke helt sikker:)
Avatar billede sp Nybegynder
29. november 2000 - 14:10 #29
Hvorfor bruge ordet \"like\"???
Det her er sku da ikke en søgefunktion!
Nej det skal ikke være ca. den brugers is men id der er fuldstændig identisk, derfor skal \"like\" ikke bruges.
Brug = istedet

Der er i øvrigt ikke noget i vejen for at bruge * i SQL
Avatar billede webbe Nybegynder
29. november 2000 - 14:11 #30
Har selv brugt LIKE med succes - derfor det forslag!
Avatar billede ubbe Nybegynder
29. november 2000 - 14:12 #31
Sorry 4b4 fattede ingenting.

Skriv det sådan her.

f.eks.

Min session hedder Session(\"etellerandet\") fra login siden
Og kolonne hedder etellerandet
Avatar billede sp Nybegynder
29. november 2000 - 14:12 #32
Nej nej... ikke like....Det ville jeg aldrig gøre...
Avatar billede ubbe Nybegynder
29. november 2000 - 14:13 #33
hvem bruger \"like\"
Avatar billede 4b4 Nybegynder
29. november 2000 - 14:14 #34
agh.. i forvirer hele situationen.. !

Alle felter hvor ID = userid er.. skal udtrækkes.. alle andre skal ikke!!!

Sql = \"SELECT * FROM tabelnavn WHERE userid=\"& Session(\"userid\") <-- virker det ja/nej ?

Avatar billede tulle Nybegynder
29. november 2000 - 14:16 #35
jeg tvivler på at sql vil acceptere ordret session! Prøv at trække id\'en ud først og sæt den ind i stedet for
Avatar billede ubbe Nybegynder
29. november 2000 - 14:16 #36
Det virker for det har JEG skrevet :-)

Husk lige
Set Sql = Conn.Execute(Sql)
Avatar billede ubbe Nybegynder
29. november 2000 - 14:16 #37
DET VIRKER BRUGER DET SELV
Avatar billede sp Nybegynder
29. november 2000 - 14:17 #38
>Sql = \"SELECT * FROM tabelnavn WHERE userid=\"& >Session(\"userid\") <-- virker det ja/nej ?
Jeps
Avatar billede ubbe Nybegynder
29. november 2000 - 14:18 #39
sp>
Det virker for det har JEG skrevet :-)
hehehehe

Avatar billede sp Nybegynder
29. november 2000 - 14:18 #40
tulle> Jeg har set Session i Sql-strengen før. Det er værd at prøve...
Hvis man bare er doven nok;-)
Avatar billede ubbe Nybegynder
29. november 2000 - 14:18 #41
ret fed forvirring vi fik herinde over 35 replyes på ingen tid :-)
Avatar billede tulle Nybegynder
29. november 2000 - 14:19 #42
Det er da godt at DU har skrevet det!
Avatar billede sp Nybegynder
29. november 2000 - 14:19 #43
ubbe>
Ja ja det siger jeg jo heller ikke noget om det ikke gør...
Avatar billede tulle Nybegynder
29. november 2000 - 14:21 #44
sp>
Jeg har bare haft en masse bøvl med sql og navngivning som ikke kunne accepteres.
Avatar billede ubbe Nybegynder
29. november 2000 - 14:21 #45
Man kan også skrive det helt ud

Set Sql = Conn.Execute(\"SELECT * FROM tabelnavn WHERE userid=\"& Session(\"userid\"))
Avatar billede sp Nybegynder
29. november 2000 - 14:21 #46
Selvom det virker er det jo et lidt kluntet.
Avatar billede 4b4 Nybegynder
29. november 2000 - 14:22 #47
*puhhaa*

lidt for forvirende for en \"nybegynder\".. men da Ubbe svarede \"mest\" rigtig.. får han points! Sorry i andre :)

/K A|iVe^
Avatar billede ubbe Nybegynder
29. november 2000 - 14:22 #48
Jeg mener det her forvirre mere end det gavner.......

<%
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"*****.mdb\")
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN
\'hentet fra HTML dokument
\'formdata indsættes i databasen

addresse = Request.Form(\"addresse\")
Dato = Date()
user = session(\"UserID\")



Id = 1
StrSQL = \"INSERT INTO TNoter(Dato, Addresse, UserID) VALUES (\'\"&Dato&\"\',\'\"&Addresse&\"\',\'\"&UserID&\"\')\"
Set rs = myConn.Execute(strSQL)

%>

nu sætter den values ind i databasen, og et felt ind hvor der står hvad navn der har oprettet den. På denne måde kan du så vælge at det kun er dem med dette bruger navn der kan hente disse data.

-Ellebaek
Icq#29506560   

  Fortsat svar fra ellebaek 
29/11 2000 13:52:15    addresse = Request.Form(\"addresse\")
Dato = Date()
user = session(\"UserID\")

skal selvfølgelig være ...

addresse = Request.Form(\"addresse\")
Dato = Date()
UserID = session(\"UserID\")
-Ellebaek






Avatar billede tulle Nybegynder
29. november 2000 - 14:23 #49
Du skal lige huske at afslutte din sql når du bruger en variabel udefra. Det gør du ved at skrive &\"\'\" til sidst
Avatar billede sp Nybegynder
29. november 2000 - 14:23 #50
Tulle> En ting er reserveret ord der skal bruges til noget bestemt i SQL noget andet er at bruge Session(\"noget\") som variabel/værdi.


ubbe> Du glemmer semikolon!
Set Sql = Conn.Execute(\"SELECT * FROM tabelnavn WHERE userid=\"& Session(\"userid\"));
Avatar billede sp Nybegynder
29. november 2000 - 14:24 #51
ubbe\'s virker, men er ikke 100% ret:-)
Avatar billede 4b4 Nybegynder
29. november 2000 - 14:25 #52
Set Sql = Conn.Execute(\"SELECT * FROM access WHERE id=\"& Session(\"userid\"));

!
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