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

Discussione: ordinamento da link

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272

    ordinamento da link

    Ciao a tutti, vorrei un consiglio su come realizzare il tipo di ordinamento che devo fare:
    ho una tabella con dei dati, appena apro la pagina si visualizzano i record, nello specifico, ID, COGNOME, NOME_SERVIZIO, SCADENZA,
    vorrei che cliccando su questi campi, i dati venissero ordinati in base al valore cliccato (crescente o decrescente).
    Non so se mi sono spiegata bene, qualcuno può aiutarmi?

  2. #2
    Crea l'intestazione della tabella in questo modo
    praticamente hai delle frecce con il link alla pagina di ricerca alla quale passi il campo* per il quale ordinare e il tipo di ordinamento

    il campo deve essere quello del database

    codice:
    <table border="1">
    <thead>
    <th>
    <td>ID &uarr; &darr;</td>
    <td>COGNOME &uarr; &darr;</td>
    <td>NOME_SERVIZIO &uarr; &darr;</td>
    <td>SCADENZA &uarr; &darr;</td>
    </th>
    </thead>
    ....
    </table>
    Nella pagina asp

    codice:
    orderby =request.item("orderby")
    
    
    sql="select * from tabella"
    if orderby<>"" then
     sql=sql & " order by " & orderby
    end if


    oppure puoi farlo in Javascript
    guarda gli esempi che trovi
    qui
    e qui


    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272
    grazie mille....ci provo subito e poi ti faccio sapere!

  4. #4
    Originariamente inviato da OcchioCrepato
    Crea l'intestazione della tabella in questo modo
    praticamente hai delle frecce con il link alla pagina di ricerca alla quale passi il campo* per il quale ordinare e il tipo di ordinamento

    il campo deve essere quello del database

    codice:
    <table border="1">
    <thead>
    <th>
    <td>ID &uarr; &darr;</td>
    <td>COGNOME &uarr; &darr;</td>
    <td>NOME_SERVIZIO &uarr; &darr;</td>
    <td>SCADENZA &uarr; &darr;</td>
    </th>
    </thead>
    ....
    </table>
    Nella pagina asp

    codice:
    orderby =request.item("orderby")
    
    
    sql="select * from tabella"
    if orderby<>"" then
     sql=sql & " order by " & orderby
    end if


    oppure puoi farlo in Javascript
    guarda gli esempi che trovi
    qui
    e qui


    ciao
    Perdonami, ma il tuo esempio è fallato, ovvero, è soggetto a SQL Injection.
    Se io nella queryString passo "id (DELETE * FROM tabella)"
    vedrai che verrà felicemente interpretato.

  5. #5
    Originariamente inviato da Mems
    Perdonami, ma il tuo esempio è fallato, ovvero, è soggetto a SQL Injection.
    Se io nella queryString passo "id (DELETE * FROM tabella)"
    vedrai che verrà felicemente interpretato.

    Giusta precisazione Mems

    ovviamente bisogna effettuare dei controlli sulla stringa da passare.
    l'ho dato per scontato che bisognasse fare dei controlli ma mi sa che era meglio dirlo

    codice:
    if InStr (1,orderby,"delete")=0 and InStr (1,orderby,"select")=0 and InStr (1,orderby,"update")=0 and InStr (1,orderby,"insert")=0 then
     if orderby<>"" then
      sql=sql & " order by " & orderby
     end if
    end if

  6. #6
    Io farei così: sui link per passare l'ordinamento metterei una queryString del tipo
    ?ord=1 che vuol dire, ad esempio, ID
    ?ord=2 che vuol dire, ad esempio, TITOLO
    eccetera...
    a questo punto, nella pagina asp
    codice:
    ord = request.queryString("ord")
    if len(ord) > 0 and isNumeric(ord) then
    ord = cLng(ord)
    else
    ord = 1
    end if
    
    select case ord
    case 1
    ordinamento = "ID"
    case 2
    ordinamento = "TITOLO"
    case else
    ordinamento = "ID"
    end select
    
    sql = "SELECT * FROM tabella ORDER BY " & ordinamento

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272
    non mi è molto chiaro perchè dovrei fare così:
    ord = request.queryString("ord")
    if len(ord) > 0 and isNumeric(ord) then
    ord = cLng(ord)
    else
    ord = 1
    end if

    select case ord
    case 1
    ordinamento = "ID"
    case 2
    ordinamento = "TITOLO"
    case else
    ordinamento = "ID"
    end select
    Ho usato il primo metodo, solo che l'if l'ho messo prima della query, ho usato request.querystring e mi funziona .

    Grazie.

  8. #8
    Originariamente inviato da darlette
    non mi è molto chiaro perchè dovrei fare così:
    ord = request.queryString("ord")
    if len(ord) > 0 and isNumeric(ord) then
    ord = cLng(ord)
    else
    ord = 1
    end if

    select case ord
    case 1
    ordinamento = "ID"
    case 2
    ordinamento = "TITOLO"
    case else
    ordinamento = "ID"
    end select
    Ho usato il primo metodo, solo che l'if l'ho messo prima della query, ho usato request.querystring e mi funziona .

    Grazie.
    Contenta tu.
    Ciao.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272
    Ho fatto così:

    <%Dim orderby
    orderby=Request.QueryString("orderby")
    %>
    <%
    If orderby = "" Then%>
    <%
    Set Rsv = Server.CreateObject("ADODB.Recordset")
    Rsv.ActiveConnection = MM_cnmain_STRING
    Rsv.Source = "SELECT * FROM servizi Order By nome_servizio"
    Rsv.CursorType = 0
    Rsv.CursorLocation = 2
    Rsv.LockType = 1
    Rsv.Open()

    Rsv_numRows = 0
    %>
    <%Else%>
    <%
    Set Rsv = Server.CreateObject("ADODB.Recordset")
    Rsv.ActiveConnection = MM_cnmain_STRING
    Rsv.Source = "SELECT * FROM servizi Order By " & Replace(orderby,"'","''") & " "
    Rsv.CursorType = 0
    Rsv.CursorLocation = 2
    Rsv.LockType = 1
    Rsv.Open()

    Rsv_numRows = 0
    %>
    <%end if%>




    id[/b]
    cognome
    scadenza


    Funziona...
    perchè non va bene?

  10. #10
    Perchè se nella URL della pagina dopo orderby=id_servizio
    ci aggiungo un po di istruzioni SQL ti stiro il db.
    Si chiama SQL Injection.

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.