webForumDet fria alternativet

arbeta med 2 olika tabeller i en databas?

ASP

18 svar · 376 visningar · startad av M.Cheraghi

Medlem sedan juli 20015 107 inlägg
Frågan#1

Tjenare..

jag har ett litet dilemma!
jag har en tabell där alla som är medlemmar står.
sen har jag en till tabell i databasen där "systemmedelanden "står! så vill jag skicka ett medelande till alla andvändare! varsitt medelande till varje medlem!
men jag har inte kommit i underfund med hur jag ska göra för att få det och fungera!

altså jobba med 2 tabeller

/MVH

Medlem sedan dec. 200012 464 inlägg
#2
set rs = "select message,username from members,messages"
while not rs.eof
'skicka
rs.movenext
wend

Hur gör du sen så att du inte skickar allt en gång till? Tra du bort dom eller har du något statusfält?

Medlem sedan juli 20015 107 inlägg
#3

LarsG skrev:

set rs = "select message,username from members,messages"
while not rs.eof
'skicka
rs.movenext
wend

Hur gör du sen så att du inte skickar allt en gång till? Tra du bort dom eller har du något statusfält?

h
mm jag hade tänkt att så här

[members]
- username

[systemmess]
- till
- medelande
- status

dvs hämta ut alla andvändarnamnen, å loopa medelandet i systemmess tabellen i databasen..

* till = motagaren
* medelande = medelandet om ni inte listat ut det :P
* status = om det är läst eller in (0 eller 1)

Medlem sedan dec. 200012 464 inlägg
#4

Jaha det var ju en annan sak.

Innehåller till och username samma värde eller hur är tabellerna relaterade?

Medlem sedan juli 20015 107 inlägg
#5

LarsG skrev:

Jaha det var ju en annan sak.

Innehåller till och username samma värde eller hur är tabellerna relaterade?

precis... username (ligger i members ) innehåller andvändarnamn, och till (ligger i systemmess) ska innehålla vem medelandet ska gå till... dvs dem ska innehålla samma värde

å jag vill loopa medelandet till alla andvändare, som finns i members tabellen.

//MVH

R) fixade till lite särskrivning.. :P

Medlem sedan dec. 20003 563 inlägg
#6

Detta skapar ett nytt meddeande till varje medlem

Set Rs = conn.execute("SELECT username FROM members")
Do until Rs.EOF
conn.execute("INSERT INTO systemmess (till, meddelande, status) VALUES(" & Rs("username") & ", 'mess', 'status')")
Rs.MoveNext
Loop
Medlem sedan dec. 200012 464 inlägg
#7

Vad är det då för information du behöver från tabellen members? Email kanske eller vad menar du mes skicka?

'öppna databas
q = "select medelande, till,emailadress " & _
" from members m inner join systemmess s" & _
" on m.username = s.till " & _
" where status = 1 "
set rs = connect.execute(q)

while not rs.eof
  on error resume next
 'skicka mail
  on error goto 0
 if err.number <> 0 then
    'hantera felet. Hur vill du ha det?
 else
    connect.execute "update systemmess set status = 0 where till = '" & till & "'",,128
 end if
  rs.movenext
wend
'stäng
Medlem sedan juli 20015 107 inlägg
#8

LarsG skrev:

Vad är det då för information du behöver från tabellen members? Email kanske eller vad menar du mes skicka?

'öppna databas
q = "select medelande, till,emailadress " & _
" from members m inner join systemmess s" & _
" on m.username = s.till " & _
" where status = 1 "
set rs = connect.execute(q)

while not rs.eof
  on error resume next
 'skicka mail
  on error goto 0
 if err.number <> 0 then
    'hantera felet. Hur vill du ha det?
 else
    connect.execute "update systemmess set status = 0 where till = '" & till & "'",,128
 end if
  rs.movenext
wend
'stäng

det är ett community för vår skola, o jag ska inte hämta email, utan messet ska skickas internt som du vet i communitys :P
bara hämta andvändarnamn, allihoppa från tabellen members samt loopa in dem i "systemmess" tabellen tillsammans med medelandet som skall skickas ut till samtliga personer som finns under members

Medlem sedan juli 20015 107 inlägg
#9

nehepp, inget svar här inte, LarsG kanske glömt bort tråden?

Medlem sedan dec. 20003 563 inlägg
#10

Hmm. Hur var mitt exempel fel?

Medlem sedan juli 20015 107 inlägg
#11

cyprys skrev:

Hmm. Hur var mitt exempel fel?

OMG, jag måste till synsam snarast :P jag såg inte ens att du hade svarat :) ber så hemst mycket om ursäkt fördet!!!

Medlem sedan juli 20015 107 inlägg
#12

okej nu har jag pulat lite med din kod Cyprys, men jag får ett error hur jag än vrider och vänder på det

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i INSERT INTO-uttryck.
/weborg/test.asp, line 13

och med koden... rad 13 är bold

<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/members.mdb")&";"

Set Rs = conn.execute("SELECT username FROM members")
Do until Rs.EOF

user = RS("username")
read = "0"
tid = now
mess = "hej gay"

[b]conn.execute("INSERT INTO systemmess (till, medelande, time, read) VALUES( '"&user&"', '"&mess&"', "&tid&", "&read&")")[/b]
Rs.MoveNext
Loop

RS.close
Conn.close
%>
Medlem sedan dec. 20003 563 inlägg
#13

Kan tänka mig att user är integer-kolumn

conn.execute("INSERT INTO systemmess (till, medelande, time, read) VALUES("&user&", '"&mess&"', "&tid&", "&read&")")
Medlem sedan juli 20015 107 inlägg
#14

jag får samma fel :( på samma rad.. även fast jag tog bort '-tecken från user

men ska det inte se ut så här???

Set Rs = conn.execute("INSERT INTO systemmess (till, medelande, time, read) VALUES('"&user&"', '"&mess&"', "&tid&", "&read&")")
Medlem sedan dec. 20003 563 inlägg
#15

Hmm. Testa att sätta [runt] time och read.. Tror att de är ord man helst inte ska använda.

Medlem sedan juli 20015 107 inlägg
#16

cyprys skrev:

Hmm. Testa att sätta [runt] time och read.. Tror att de är ord man helst inte ska använda.

hur menar du?!?

men ska det inte vara

SET RS = conn.execute. på insert strängen?

Medlem sedan dec. 20003 887 inlägg
#17
conn.execute "INSERT INTO systemmess (till, medelande, [b][time][/b], [b][read][/b])" & _
" VALUES('"& user &"', '"& mess &"', "& tid &", "& read &")", , 128

/r: Just det... inget Set Rs...

Medlem sedan juni 200032 967 inlägg
#18

Nej, inte Set RS = .
Vi ska ju inte ha någon data tillbaka, då ska vi inte heller skapa något recordset.

Medlem sedan juli 20015 107 inlägg
#19

pustar ut... nu fungerar det! över lycklig... wooohooo =)

skriver ut en fullständig kod för dem som andvänder dökfunktionen nångång

<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/members.mdb")&";"

Set Rs = conn.execute("SELECT username FROM members")
Do until Rs.EOF

user = RS("username")
read = "0"
tid = now
mess = "hej gay"

conn.execute("INSERT INTO systemmess (till, medelande, [tid], [status])" & _
" VALUES('"&user&"', '"&mess&"', '"&now&"', "&read&")")

Rs.MoveNext
Loop

RS.close
Conn.close
%>
255 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)