Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [ASP] Rating System

  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    [ASP] Rating System

    Ciao.

    Faccio riferimento al seguente articolo web per l'implementazione di un sistema di rating in pagine ASP:

    http://www.devarticles.com/c/a/ASP/A...stem-With-ASP/

    Sono riuscito a personalizzarlo alle mie esigenze, adattandolo a un DB MySQL e utilizzando un'unica tabella, ma non riesco a capire perchè quando visualizzo per ciascun record il proprio rating, succede che il record seguente a quello che ha un rating ( quindi è stato valutato dai visitatori ) assuma come rating quello del record che lo precede.

    Ad esempio:

    Ho un record con rating 1 lo estraggo e quello immediatamente successivo anche se non ha nessuna valutazione, assume anche lui valore 1.

    La estrazione è eseguita randomicamente con la sintassi BY RAND() prevista da MySQL.

    Credo che il problema sia da individuare in questa porzione di codice che è quella che assegna le "stelline" a secondo del rating, ma non riesco a capire dove sia l'errore:

    codice:
    if Instr(1, CStr(avgRating), ".") > 0 then 
    
    'The average rating is a decimal, we need to either 
    'round the value up/down 
    
    avgWhole = Left(CStr(avgRating), Instr(1, CStr(avgRating), ".")-1) 
    decPart = Mid(CStr(avgRating), Instr(1, CStr(avgRating), ".")+1, 2) 
    
    if decPart <> "" then 
    'Work out whether or not we have to round this 
    'rating up or down 
    
    if CInt(decPart) >= 5 then 
    decCalc = .5 
    else 
    decCalc = 0 
    end if 
    
    finalRating = CInt(avgWhole) + CCur(decCalc) 
    
    else 
    finalRating = avgRating 
    end if 
    else 
    finalRating = avgRating 
    end if 
    
    'Setup the alt text for the images 
    altText = "Average visitor rating of " & finalRating & " out of 10" 
    
    for i = 1 to CInt(finalRating) 
    Response.Write "[img]rating_on.gif[/img]" 
    next 
    
    if CInt(finalRating) <> finalRating then 
    'This article has a .5 rating, such as 5.5 
    Response.Write "[img]rating_half.gif[/img]" 
    
    for i = CInt(finalRating)+2 to 8 
    Response.Write "[img]rating_off.gif[/img]" 
    next 
    else 
    for i = CInt(finalRating)+1 to 8 
    Response.Write "[img]rating_off.gif[/img]" 
    next 
    end if 
    
    if CInt(finalRating) <> finalRating then 
    'This article has a .5 rating, such as 5.5 
    Response.Write "[img]rating_half.gif[/img]" 
    
    <h2><%=rs.Fields(1).Value%></h2> 
    Rated: <%=rs.Fields(0).Value%>
    Grazie!
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    ma tu dici solo in fase di visualizzazione? metti tutta una serie di response.write per controlalre il corretto comportamento degli if e lo svuotamento di variabili sensibili
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da Santino83_02
    ma tu dici solo in fase di visualizzazione? metti tutta una serie di response.write per controlalre il corretto comportamento degli if e lo svuotamento di variabili sensibili
    Si dico in fase di visualizzazione.

    Ho seguito il tuo consiglio ed ho "sparso" una serie di response.write nel codice:

    codice:
    for i = 1 to CInt(finalRating) 
    response.write "A"
    Response.Write "[img]../news/starimages/star.gif[/img]" 
    
    next 
    
    if CInt(finalRating) <> finalRating then 
    response.write "B"
    Response.Write "[img]../news/starimages/rating_star_blank.png[/img]" 
    
    for i = CInt(finalRating)+2 to 8 
    response.write "C"
    Response.Write "[img]../news/starimages/rating_star_blank.png[/img]" 
    
    next 
    else 
    for i = CInt(finalRating)+1 to 8
    response.write "D"
    Response.Write "[img]../news/starimages/rating_star_blank.png[/img]" 
    
    next 
    end if 
    
    if CInt(finalRating) <> finalRating then 
    response.write "E"
    Response.Write "[img]../news/starimages/rating_star_blank.png[/img]" 
    end if
    Il risultato è che si verificano sempre le condizioni A (stellina rossa) e D (stellina bianca); ma il problema persiste:

    Record votato:
    Valutazione: AAAAADDD
    Numero voti: 1
    Punteggio: 5

    Record successivo con voti = 0
    Valutazione: AAAAADDD
    Numero voti: 0
    Punteggio: 0


    Com'è possibile ????
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

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 © 2026 vBulletin Solutions, Inc. All rights reserved.