Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764

    Problema record corrente

    Il problema è questo: in un elenco faccio variare "class" in base a quale record viene mostrato.

    Mi spiego meglio.

    Ho diverse classi che, nell'elenco, devono essere messe in base a questo criterio:
    primo elemento - class "first"
    secondo elemento - class "second"
    terzo elemento - class "first"
    quarto elemento - class "second"
    ...
    ultimo elemento - class "last" o se i record sono dispari class "first".

    Per esempio, se ho 4 record:
    first
    second
    first
    last

    Se ho 5 record:
    first
    second
    first
    second
    first

    Il problema sta nell'impostare class = "last".

    Posto un codice che mi restuisce questo:
    primo elemento - class "first"
    secondo elemento - class "second"
    terzo elemento - class "first"
    quarto elemento - class "second"
    ...

    codice:
    <ul id="sponsors">
    <%
    boxtype = "first"
    
    SqlString = "SELECT img, id, titolo FROM sponsor WHERE attiva='1' ORDER BY pos ASC"
    SET RS = Conn.Execute(SqlString)
    
    WHILE NOT RS.EOF
    %>
    
    <li class="<%= boxtype %>">
    <a href="javascript:apriPOPUP('sponsor_popup.asp?id=<%=RS("id")>','titolo',640,500,0,0)">
    [img]images/sponsor/mini_thumb/<%=RS([/img]" border="0" alt="<%=RS("titolo")%>" />
    </a>
    
    
    <%
    If boxtype = "first" Then
       boxtype ="second"
    Else
       boxtype = "first"
    End If
    
    RS.MoveNext
    WEND
    %>[/list]
    A questo punto vorrei impostare un ciclo IF che vada a testare se il record corrente è l'ultimo... ma non riesco a venirne a capo.

    Se riuscissi a "ragionare" sul record corrente, farei così:
    - Parto e assegno (al primo) class="first" (adesso è così).

    - Se c'è un solo record, il ciclo è finito.

    - Se c'è più di un record.
    - conto quanti record sono presenti = TOTALE.
    - poi devo assegnare la classe al record successivo.

    Quindi:
    codice:
    IF TOTALE meno la posizione del record precedente =1 AND boxtype del record precedente = "first" THEN 
         (vuol dire che sono arrivato all'ultimo record) boxtype= "last"
    ELSE 
        boxtype = "first".
    END IF
    Qualche idea?

    Grazie!

  2. #2
    Il numero totale di record ottenuti lo conosci tramite la proprietà RecordCount. Potresti provare a ragionare in questi termini:
    codice:
    Totale = RS.RecordCount
    Corrente = 1
    
    While Not RS.EOF
    If(Corrente MOD 2 = 1) Then boxtype = "first"
    Else If(Corrente = Totale) Then boxtype = "last"
    Else boxtype = "second"
    
    ' resto del codice
    [...]
    
    Corrente = Corrente +1
    Rs.MoveNext
    WEnd
    Ciau!
    - Dean

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Grazie per la risposta.

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.