Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Semplice guestbook in asp

    Buongiorno a tutti.

    Ho realizzato un semplicissimo guestbook che utilizza un DB Access per un sito di amici.
    Potete visualizzare il guestbook a questo link.



    Sono stati utilizzati 5 files:

    add.asp
    comment.asp // pagina di inserimento dei messaggi
    include.asp
    view.asp // pagina di visualizzazione dei messaggi
    guest.mdb // database

    Per scaricare i files cliccate qui.

    La struttura del database comprende 5 campi, nella fattispecie:

    name
    email
    url
    note
    date

    L'url l'ho forzato ad "hidden" sulla pagina view.asp e l'ho utilizzato per memorizzarci l'indirizzo IP dei visitatori.

    Sebbene le connessioni e la scrittura al database funzioni correttamente, ho riscontrato alcuni problemi nell'ordine dei messaggi visualizzati. E' possibile che il problema sia perchè non sono presenti gli orari di inserimento?
    A tal proposito ho provato ad inserire la data con il formato ora sul database ma senza successo. Il file view.asp dava errore e non ho ben capito il perchè.

    Riguardo alla visualizzazione disordinata dei messaggi, secondo me il problema sta nell'ultima riga della tabella nel file view.asp dove c'è la seguente istruzione:

    <tr bgcolor="@@( _index & 1 ? '#C0C0C0' : '#C0C0C0')@@">,

    però non ne sono sicuro.

    Avete qualche suggerimento su come risolvere tale problema?
    Inoltre come posso fare in modo di registrare anche gli orari dei messaggi?

    Grazie mille in anticipo a chi vorrà aiutarmi.

    Ciao, Mattia

  2. #2
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    la logica dei guestbook è che l'ultimo messaggio scritto venga visualizzato sopra a tutti.

    questa cosa viene fatta dalla query che visualizza i messaggi.

    di solito nel db andrebbe anche messo un campo ID in formato contatore.
    così faccendo la query verrà impostata in modo che il post con l'ID + alto venga visto per primo.

    non centra ne la data ne quel codice che a mio avviso non ha nessun significato.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  3. #3
    Grazie yro per la celere risposta.
    Ho aggiunto un campo id contatore al DB e modificato la stringa così:

    Rs.Open "SELECT * from guest order by id desc", Conn, 1,3

    Ora funziona tutto!

    A questo punto ti chiederei solo come mettere anche l'ora nel campo date. Ho provato a mettere "data generica" nel campo formato ma non funzia... Forse è perche lo devo inserire nel formato inglese? Cioè:

    mm/gg/aaaa + hh:mm:ss

    Ciao,
    Mattia

  4. #4
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    io utilizzo questa classe per formattare la data:

    http://forum.html.it/forum/showthrea...=funzione+date

    cma si, è sempre indicato inserire la data in formato inglese, cmq se come variabile metti:

    variabile_data = now()

    e la memorizzi nel db dovrebbe essere corretta e completa!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  5. #5
    Ho utilizzato le indicazioni nel post "campo data time".
    E' corretto così?

    file format_date.asp
    ----------------------------

    <%
    '##DATE FORMATTING OPTIONS KEY
    '##-- Times --
    '## %a = am or pm
    '## %A = AM or PM
    '## %g = hour of the day, 12hr format, no leading zeros: 1 to 12
    '## %G = hour of the day, 12hr format: 01 to 12
    '## %h = hour of the day, 24hr format, no leading zeros: 0 to 23
    '## %H = hour of the day, 24hr format: 00 to 23
    '## %t = minutes of the hour: 00 to 59
    '## %T = seconds of the minute: 00 to 59

    '##-- Dates --
    '## %d = day of month, no leading zeros: 1 to 31
    '## %D = day of month, 2 digits: 01 to 31
    '## %s = day of month suffix: st, nd, rd, th
    '## %S = day of month suffix, upper case: ST, ND, RD, TH
    '## %e = day of week, abreviated: Sun, Mon, etc
    '## %E = day of week, long form: Sunday
    '## %w = day of week, as a single digit: 1 -sunday to 7 -saturday
    '## %z = day of year: 0 to 365
    '## %m = month, as digits without leading zeros: 1 to 12
    '## %M = month, as 2 digits: 01 to 12
    '## %n = month name, abreviated: Jan
    '## %N = month name, long form: January
    '## %y = year as 2 digits: 01
    '## %Y = year as 4 digits: 2001


    '## new_date = kaos_date("%D/%M/%Y", date)






    '# refer to documentation for options codes for the StringStructure
    Function kaos_date(ByVal StringStructure,ByVal Timestamp)
    '-- validate arguments --
    If Not IsDate(Timestamp) Then 'invalid date
    kaos_date = Timestamp
    Exit Function
    End If
    If InStr(1,StringStructure,"%",0) = 0 Then 'invalid structure
    kaos_date = Timestamp
    Exit Function
    End If
    Dim zTmpDate1,zTmp1,zTmp2
    zTmpDate1 = StringStructure
    '# day of month / suffixes #
    zTmp1 = Day(Timestamp) 'day of month number
    Select Case zTmp1 'day suffix
    Case 1,21,31
    zTmp2 = "st"
    Case 2,22
    zTmp2 = "nd"
    Case 3,23
    zTmp2 = "rd"
    Case Else
    zTmp2 = "th"
    End Select
    zTmpDate1 = Replace(zTmpDate1,"%d",zTmp1,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%D",Right(("0" & zTmp1),2),1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%s",zTmp2,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%S",UCase(zTmp2),1,-1,0)
    '# weekday name / number #
    zTmp1 = Weekday(Timestamp)
    zTmp2 = WeekdayName(zTmp1)
    zTmpDate1 = Replace(zTmpDate1,"%e",Left(zTmp2,3),1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%E",zTmp2,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%w",zTmp1,1,-1,0)
    '# month name / number #
    zTmp1 = Month(Timestamp)
    zTmp2 = MonthName(zTmp1)
    zTmpDate1 = Replace(zTmpDate1,"%m",zTmp1,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%M",Right(("0" & zTmp1),2),1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%n",Left(zTmp2,3),1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%N",zTmp2,1,-1,0)
    '# year / day of year #
    zTmp1 = Year(Timestamp)
    zTmpDate1 = Replace(zTmpDate1,"%y",Right(CStr(zTmp1),2),1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%Y",zTmp1,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%z",DatePart("y",Timestamp),1,-1,0)

    '# times #
    'am/pm indicator
    zTmp1 = Hour(Timestamp)
    If zTmp1 < 12 Then
    zTmp2 = "am"
    Else
    zTmp2 = "pm"
    End If
    zTmpDate1 = Replace(zTmpDate1,"%a",zTmp2,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%A",UCase(zTmp2),1,-1,0)
    '24hr hour number
    zTmpDate1 = Replace(zTmpDate1,"%h",zTmp1,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%H",Right(("0" & zTmp1),2),1,-1,0)
    '12hr hour number
    If zTmp1 > 12 Then
    zTmp1 = zTmp1 - 12
    End If
    'hour 0 fix, courtesy of Bob Gregorius. thanks Bob
    If zTmp1 = 0 Then
    zTmp1 = 12
    End If
    zTmpDate1 = Replace(zTmpDate1,"%g",zTmp1,1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%G",Right(("0" & zTmp1),2),1,-1,0)
    'minutes and seconds
    zTmpDate1 = Replace(zTmpDate1,"%t",Right(("0" & Minute(Timestamp)),2),1,-1,0)
    zTmpDate1 = Replace(zTmpDate1,"%T",Right(("0" & Second(Timestamp)),2),1,-1,0)

    '# return the now parsed date string to the function #
    kaos_date = zTmpDate1
    End Function
    %>



    file view.asp
    ----------------------------




    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">


    <%
    '---------------------------------------------------------
    'Questo è lo script principale che mostra tutti i messaggi
    '---------------------------------------------------------
    dim PageNo ' page number retrieved from the URL
    dim NextPage'URL of next page
    dim PrevPage'URL of previous page
    dim Counter ' current record, used for paging

    PageNo=Request.QueryString("page")
    'Se la pagina non è passata inizializza la variabile
    if not len(trim(PageNo))>0 then PageNo=1

    'Inizializza la connessione e l'insieme dei record
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
    Conn.ConnectionString = "Data Source=" & Path
    Conn.Open
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open "SELECT * from guest order by id desc", Conn, 1,3

    Rs.AbsolutePage =PageNo


    if Rs.AbsolutePage*Rs.PageSize<Rs.RecordCount then
    NextPage=PageNo+1
    NextPage="Pagina Successiva" & ""
    else
    NextPage=PageNo
    NextPage=""
    end if

    if PageNo>1 then
    PrevPage=PageNo-1
    PrevPage="Pagina precedente" & ""

    else
    PrevPage=PageNo
    PrevPage=""
    end if

    %>

    <link href="style.css" rel="stylesheet" type="text/css">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title></title>


    </head>

    <body style="background-image: url(bursak.gif)" bgproperties="fixed" <%=back%>>
    <center>[img]../tosi_tose_sp_banner_01.gif[/img]</center>
    <p align="center"><span class="class2">Inserisci un messaggio | Vedi tutti i messaggi</p></span>
    <p align="right"><%=PrevPage%> | <%=NextPage%></p>
    <% Do while not Rs.EOF

    if Counter=Rs.PageSize then exit do
    if len(rs("note"))>0 then
    note=Replace(rs("note"),vbcrlf,"
    ")
    else
    note=""
    end if

    if len(rs("email"))>0 then
    email=rs("name")
    else
    email=rs("name")
    end if
    %>

    <center>
    <table border="0" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
    <tr>
    <td width="15%">
    <div align="left">
    <div align="left" style="color:white; font-size: 12px; ">Nome: </div>
    </div></td>
    <td><div align="left" style="color:white; font-size: 12px; "><%=email%></div></td>
    </tr>
    <tr>
    <td><div align="left" style="color:white; font-size: 12px; ">Data:

    </div></td>
    <td><div align="left">
    <div align="left" style="color:white; font-size: 12px; "><%=rs("date")%>

    </div>
    </div></td>
    </tr>
    <tr>
    <td valign="top"><div align="right">
    <div align="left" style="color:white; font-size: 12px; ">Messaggio: </div>
    </div></td>
    <td><div align="left" style="color:white; font-size: 12px; "><%=note%></div></td>
    <tr>
    <td valign="top" nowrap><div align="right"></div></td>
    <td width="800px"><div align="left" >
    <div align="left">
    <hr size=1></div>
    <tr bgcolor="@@( _index & 1 ? '#C0C0C0' : '#C0C0C0')@@"> </div></td></p>
    </table>
    </center>
    </div>

    <%
    new_date = kaos_date("%D/%M/%Y", date)
    %>

    <%
    Rs.MoveNext
    Counter=Counter+1
    loop

    Rs.Close
    Conn.Close
    set Rs=nothing
    set Conn=nothing
    %>

    <p align="right"><%=PrevPage%> | <%=NextPage%></p>
    </body>

    </html>

  6. #6
    Yro, can you help me ???

  7. #7
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Originariamente inviato da matthew_skinner
    Yro, can you help me ???
    dovè il problema?
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  8. #8
    Che inserendo l'istruzione

    <%
    new_date = kaos_date("%D/%M/%Y", date)
    %>

    nel file view.asp non succede proprio nulla. Ho provato anche a fare altre modifiche ma l'ora del msg non viene visualizzata. Secondo te dove sbaglio?

  9. #9
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    spetta...

    la formattazione la puoi usare inserendo la data nel db... poi quando prelevi i dati non ti serve formattarla.

    ma avevi provato anche ad inserirla nel db con now()?
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  10. #10
    Quindi la formattazione non va in visualizzazione. Ma dentro il db?

    No, non avevo provato ad utilizzare il now() perchè non avevo capito bene dove dovevo inserirla.

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.