Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema Select Case su Array

    ciao, ho realizzato una paginetta di statistiche, ma ho un problema quando analizzo l' User-Agent, vi posto il codice poi vi dico il problema:

    codice:
    ' Analisi User-Agent
    sql = "SELECT browser FROM statistiche"
    Set rs = Server.createObject("ADODB.Recordset") 
    rs.Open sql, cn 
    
    browser = LCase(rs("browser"))
    
    Dim count_browser(5)
    
    Do While NOT rs.EOF
    	
    	' conteggio browser
    	Select Case i > 0
    	Case i = Instr(browser, "safari")
    		count_browser(1) = count_browser(1)+1
    	Case i = Instr(browser, "firefox")
    		count_browser(2) = count_browser(2)+1
    	Case i = Instr(browser, "chrome")
    		count_browser(3) = count_browser(3)+1
    	Case i = Instr(browser, "opera")
    		count_browser(4) = count_browser(4)+1
    	Case i = Instr(browser, "msie")
    		count_browser(5)= count_browser(5)+1
    	Case else
    		count_browser(0) = count_browser(0)+1
    	End Select
    
    	rs.MoveNext
    Loop 
    
    rs.Close 
    Set rs = Nothing
    Questo codice mi restituisce il valore 3342 all'array count_browser(0) mentre negli altri il valore è nullo.

    Ho fatto un response.write(browser) del primo rs è mi da:
    "mozilla/5.0 (compatible; msie 9.0; windows nt 6.1; trident/5.0)"
    quindi LCase mi ha trasformato correttamente tutto in minuscolo, e come si può notare all'interno c'è anche "msie" che però non vede in "Instr(browser, "msie")"...
    Ho provato anche con il compara "1" ma niente..

    Poi una volta risolto questo problemi avrei bisogno di qualche suggerimento per ordinare gli arrai dal valore più grande al più piccolo.

    Thanks!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma da dove l'hai pescata quella sintassi per la Select Case?

    http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx

    Ti consiglio l'uso di If ... EleseIf ... Else ... EndIf
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    mai visto costruire una select case in quel modo...

    secondo me dovresti procedere con una serie di "IF INSTR..."

  4. #4
    diciamo che son stato creativo...
    pensare che ero convinto che potesse funzionare
    ok, proverò le condizioni If ... EleseIf ... Else ... EndIf e IF INSTR

    per ordinare invece gli array dal valore più grande al più piccolo? l'unico metodo è quello di confrontarli uno ad uno?

    @Optime: non mi son dimenticato che ti devo una birra

    Grazie ragazzi
    ciao

  5. #5
    non esistono istruzioni native per riordinare gli array: o usi uno dei tanti metodi (il più semplice è il bubble sort) oppure usi un recordset disconnesso (cerca nel forum, se ne è parlato)

  6. #6
    arieccomi!

    Spulciando in giro ho trovato 3 metodi per ordinare un array: con JS, Bubble Sort e Record disconnesso.

    Ho provato con Js mi sembra semplice ed intuitivo:

    codice:
    <script language="JScript" runat="server">
    function JSSort(myArray)
    {
    	var arr = new VBArray(myArray).toArray();
    	arr.sort();
    	arr.reverse();
    	return arr;
    }
    </script>
    
    <script language="VBScript" runat="server">
    function Sort(myArray)
    	Sort = Split(JSSort(myArray), ",")
    end function
    </script>
    
    
    <%
    Dim arr, i
    
    arr = Array(20, 4, 8, 50, 33, 1)
    
    arr = Sort(arr)
    
    For i = 0 To UBound(arr)
    	Response.Write (arr(i) & "
    ")
    Next 'i	
    %>
    però mi restituisce
    codice:
    8
    50
    4
    33
    20
    1
    Mi ordina i valori in modo decrescente solo in base al primo numero, quindi i valori li considera come stringhe e non me integer, cosa devo modificare?

  7. #7
    Risolto!!
    Ho usato questo codice di Bubble Sort qua http://www.4guysfromrolla.com/webtech/011601-1.shtml
    faceva proprio per le mie esigenze in cui un array era composto da un testo e un valore numerico.

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.