Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabiano Carloto

Tenho um fórum em asp que utiliza banco de dados...

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Pessoal,

 

Tenho um fórum em uma intranet que usa o banco de dados do Access para guardar seus registros. O banco tem o registro de cada usuário, mas o problema é que um usuário pode enviar apenas uma mensagem para outro usuário. Consegui resolver a grosso modo como uma pessoa enviar para todas do fórum.

No banco criei um usuário genérico chamdo Todos. Quando alguem envia um recado fica registrado no banco o user do destinatário que é utilizado para listar os meus recados. O código ficou assim:

 

Dim Rs_recado

Dim Rs_recado_numRows

 

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

Rs_recado.ActiveConnection = MM_discusao_STRING

Rs_recado.Source = "SELECT * FROM recado WHERE destinatario = '" + Replace(Rs_recado__MMColParam, "'", "''") + "' OR destinatario='todos' ORDER BY id_recado DESC"

Rs_recado.CursorType = 0

Rs_recado.CursorLocation = 2

Rs_recado.LockType = 1

Rs_recado.Open()

 

Rs_recado_numRows = 0

 

O problema é que se alguem apagar a mensagem o restante dos users não vizualisaram mais a mensaguem pq ela grava apenas uma vez no banco.

 

 

Se alguem puder me ajudar eu agradeço muito. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

grave fazendo um loop de todos os usuários, assim você tem uma mensagem pra cada um

Valeu pela ajuda... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Eu pensei em faze isso mas tinha que se apenas quando o destinatário for igual a todos.....como eu posso faze isso???

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de gravar você verifica. segue a logica

if request("para")="todos" thenset rs=con.execute("select * from usuarios")do while not rs.eofcon.execute("insert into mensagens (idusuario,mensagem) values ("&rs("id")&",'"&request("mensagem")&"')")rs.movenextloopelsecon.execute("insert into mensagens (idusuario,mensagem) values ("&rs("id")&",'"&request("mensagem")end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de gravar você verifica. segue a logica

if request("para")="todos" thenset rs=con.execute("select * from usuarios")do while not rs.eofcon.execute("insert into mensagens (idusuario,mensagem) values ("&rs("id")&",'"&request("mensagem")&"')")rs.movenextloopelsecon.execute("insert into mensagens (idusuario,mensagem) values ("&rs("id")&",'"&request("mensagem")end if
Valeu ai pelo código...vou implementar aki e se tiver problemas eu volto....valeu mesmo...abraços. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara o meu código é esse:

 

<%@LANGUAGE="VBSCRIPT"%>

 

<%

' *** Logout the current user.

MM_Logout = CStr(Request.ServerVariables("URL")) & "?MM_Logoutnow=1"

If (CStr(Request("MM_Logoutnow")) = "1") Then

Session.Contents.Remove("MM_Username")

Session.Contents.Remove("MM_UserAuthorization")

MM_logoutRedirectPage = "default.asp"

' redirect with URL parameters (remove the "MM_Logoutnow" query param).

if (MM_logoutRedirectPage = "") Then MM_logoutRedirectPage = CStr(Request.ServerVariables("URL"))

If (InStr(1, UC_redirectPage, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then

MM_newQS = "?"

For Each Item In Request.QueryString

If (Item <> "MM_Logoutnow") Then

If (Len(MM_newQS) > 1) Then MM_newQS = MM_newQS & "&"

MM_newQS = MM_newQS & Item & "=" & Server.URLencode(Request.QueryString(Item))

End If

Next

if (Len(MM_newQS) > 1) Then MM_logoutRedirectPage = MM_logoutRedirectPage & MM_newQS

End If

Response.Redirect(MM_logoutRedirectPage)

End If

%>

<!--#include file="Connections/discusao.asp" -->

<%

' *** Restrict Access To Page: Grant or deny access to this page

MM_authorizedUsers="administrador,usuario"

MM_authFailedURL="default.asp"

MM_grantAccess=false

If Session("MM_Username") <> "" Then

If (false Or CStr(Session("MM_UserAuthorization"))="") Or _

(InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then

MM_grantAccess = true

End If

End If

If Not MM_grantAccess Then

MM_qsChar = "?"

If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"

MM_referrer = Request.ServerVariables("URL")

if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()

MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)

Response.Redirect(MM_authFailedURL)

End If

%>

<%

' *** Edit Operations: declare variables

 

Dim MM_editAction

Dim MM_abortEdit

Dim MM_editQuery

Dim MM_editCmd

 

Dim MM_editConnection

Dim MM_editTable

Dim MM_editRedirectUrl

Dim MM_editColumn

Dim MM_recordId

 

Dim MM_fieldsStr

Dim MM_columnsStr

Dim MM_fields

Dim MM_columns

Dim MM_typeArray

Dim MM_formVal

Dim MM_delim

Dim MM_altVal

Dim MM_emptyVal

Dim MM_i

 

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))

If (Request.QueryString <> "") Then

MM_editAction = MM_editAction & "?" & Request.QueryString

End If

 

' boolean to abort record edit

MM_abortEdit = false

 

' query string to execute

MM_editQuery = ""

%>

<%

' *** Insert Record: set variables

 

If (CStr(Request("MM_insert")) = "formulario") Then

 

MM_editConnection = MM_discusao_STRING

MM_editTable = "recado"

MM_editRedirectUrl = "teste.asp"

MM_fieldsStr = "assunto|value|destinatario|value|texto|value|remetente|value|data|value|ava

tar|value"

MM_columnsStr = "assunto|',none,''|destinatario|',none,''|texto|',none,''|remetente|',none,''|data|',none,''|avatar|',none,''"

 

' create the MM_fields and MM_columns arrays

MM_fields = Split(MM_fieldsStr, "|")

MM_columns = Split(MM_columnsStr, "|")

 

' set the form values

For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2

MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))

Next

 

' append the query string to the redirect URL

If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then

If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then

MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString

Else

MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString

End If

End If

 

End If

%>

<%

' *** Insert Record: construct a sql insert statement and execute it

 

Dim MM_tableValues

Dim MM_dbValues

 

If (CStr(Request("MM_insert")) <> "") Then

 

' create the sql insert statement

MM_tableValues = ""

MM_dbValues = ""

For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2

MM_formVal = MM_fields(MM_i+1)

MM_typeArray = Split(MM_columns(MM_i+1),",")

MM_delim = MM_typeArray(0)

If (MM_delim = "none") Then MM_delim = ""

MM_altVal = MM_typeArray(1)

If (MM_altVal = "none") Then MM_altVal = ""

MM_emptyVal = MM_typeArray(2)

If (MM_emptyVal = "none") Then MM_emptyVal = ""

If (MM_formVal = "") Then

MM_formVal = MM_emptyVal

Else

If (MM_altVal <> "") Then

MM_formVal = MM_altVal

ElseIf (MM_delim = "'") Then ' escape quotes

MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"

Else

MM_formVal = MM_delim + MM_formVal + MM_delim

End If

End If

If (MM_i <> LBound(MM_fields)) Then

MM_tableValues = MM_tableValues & ","

MM_dbValues = MM_dbValues & ","

End If

MM_tableValues = MM_tableValues & MM_columns(MM_i)

MM_dbValues = MM_dbValues & MM_formVal

Next

MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

 

If (Not MM_abortEdit) Then

' execute the insert

Set MM_editCmd = Server.CreateObject("ADODB.Command")

MM_editCmd.ActiveConnection = MM_editConnection

MM_editCmd.CommandText = MM_editQuery

MM_editCmd.Execute

MM_editCmd.ActiveConnection.Close

 

If (MM_editRedirectUrl <> "") Then

Response.Redirect(MM_editRedirectUrl)

End If

End If

 

End If

%>

<%

Dim Rs_sessao__MMColParam

Rs_sessao__MMColParam = "1"

If (Session("MM_username") <> "") Then

Rs_sessao__MMColParam = Session("MM_username")

End If

%>

<%

Dim Rs_sessao

Dim Rs_sessao_numRows

 

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

Rs_sessao.ActiveConnection = MM_discusao_STRING

Rs_sessao.Source = "SELECT * FROM user WHERE usuario = '" + Replace(Rs_sessao__MMColParam, "'", "''") + "'"

Rs_sessao.CursorType = 0

Rs_sessao.CursorLocation = 2

Rs_sessao.LockType = 1

Rs_sessao.Open()

 

Rs_sessao_numRows = 0

%>

<%

Dim Rs_topico__MMColParam

Rs_topico__MMColParam = "1"

If (Request.QueryString("id_topico") <> "") Then

Rs_topico__MMColParam = Request.QueryString("id_topico")

End If

%>

<%

Dim Rs_topico

Dim Rs_topico_numRows

 

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

Rs_topico.ActiveConnection = MM_discusao_STRING

Rs_topico.Source = "SELECT * FROM topico WHERE id_topico = " + Replace(Rs_topico__MMColParam, "'", "''") + " ORDER BY id_topico DESC"

Rs_topico.CursorType = 0

Rs_topico.CursorLocation = 2

Rs_topico.LockType = 1

Rs_topico.Open()

 

Rs_topico_numRows = 0

%>

<%

Dim Rs_recado__MMColParam

Rs_recado__MMColParam = "1"

If (Session("MM_username") <> "") Then

Rs_recado__MMColParam = Session("MM_username")

End If

%>

<%

Dim Rs_recado

Dim Rs_recado_numRows

 

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

Rs_recado.ActiveConnection = MM_discusao_STRING

Rs_recado.Source = "SELECT * FROM recado WHERE destinatario = '" + Replace(Rs_recado__MMColParam, "'", "''") + "' ORDER BY data DESC"

Rs_recado.CursorType = 0

Rs_recado.CursorLocation = 2

Rs_recado.LockType = 1

Rs_recado.Open()

 

Rs_recado_numRows = 0

%>

<%

Dim Rs_usuario

Dim Rs_usuario_numRows

 

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

Rs_usuario.ActiveConnection = MM_discusao_STRING

Rs_usuario.Source = "SELECT * FROM user ORDER BY nome ASC"

Rs_usuario.CursorType = 0

Rs_usuario.CursorLocation = 2

Rs_usuario.LockType = 1

Rs_usuario.Open()

 

Rs_usuario_numRows = 0

%>

<%

' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

 

Dim Rs_recado_total

Dim Rs_recado_first

Dim Rs_recado_last

 

' set the record count

Rs_recado_total = Rs_recado.RecordCount

 

' set the number of rows displayed on this page

If (Rs_recado_numRows < 0) Then

Rs_recado_numRows = Rs_recado_total

Elseif (Rs_recado_numRows = 0) Then

Rs_recado_numRows = 1

End If

 

' set the first and last displayed record

Rs_recado_first = 1

Rs_recado_last = Rs_recado_first + Rs_recado_numRows - 1

 

' if we have the correct record count, check the other stats

If (Rs_recado_total <> -1) Then

If (Rs_recado_first > Rs_recado_total) Then

Rs_recado_first = Rs_recado_total

End If

If (Rs_recado_last > Rs_recado_total) Then

Rs_recado_last = Rs_recado_total

End If

If (Rs_recado_numRows > Rs_recado_total) Then

Rs_recado_numRows = Rs_recado_total

End If

End If

%>

 

<%

' *** Recordset Stats: if we don't know the record count, manually count them

 

If (Rs_recado_total = -1) Then

 

' count the total records by iterating through the recordset

Rs_recado_total=0

While (Not Rs_recado.EOF)

Rs_recado_total = Rs_recado_total + 1

Rs_recado.MoveNext

Wend

 

' reset the cursor to the beginning

If (Rs_recado.CursorType > 0) Then

Rs_recado.MoveFirst

Else

Rs_recado.Requery

End If

 

' set the number of rows displayed on this page

If (Rs_recado_numRows < 0 Or Rs_recado_numRows > Rs_recado_total) Then

Rs_recado_numRows = Rs_recado_total

End If

 

' set the first and last displayed record

Rs_recado_first = 1

Rs_recado_last = Rs_recado_first + Rs_recado_numRows - 1

 

If (Rs_recado_first > Rs_recado_total) Then

Rs_recado_first = Rs_recado_total

End If

If (Rs_recado_last > Rs_recado_total) Then

Rs_recado_last = Rs_recado_total

End If

 

End If

%>

A parte em vermelho é o código que eu utilizo pra inserir as mensagens no banco e eu nao consgue implementa nele o código que você me enviou.....pode me ajudar???Abraços. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.