Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-17 17:01:46 - Johan Svensson, i forum asp - allmänt, Tråden har 17 Kommentarer och lästs av 556 personer

Hej!

Jag jobbar med en sida på vilken det skall finnas ett internt mailsystem (community mail). På en sida kan man även lägga till användare som vänner eller som ovänner. Väljer man att lägga till en användare som vän så läggs användarens id in i tabellen medlemmar.favorit_users väljer man att lägga till användaren i ovännslistan så läggs idnummret in i tabellen medlemmar.blocked_users. Är tabellen tom när man lägger till användare så läggs bara idnummret till annars läggs även ett komma till.

De användare som man har som ovänner skall inte kunna skriva mail till en, de skall altså blockas.

Systemet för detta har jag hittat i ett exempel här ute på nätet. Men nu när jag gör om det från Access till MySQL och lite andra ändringar så fungerar det inte riktigt längre.

asp-dokumentet jag har problem med är det som när man valt att skicka till en medlem skall se efter om den medlem som man vill skicka till har ens eget idnummer i sin ovännstabell.



Så här såg det orginal-dokument ut som jag laddat hem:


<code>
<%
Dim strReplyTo
Dim arrReplyTo
Dim I

' #### BEGIN ## Find selected users and check if they have the current user on the blocked list ####
Accepted_Users=""
Blocked_Users=""
Set rs = Server.CreateObject("ADODB.RecordSet")
SQL_Str="SELECT User_ID, Blocked_Users FROM Users WHERE User_ID IN ("&Session("Mail_NewMail_Namelist")&") ORDER BY Username"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("MailSystem.mdb")
rs.Open SQL_Str, strDSN, 1, 1
If Not rs.EOF Then
alldata=rs.getrows
rs.close
Set rs=nothing
numcols=ubound(alldata,1)
numrows=ubound(alldata,2)
For rowcounter=0 TO numrows
Str_User_ID=alldata(0,rowcounter)
Str_Blocked_Users=","&alldata(1,rowcounter)&","
If InStr(Str_Blocked_Users,","&Str_User_ID&",")<>0 Then
Blocked_Users=Blocked_Users&Str_User_ID&","
else
Accepted_Users=Accepted_Users&Str_User_ID&","
end if
Next
else
rs.close
Set rs=nothing
end if
If Not Accepted_Users="" Then Accepted_Users=Left(Accepted_Users,Len(Accepted_Users)-1) end if
If Not Blocked_Users="" Then Blocked_Users=Left(Blocked_Users,Len(Blocked_Users)-1) end if
' #### BEGIN ## Find selected users and check if they have the current user on the blocked list ####

' #### BEGIN ## Send mail to those users who doesn't have current user on blocked list ####
If Not Accepted_Users="" Then
arrReplyTo = Split(Accepted_Users, ",", -1, 1)
For I = LBound(arrReplyTo) To UBound(arrReplyTo)
Set rs = Server.CreateObject("ADODB.Recordset")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("MailSystem.mdb")
rs.Open "Mails", strDSN, 3, 4
rs.AddNew
rs("Receiver_ID") = arrReplyTo(I)
rs("Sender_ID") = Session("Mail_User_ID")
rs("Status") = Session("Mail_NewMail_Status")
rs("Sendt_Date_Time") = FormatDateTime(Date(), 0) & " " & FormatDateTime(Time(), 3)
rs("Folder") = 1
rs("Subject") = Session("Mail_NewMail_Subject")
rs("Message") = Session("Mail_OrginalMessage")
rs.UpdateBatch
rs.close
set rs=nothing
Next
end if
' #### BEGIN ## Send mail to those users who doesn't have current user on blocked list ####

Session("Mail_NewMail_Subject")=""
Session("Mail_NewMail_Status")=""
Session("Mail_OrginalMessage")=""

Response.Redirect "Mail_Mail_Sendt.asp?NotSentTo='" & Blocked_Users&"'"
%>
</code>





Men för att få det att fungera till min sida så har jag varit och ändrat lite.
Jag har dock inte fått det som ligger mellan de två

"<code>' #### BEGIN ## Find selected users and check if they have the current user on the blocked list ####</code>"

att fungera. Det går nämligen att skicka till användare som har en själv som ovän.

Jag tror att det är så att det där "Str"-som mycket börjar på i koden att inte det funkar med MYSQL. Men jag vet ej hur jag skall ändra för att få det att funka.

Så här ser den koden jag nu använder ut, men den fungerar som sakt inte som den skall:


<code>
<%
Dim strReplyTo
Dim arrReplyTo
Dim I

' #### BEGIN ## Find selected users and check if they have the current user on the blocked list ####
Accepted_Users=""
Blocked_Users=""

Set rs = Server.CreateObject("ADODB.RecordSet")
SQL_Str="SELECT id, Blocked_Users FROM medlemmar WHERE id IN ("&Session("Mail_NewMail_Namelist")&") ORDER BY Username"
strDSN = "lumba"
rs.Open SQL_Str, strDSN, 1, 1
If Not rs.EOF Then
alldata=rs.getrows
rs.close
Set rs=nothing
numcols=ubound(alldata,1)
numrows=ubound(alldata,2)
For rowcounter=0 TO numrows
Str_User_ID=alldata(0,rowcounter)
Str_Blocked_Users=","&alldata(1,rowcounter)&","
If InStr(Str_Blocked_Users,","&Str_User_ID&",")<>0 Then
Blocked_Users=Blocked_Users&Str_User_ID&","
else
Accepted_Users=Accepted_Users&Str_User_ID&","
end if
Next
else
rs.close
Set rs=nothing
end if
If Not Accepted_Users="" Then Accepted_Users=Left(Accepted_Users,Len(Accepted_Users)-1) end if
If Not Blocked_Users="" Then Blocked_Users=Left(Blocked_Users,Len(Blocked_Users)-1) end if
' #### BEGIN ## Find selected users and check if they have the current user on the blocked list ####


' #### BEGIN ## Send mail to those users who doesn't have current user on blocked list ####
If Not Accepted_Users="" Then
arrReplyTo = Split(Accepted_Users, ",", -1, 1)
For I = LBound(arrReplyTo) To UBound(arrReplyTo)

Dim objConn
Dim strSQL
Dim rs


Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "lumba"


strSQL = "INSERT INTO mails SET Receiver_ID = '"&arrReplyTo(I)&"', Sender_ID = '"&Session("id")&"', Status = '"&Session("Mail_NewMail_Status") &"', Sendt_Date_Time = '"&FormatDateTime(Date(), 0) & " " & FormatDateTime(Time(), 3)&"', Folder = 1, Subject = '"&Session("Mail_NewMail_Subject")&"', meddelande = '"&Session("Mail_OrginalMessage")&"'"

objConn.Execute(strSQL)


Set rs = Nothing

objConn.Close
Set objConn = Nothing


Next
end if
' #### BEGIN ## Send mail to those users who doesn't have current user on blocked list ####

Session("Mail_NewMail_Subject")=""
Session("Mail_NewMail_Status")=""
Session("Mail_OrginalMessage")=""

Response.Redirect "Mail_Mail_Sendt.asp?NotSentTo='" & Blocked_Users&"'"
%></code>



Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-17 22:33:58 - Andreas Hillqvist

Du är allt ett hopplöst fall. Tycker om dig ändå. ;O)<br>
<br>
Har gjort en lite anorlunda variant. Där jag filtrerar i frågan. Själv skulle jag gjort en tabell för Blocked:
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "#" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "#"
Else
SQLDate = "Null"
End If
End Function

Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function

Function SQLNumber(Value)
If IsNumeric(Value) Then
SQLNumber = Replace(Value, ",", ".")
Else
SQLNumber = "Null"
End If
End Function


Dim rs
Dim con
Dim strSQL
Dim Blocked_Users
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("MailSystem.mdb")
Set con = Server.CreateObject("ADODB.Connection")
con.Open strDSN

strSQL = "SELECT User_ID" & vbCrLf & _
"FROM Users" & vbCrLf & _
"WHERE User_ID IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
"',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, con
If Not rs.EOF Then
Blocked_Users = rs.GetString(, , , ",")
End If
rs.Close


strSQL = "INSERT INTO Mails (Receiver_ID, Sender_ID, Status, Sendt_Date_Time, Folder,Subject, Message" & vbCrLf & _
"SELECT User_ID, " & vbCrLf & _
SQLNumber(Session("Mail_User_ID")) & ", " & vbCrLf & _
SQLNumber(Session("Mail_NewMail_Status")) & ", " & vbCrLf & _
SQLDate(Now()) & ", " & vbCrLf & _
"1, " & vbCrLf & _
SQLText(Session("Mail_NewMail_Subject")) & ", " & vbCrLf & _
SQLText(Session("Mail_OrginalMessage")) & ", " & vbCrLf & _
"FROM Users" & vbCrLf & _
"WHERE User_ID IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
" NOT ',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'

con.Execute strSQL

con.Close

Session("Mail_NewMail_Subject") = ""
Session("Mail_NewMail_Status") = ""
Session("Mail_OrginalMessage") = ""

Response.Redirect "Mail_Mail_Sendt.asp?NotSentTo='" & Blocked_Users & "'"
%>
</code>


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-17 23:51:47 - Johan Svensson

Tackar för att du hjälper en sådan liten stackare som mig :-)
...Det är guld värt.

Får felmeddelanden när jag kör sidan (pilen pekar på slutet av raden):

Kompileringsfel i Microsoft VBScript fel '800a0409'

Oavslutad strängkonstant

/sidan/skicka_mail.asp, rad 38

"',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'
--------------------------------------------------------------------------------^

Även i den andra select-strängen verkar det vara samma fel. Jag försökte sätta dit några extra fnuttar men fick inte till det.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 00:03:35 - Andreas Hillqvist

Det borde du kuna lösa själv:
<code>
" NOT ',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'"

</code>
Saknades ett " på slutet.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 01:34:26 - Johan Svensson

Tja, fattar inte vad jag gorde innan. Testade ju det. Ja ja. Men visst det var ju det som var felet.

Men får nu ett annat felmeddelande som jag inte vet hur jag skall handskas med.

FELMEDDELANDET:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e09'

[MySQL][ODBC 3.51 Driver][mysqld-3.23.52]You have an error in your SQL syntax near 'SELECT id , , 51, '2002-9-18 1:50:12', 1, 'text', 'text', FROM med' at line 2

/community1/aaa/111/skicka_mail.asp, rad 60



På rad 60 står con.Execute strSQL





KODEN SER NU UT PÅ DETTA VIS:

<code><%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Year(Value) & "-" & Month(Value) & "-" & Day(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Else
SQLDate = "Null"
End If
End Function

Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function

Function SQLNumber(Value)
If IsNumeric(Value) Then
SQLNumber = Replace(Value, ",", ".")
Else
SQLNumber = "Null"
End If
End Function


Dim rs
Dim con
Dim strSQL
Dim Blocked_Users
strDSN = "lumba"
Set con = Server.CreateObject("ADODB.Connection")
con.Open strDSN

strSQL = "SELECT id" & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
"',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, con
If Not rs.EOF Then
Blocked_Users = rs.GetString(, , , ",")
End If
rs.Close


strSQL = "INSERT INTO mails (Receiver_ID, Sender_ID, Status, Sendt_Date_Time, Folder,Subject, Message" & vbCrLf & _
"SELECT id , " & vbCrLf & _
SQLNumber(Session("Mail_User_ID")) & ", " & vbCrLf & _
SQLNumber(Session("Mail_NewMail_Status")) & ", " & vbCrLf & _
SQLDate(Now()) & ", " & vbCrLf & _
"1, " & vbCrLf & _
SQLText(Session("Mail_NewMail_Subject")) & ", " & vbCrLf & _
SQLText(Session("Mail_OrginalMessage")) & ", " & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
" NOT ',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'"

con.Execute strSQL

con.Close

Session("Mail_NewMail_Subject") = ""
Session("Mail_NewMail_Status") = ""
Session("Mail_OrginalMessage") = ""

Response.Redirect "Mail_Mail_Sendt.asp?NotSentTo='" & Blocked_Users & "'"
%></code>




Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 10:10:08 - Andreas Hillqvist

Som du ser i felmedelandet saknas Session("Mail_User_ID"). Avsändarens ID nummer.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 17:04:11 - Johan Svensson

Inte konstigt att det inte funkade skulle ju vara Session("id"). *jag är så dum så dum*

Så jag har nu ändrat till Session("id") på de tre ställen där Session("Mail_User_ID") användes.

Men jag får dock fortfarande felmeddelande, nämligen detta:


Microsoft OLE DB Provider for ODBC Drivers fel '80040e09'

[MySQL][ODBC 3.51 Driver][mysqld-3.23.52]You have an error in your SQL syntax near 'SELECT id , 1, 51, '2002-9-18 17:19:40', 1, 'text', 'text', FROM m' at line 2

/community1/aaa/111/skicka_mail.asp, rad 60


Jag körde en "Response.write strSQL" istället för en "con.Execute strSQL" så att du kanske kan se vad som är fel. Detta skrevs ut:

INSERT INTO mails (Receiver_ID, Sender_ID, Status, Sendt_Date_Time, Folder, Subject, Message SELECT id , 1, 51, '2002-9-18 17:14:39', 1, 'text', 'text', FROM medlemmar WHERE id IN (3) AND NOT ',' & Blocked_Users & ',' LIKE '*,1,*'


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 17:24:38 - Johan Djupmarker

Du har ett komma (,) innan FROM.

/Johan


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 20:37:18 - Andreas Hillqvist

Testa:
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "'" & Year(Value) & "-" & Month(Value) & "-" & Day(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "'"
Else
SQLDate = "Null"
End If
End Function

Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function

Function SQLNumber(Value)
If IsNumeric(Value) Then
SQLNumber = Replace(Value, ",", ".")
Else
SQLNumber = "Null"
End If
End Function


Dim rs
Dim con
Dim strSQL
Dim Blocked_Users
strDSN = "lumba"
Set con = Server.CreateObject("ADODB.Connection")
con.Open strDSN

strSQL = "SELECT id" & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
"',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, con
If Not rs.EOF Then
Blocked_Users = rs.GetString(, , , ",")
End If
rs.Close


strSQL = "INSERT INTO mails (Receiver_ID, Sender_ID, Status, Sendt_Date_Time, Folder,Subject, Message" & vbCrLf & _
"SELECT id , " & vbCrLf & _
SQLNumber(Session("Mail_User_ID")) & ", " & vbCrLf & _
SQLNumber(Session("Mail_NewMail_Status")) & ", " & vbCrLf & _
SQLDate(Now()) & ", " & vbCrLf & _
"1, " & vbCrLf & _
SQLText(Session("Mail_NewMail_Subject")) & ", " & vbCrLf & _
SQLText(Session("Mail_OrginalMessage")) & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
" NOT ',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'"

con.Execute strSQL

con.Close

Session("Mail_NewMail_Subject") = ""
Session("Mail_NewMail_Status") = ""
Session("Mail_OrginalMessage") = ""

Response.Redirect "Mail_Mail_Sendt.asp?NotSentTo='" & Blocked_Users & "'"
%>
</code>


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 23:00:20 - Johan Svensson

Först ändrade jag till Session("id") som jag använder sedan testade jag men fick då detta felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e09'

[MySQL][ODBC 3.51 Driver][mysqld-3.23.52]You have an error in your SQL syntax near 'SELECT id , 1, 51, '2002-9-18 23:13:7', 1, 'test', 'test' FROM medl' at line 2

/community1/aaa/111/skicka_mail.asp, rad 60

Testade även att skriva ut SQLen igen. fick då detta:
INSERT INTO mails (Receiver_ID, Sender_ID, Status, Sendt_Date_Time, Folder,Subject, Message SELECT id , 1, 51, '2002-9-18 23:12:36', 1, 'test', 'test' FROM medlemmar WHERE id IN (1) AND NOT ',' & Blocked_Users & ',' LIKE '*,1,*'

Vag jag tycker ser konstigt ut är nog *,1,* och & Blocked_Users &.

Skall inte & Blocked_Users & skrivas ut som ett värde? Tja inte vet jag vad som är fel.



Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 23:08:29 - Andreas Hillqvist

Har missat den avslutande parantesen:
<code>
strSQL = "INSERT INTO mails (Receiver_ID, Sender_ID, Status, Sendt_Date_Time, Folder,Subject, Message)" & vbCrLf & _
"SELECT id , " & vbCrLf & _
SQLNumber(Session("Mail_User_ID")) & ", " & vbCrLf & _
SQLNumber(Session("Mail_NewMail_Status")) & ", " & vbCrLf & _
SQLDate(Now()) & ", " & vbCrLf & _
"1, " & vbCrLf & _
SQLText(Session("Mail_NewMail_Subject")) & ", " & vbCrLf & _
SQLText(Session("Mail_OrginalMessage")) & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
" NOT ',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("Mail_User_ID")) & ",*'"


</code>
Vad where satsen gör är att kontrolera att avsändaren inte är blokerad. Känner inte till vilken operator MySQL använder för att slå samman strängar. Du kanske måste ersätta & med någon annat.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-18 23:31:31 - Johan Svensson

Nu får jag inga felmeddelanden i alla fall. Men det funkar inte riktigt som det skall... eller dett funkar faktiskt inte alls. För när jag försöker skicka mail till någon som inte har "1" (som är mitt id) i sin medlemmar.Blocked_Users så skickas inget mail.

Det som är bra med det hela är ju att när man skickar till någon som har ens id i medlemmar.Blocked_Users så skickads det inte heller något mail.

Jag testade att skicka till en som i sin medlemmar.Blocked_Users hade "1" ("1" är alltså det enda han hade i sin medlemmar.Blocked_Users) och det skickades alltså inget. Men även om han inte hade haft något i sin medlemmar.Blocked_Users så hade det heller inte skickats något mail.

Vet inte heller vilken operator MySQL använder för att slå samman strängar. Skrev en fråga om det i mysql-forumet.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-19 08:23:11 - Andreas Hillqvist

Kikade på MySQL.org. Ska vara % istället för *. Finns en funktion som heter CONCAT().
<code>
strSQL = "INSERT INTO mails (Receiver_ID, Sender_ID, Status, Sendt_Date_Time, Folder,Subject, Message)" & vbCrLf & _
"SELECT id , " & vbCrLf & _
SQLNumber(Session("Mail_User_ID")) & ", " & vbCrLf & _
SQLNumber(Session("Mail_NewMail_Status")) & ", " & vbCrLf & _
SQLDate(Now()) & ", " & vbCrLf & _
"1, " & vbCrLf & _
SQLText(Session("Mail_NewMail_Subject")) & ", " & vbCrLf & _
SQLText(Session("Mail_OrginalMessage")) & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
" NOT CONCAT(',', Blocked_Users, ',') LIKE '%," & SQLNumber(Session("Mail_User_ID")) & ",%'"


</code>
Men jag föreslår en tabell, betydligt lättare att administrera. Desutom ger det möjlighet att direkt söka i index.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-19 13:41:25 - Johan Svensson

Bör det inte ändras lite i den andra Select-raden också då?

Eller skall det se ut som följande:

strSQL = "SELECT id" & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
"',' & Blocked_Users & ',' LIKE '*," & SQLNumber(Session("id")) & ",*'"


...eller skall det se ut som nedan. Jag har i alla fall ändrat så att det ser ut som nedan. Och vad jag märkte var att när jag försökte skicka ett mail till id 3 var att "& Blocked_Users &"-värdet var "3," och det är ju inte så bra, det skall ju bara vara 3. Kanske därför det hela inte funkar.

strSQL = "SELECT id" & vbCrLf & _
"FROM medlemmar" & vbCrLf & _
"WHERE id IN (" & Session("Mail_NewMail_Namelist") & ") AND " & vbCrLf & _
"CONCAT(',', Blocked_Users, ',') LIKE '%," & SQLNumber(Session("id")) & ",%'"



Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-19 14:42:32 - Andreas Hillqvist

Jag missade att ändra den SQL satsen.

Lägger man till , före och efter Blocked_Users värdet, som vi gör med CONCAT(',', Blocked_Users, ','). Sedan söker vi efter ,3, i strängen.

Det som kan strula är i så fall mellanslag.

Använder du en tabell slipper du mycket av det som kan strula.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-19 18:19:52 - Johan Svensson

Verkar inte som vi kommer så mycket längre med den koden du knåpade ihop så flitigt.

Men alltså om du kollar på det första inlägget. Den överstadelen som där är problemet funkade med accessdatabasen. Du ser möjligen inte vad det är som gör att det inte fungerar med MySQL. Så här ser koden ut:


Dim strReplyTo
Dim arrReplyTo
Dim I

' #### BEGIN ## Find selected users and check if they have the current user on the blocked list ####
Accepted_Users=""
Blocked_Users=""
Set rs = Server.CreateObject("ADODB.RecordSet")
SQL_Str="SELECT id, Blocked_Users FROM medlemmar WHERE id IN ("&Session("Mail_NewMail_Namelist")&") ORDER BY Username"
strDSN = "lumba"
rs.Open SQL_Str, strDSN, 1, 1
If Not rs.EOF Then
alldata=rs.getrows
rs.close
Set rs=nothing
numcols=ubound(alldata,1)
numrows=ubound(alldata,2)
For rowcounter=0 TO numrows
Str_User_ID=alldata(0,rowcounter)
Str_Blocked_Users=","&alldata(1,rowcounter)&","
If InStr(Str_Blocked_Users,","&Str_User_ID&",")<>0 Then
Blocked_Users=Blocked_Users&Str_User_ID&","
else
Accepted_Users=Accepted_Users&Str_User_ID&","
end if
Next
else
rs.close
Set rs=nothing
end if
If Not Accepted_Users="" Then Accepted_Users=Left(Accepted_Users,Len(Accepted_Users)-1) end if
If Not Blocked_Users="" Then Blocked_Users=Left(Blocked_Users,Len(Blocked_Users)-1) end if
' #### BEGIN ## Find selected users and check if they have the current user on the blocked list ####


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-20 01:32:09 - Johan Svensson

OK! jag har jätt upp hoppet nu! Jag skall använda en tabell istället Tabellen skall heta relationer och skall innehålla:

relationer.id - medlemmens id
relationer.kompis - om kompis, kompisens id
relationer.idiot - om idiot, idiotens id

Så varge gång man lägger till en kompis eller en idiot så skall det i denna tabell läggas till en rad.


Svara

Sv: Blocka om id ligger i tabell (typ: 1, 23, 7, 9)

Postades av 2002-09-20 08:13:22 - Andreas Hillqvist

Är det inte bättre att ange vilken typ av relation det är i ett separat fält?

relationer.medlem - medlemmens id
relationer.person - vilken relationen är till
relationer.typ - om kompis eller idiot


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 816
27 960
271 761
7 590
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies