Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30

Discussione: Calendario parte da Db

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309

    Calendario parte da Db

    Salve a tutti sto impazzendo su una cosa che devo creare, ho un DB così:
    id | nomePagina | data | ora
    1 miaPagi 03/10/2004 15:30
    2 miaPagi 03/10/2004 15:30
    3 miaPagi 05/10/2004 15:30
    4 miaPagi 10/10/2004 15:30
    5 tuaPagi 12/10/2004 15:30


    Poi ho una pagina asp che con questa query mi legge il db:
    codice:
    strNomePagina = "miaPagi"
    strSqlDett = "SELECT Count([data]) AS Totale, [data] FROM pagine WHERE nomepagina='" & strNomePagina & "' GROUP BY [data]"
    Così mi tiro fuori dal db e mi raggruppo tutti i record contenenti miaPagi e me li somma per data, quindi mi dice che per la data 03/10/2004 ci sono 2 record, per la data 05/10/2004 c'è un record e così via.
    Ora voglio costruire un calendario dove metto per
    01/10/2004=0 visite
    02/10/2004=0 visite
    03/10/2004=2 visite
    e così via.
    Mi dite come fare un ciclo per scrivere le date di un mese e se le esistono sul db mi segna il valore altrimenti mi mette zero??
    Sto impazzendo
    Ciao By Peter_Pan...

  2. #2
    Fai un ciclo per i giorni del mese ... per esempio per novembre
    fai un ciclo for da 1 a 30, per ogni ciclo esegui la SQL che hai creato prima indicando la data... se il valore esiste lo memorizzi con il conteggio, altrimenti per la stessa data inserisci 0.
    Ti metto un esempio molto spartano ... senza mettere tutti gli oggetti

    'Per novembre
    for vCounter = 1 to 30
    'Esegui la query
    strNomePagina = "miaPagi"
    strSqlDett = "SELECT Count([data]) AS Totale, [data] FROM pagine WHERE nomepagina='" & strNomePagina & "' AND [data] = #"&vCounter&"/10/"&Year(Date)&"# GROUP BY [data]"

    'apri il recordset e controlli
    Recordset.Open sql

    if Recordset.EOF then
    vVisite = 0
    else
    vVisite = Recordset("Totale")
    end if

    'Qui poi esegui la query di insert
    sql = "INSERT INTO Calendario ([data], visite) VALUES (#"&vCounter&"/10/"&Year(Date)&"#,"&vVisite&")"


    next

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    Io avevo pensato ad una cosa del genere ma non riesco a farla funzionare, ci daresti un occhio:
    codice:
    Set objRsDett = Server.CreateObject("ADODB.Recordset")
    	'strSqlDett = "SELECT * FROM pagine WHERE nomePagina='" & strNomePagina & "'"
    	strSqlDett = "SELECT Count([data]) AS Totale, [data] FROM pagine WHERE nomepagina='" & strNomePagina & "' GROUP BY [data]"
    	objRsDett.Open strSqlDett, objConn
    							
    	Response.Write("<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=1>")
    	i=1
    	Do while not objRsDett.EOF
    		dataTrovata(i) = (objRsDett("data") & "," & objRsDett("totale"))
    		'Response.Write(dataTrovata(i) & "
    ")
    		objRsDett.MoveNext
    	Loop 
    										
    	for i = 1 to 31
    		If Len(i)=1 Then
    		s= "0" & i
    		else
    		s=i
    		end if
    		strDataCalendario = s & "/10/2004"
    		Response.Write(mid(dataTrovata(i),1,10) & "
    
    ")
    		For n = 1 to UBound(dataTrovata)
    			if mid(dataTrovata(n),1,10) = strDataCalendario Then
    			Response.Write("<tr><td>" & dataTrovata(n) & "</td></tr>")
    			else
    			Response.Write("<tr><td>" & strDataCalendario & ",0</td></tr>")
    			end if
    		next
    	next
    Ciao By Peter_Pan...

  4. #4
    Prova a vedere così :

    Set objRsDett = Server.CreateObject("ADODB.Recordset")
    'strSqlDett = "SELECT * FROM pagine WHERE nomePagina='" & strNomePagina & "'"
    strSqlDett = "SELECT Count([data]) AS Totale, [data] FROM pagine WHERE nomepagina='" & strNomePagina & "' GROUP BY [data]"
    objRsDett.Open strSqlDett, objConn

    Response.Write("<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=1>")
    redim dataTrovata(objRsDett.Recordcount)
    i=1
    Do while not objRsDett.EOF
    dataTrovata(i) = (objRsDett("data") & "," & objRsDett("totale"))
    'Response.Write(dataTrovata(i) & "
    ")
    objRsDett.MoveNext
    Loop

    for i = 1 to 31
    If Len(i)=1 Then
    s= "0" & i
    else
    s=i
    end if
    strDataCalendario = s & "/10/2004"
    Response.Write(mid(dataTrovata(i),1,10) & "

    ")
    For n = 1 to UBound(dataTrovata,2)
    if mid(dataTrovata(n),1,10) = strDataCalendario Then
    Response.Write("<tr><td>" & dataTrovata(n) & "</td></tr>")
    else
    Response.Write("<tr><td>" & strDataCalendario & ",0</td></tr>")
    end if
    next
    next

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    mi da questo errore:
    codice:
    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A0009)
    Indice non incluso nell'intervallo: '1'
    /stat/Statistiche/statistichePagine.asp, line 143
    la riga è questa:
    codice:
    dataTrovata(i) = (objRsDett("data") & "," & objRsDett("totale"))
    Ciao By Peter_Pan...

  6. #6
    Proviamo così...

    Set objRsDett = Server.CreateObject("ADODB.Recordset")
    'strSqlDett = "SELECT * FROM pagine WHERE nomePagina='" & strNomePagina & "'"
    strSqlDett = "SELECT Count([data]) AS Totale, [data] FROM pagine WHERE nomepagina='" & strNomePagina & "' GROUP BY [data]"
    objRsDett.Open strSqlDett, objConn

    Response.Write("<TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=1>")
    redim dataTrovata(objRsDett.Recordcount)
    i=0
    Do while not objRsDett.EOF
    dataTrovata(i) = (objRsDett("data") & "," & objRsDett("totale"))
    'Response.Write(dataTrovata(i) & "
    ")
    objRsDett.MoveNext
    Loop

    for i = 1 to 31
    If Len(i)=1 Then
    s= "0" & i
    else
    s=i
    end if
    strDataCalendario = s & "/10/2004"
    Response.Write(mid(dataTrovata(i),1,10) & "

    ")
    For n = 0 to UBound(dataTrovata,2)-1
    if mid(dataTrovata(n),1,10) = strDataCalendario Then
    Response.Write("<tr><td>" & dataTrovata(n) & "</td></tr>")
    else
    Response.Write("<tr><td>" & strDataCalendario & ",0</td></tr>")
    end if
    next
    next

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    ora invece l'errore è:
    codice:
    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A0009)
    Indice non incluso nell'intervallo: '0'
    /stat/Statistiche/statistichePagine.asp, line 143
    la riga è la stessa
    Ciao By Peter_Pan...

  8. #8
    Commenta la riga dove compare

    codice:
    Response.Write(mid(dataTrovata(i),1,10) & "
    
    ")
    e prova a rilanciare la pagina, è un problema di indici degli array

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    mi da lo stesso errore
    Ciao By Peter_Pan...

  10. #10

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.