Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860

    controllo messaggi [mi sto perdendo in un bicchiere d'acqua??]

    salve a tutti,

    io ho questo db

    id
    codicecliente
    mittente
    tipomessaggio
    oggetto
    messaggio
    stato
    data
    ora

    a questo punto io faccio un controllo al fine di determinare i messaggi non letti, quelli inviati e quelli ricevuti isa da parte mia quando accedo alla pagina di amministrazione del sito sia da parte del cliente quando accede alla sua pagina riservata.
    Il codice cliente è un valore univoco che contraddistingue l'utente in qualunque tabella del db quindi sia nella tabella messaggi che in quella schedaclienti il codice corrisponde.
    il mio codice, quello dell'amministratore è cl000001 quello egli altri clienti sarà con lo stesso formato ma diverso dallo 01.

    ora io faccio questo codice:
    codice:
    <%
    ContaMessInviati=0
    ContaMessRicevuti=0
    ContaMessNonLetti=0
    
    'Apro il db e controllo lo stato dei messaggi 
    set myConn = server.CreateObject("ADODB.Connection")
    dim strConnDb
    strConnDb = ""
    strConnDb = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("/mdb-database/clienti.mdb")
    myConn.Open(strConnDb)	
    mySqlSelect = "select * from Messaggi"
    set myRSComS = server.CreateObject("ADODB.Recordset")
    myRSComS.Open mySqlSelect, myConn
    
    if not(myRSComS.EOF) and not(myRSComS.BOF) then	
      do while not(myRSComS.EOF)	
        if (myRSComS("Stato")="Letto") then
          if (myRSComS("TipoMessaggio")="Inviato") and (myRSComS("CodiceCliente")<>Session("CodiceC")) Then
    	    ContaMessInviati = ContaMessInviati+1
    	  end if
          if (myRSComS("TipoMessaggio")="Ricevuto") and (myRSComS("CodiceCliente")=Session("CodiceC")) Then
    	    ContaMessRicevuti = ContaMessRicevuti+1
    	  end if
    	end if  
        if (myRSComS("Stato")="Non Letto") then
    	  ContaMessNonLetti = ContaMessNonLetti+1
          if (myRSComS("TipoMessaggio")="Inviato") and (myRSComS("CodiceCliente")<>Session("CodiceC")) Then
    	    ContaMessInviati = ContaMessInviati+1
    	  end if
          if (myRSComS("TipoMessaggio")="Ricevuto") and (myRSComS("CodiceCliente")=Session("CodiceC")) Then
    	    ContaMessRicevuti = ContaMessRicevuti+1
    	  end if
    	end if  
    	myRSComS.MoveNext
      loop
    else
    end if
    
    myRSComS.Close
    set myRSComS=nothing	
    myConn.Close
    set myConn=nothing
    %>
    con l'obiettivo di controllare lo stato della messaggistica.
    ma ci deve essere un errore strutturale perchè anche quando un cliente ha un messaggio non letto risulta un messaggio non letto da me.
    la variabile di sessione session("codiceC") si attiva a login efettuato e appunto x tutta la durata del login si porta in giro il codice di chi è entrato.

    raga che cavolo sto sbagliando??



    Grazie mille
    Linux Inside

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    a dimenticavo questo codice lo inserisco via include sia nella pagina del cliente che nella mia...
    Linux Inside

  3. #3
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730
    mmm scusa prova a cambiare approccio
    prova ad usare delle select x contare i messaggi

    tipo:

    sql = "Select count(*) as num from messaggi Where Stato='Letto' and TipoMessaggio='Inviato' and CodiceCliente<>'" & Session("CodiceC") & "'"

    Set Rs1 = cn.Execute(sql)
    nLettiInviati = Rs1("num")

    e via dicendo.......

    alla fine avrai le variabili con i contatori aggiornati...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    forse ci siamo

    dunque il record è diventato:

    id
    codiceMittente
    codicedestinatario
    mittente
    destinatario
    tipomessaggio
    oggetto
    messaggio
    stato
    data
    ora

    e il codice è diventato:
    codice:
    if not(myRSComS.EOF) and not(myRSComS.BOF) then	
      do while not(myRSComS.EOF)	
        'controllo tutti i messaggin cui il mittente sono io.. perchè li posso solo aver inviati io
        if (Session("CodiceC")=myRSComS("CodiceMittente")) Then
          ContaMessInviati=ContaMessInviati+1
        end if  
        'controllo i messaggi con altri mittenti
    	flag=0
        if (Session("CodiceC")<>myRSComS("CodiceMittente")) Then
    	  if (myRSComS("CodiceDestinatario")=Session("CodiceC") Then
            ContaMessRicevuti=ContaMessRicevuti+1 'se il mittente non sono io, ma sono io il destinatario allora l'ho ricevuto
    		if (myRSComS("Stato")="Non Letto") Then
              ContaMessNonLetti=ContaMessNonLetti+1 ' il messaggio non l'ho ancora letto allora incremento la var		
    		else
    		end if
    	  else
    	    flag=1 ' non sono io il mittente, non sono io il destinatario alora il messaggio non mi riguarda	
    	  end if
        end if  
    	myRSComS.MoveNext
      loop
    else
    end if
    dunque avendo il codice del mittente e quello del destinatario cosa faccio..

    1) se il mittente sono io è ovvio che posso solo averlo inviato.
    2) se il mittente non sono io allora io posso essere il destinatario e quindi controllo il codice del destinatario, se questo corrisponde al mio codice personale messo nella variabile di sessione allora evidente che io l'ho ricevuto altrimenti il codice non è il mio e quindi sono affari di chi è il vero destinatario.
    una volta eterminato che il codice destinatario è il mio beh allora controllo se ho letto o meno il messaggio ed incremento se non ho ancora letto il messaggio la variabile appropriata..

    può essere come logica??


    grazie
    Linux Inside

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.