Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757

    Numero combinazioni possibili in un form dati

    Ciao a tutti e benritrovati.

    In un form ho 6 select:
    codice:
    <select size="1" name="campouno" style="font-size: 8 pt; font-family: Verdana"> 
    <select size="1" name="campodue" style="font-size: 8 pt; font-family: Verdana">
    <select size="1" name="campotre" style="font-size: 8 pt; font-family: Verdana">
    <select size="1" name="campoquattro" style="font-size: 8 pt; font-family: Verdana">
    <select size="1" name="campocinque" style="font-size: 8 pt; font-family: Verdana"> 
    <select size="1" name="camposei" style="font-size: 8 pt; font-family: Verdana">
    che richiamano dei valori contenuti in un tabella di un database access 2000.

    Selezionando una o più valori simultaneamente dalle select si passa successivamente ad una serie di query asp che processano i dati provenienti dalle select a secondo della loro combinazione... il problema è che con sei select il numero di combinazioni possibili e che si incrociano è piuttosto alto (campouno+campodue, campodue+campotre, campotre+campoquattro... etc) e questo mi costringe a prevedere una serie di query combinate un pò pesanti e tutta una serie di:
    codice:
    if...elseif...end if
    Mi chiedevo se esiste un altro metodo più veloce per prevedere tutte queste combinazioni (le più immediate e dirette sono 16) o magari un controllo (in javascript forse? o anche in asp?) che limiti a 3-4 voci la possibilità di selezionare i valori nelle select...

    Sapete aiutarmi? grazie.

  2. #2
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    ma queste combinazioni...cosa sono?
    xchè se devi comporre la query solo basandosi sui campi selezionati o non selezionati è semplice:

    sql=""
    if request("campouno")<>"" then
    sql=sql&" campouno='"&request("campouno")&"'"
    end if
    if request("campodue")<>"" then
    if sql<>"" then sql=sql&" OR " end if
    sql=sql&" campodue='"&request("campodue")&"'"
    end if
    if request("campotre")<>"" then
    if sql<>"" then sql=sql&" OR " end if
    sql=sql&" campodue='"&request("campotre")&"'"
    end if

    sql="SELECT * FROM tabella WHERE "&sql

    ma se era così forse lo avresti già fatto.

    Cosa intendi per limitare?

  3. #3
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Grazie per la risposta; le combinazioni sono, ad esempio:

    valoredellaprimaselect + valoredellasecondaselect + ... etc

    Cioè:

    -dalla prima select seleziono Pippo, dalla seconda select seleziono Roma... la query dovrebbe estrarre tutti i Pippo di Roma...

    -dalla prima select seleziono Tizio... la query dovrebbe estrarre i Tizio di tutta Italia...

    -dalla seconda select seleziono Roma...la query dovrebbe estrarre i registrati di Roma...

    ...e via dicendo... mi segui?

    Per limitare intendo dire che dopo aver selezionato tre valori da tre select, lo script ti impedisca di selezionarne un quarto da un'altra select... questo per ridurre il numero delle combinazioni e degli incroci possibili...

  4. #4
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    allora puoi usare il metodo che ti ho mostrato prima,in modo da includere nella query solo i parametri selezionati,giusto?

    per limitare le scelte puoi usare un js che disabiliti le select non ancora selezionate una volta raggiunto il num. max di parametri selezionabili,ovvero (prendilo come esempio,e magari chiedi nel forum js):

    codice:
    <html>
    <head>
    <title>Untitled</title>
    
    <script>
    function CheckMaxSel(){
    var n_sel=0
    var selezioni=document.nome_form.getElementsByTagName('select'); 
      for (var i=0; i<selezioni.length; i++){ 
         if (document.nome_form.elements[selezioni[i].name].value!=""){
            n_sel=n_sel+1
         }
      }
    
      if (n_sel>=2){
         for (var i=0; i<selezioni.length; i++){ 
            if (document.nome_form.elements[selezioni[i].name].value==""){ 
               document.nome_form.elements[selezioni[i].name].disabled=true
            }
         }
      }
    
    }
    
    </script>
    </head>
    <body>
    <form name="nome_form">
    
    <select name ="pippo" onchange="CheckMaxSel()">
    <option value="">seleziona</option>
    <option value="1">1</option>
    <option value="1">1</option>
    <option value="1">1</option>
    </select>
    <select name ="pippo2" onchange="CheckMaxSel()">
    <option value="">seleziona</option>
    <option value="1">1</option>
    <option value="1">1</option>
    <option value="1">1</option>
    </select>
    <select name ="pippo3" onchange="CheckMaxSel()">
    <option value="">seleziona</option>
    <option value="1">1</option>
    <option value="1">1</option>
    <option value="1">1</option>
    </select>
    
    
    </form>
    </body>
    </html>

  5. #5
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    ti ringrazio, ma non mi è molto chiaro il metodo che suggerisci... le select del form sono sei e la query deve funzionare sia se gli arriva un solo valore o più valori o tutti i valori... :master:

  6. #6
    comunque non capisco perchè complicarsi la vita. C'è un motivo particolare per cui non vuoi che uno selezioni più di n select?

    Se non c'è alla fine sono 6 if...fai anche 12 per quelli interni...


    codice:
    query = "SELECT * FROM tabella"
    
    if request.form("campo1") <>"" then
      if instr(1,query,"WHERE")=0 then
        query = query & " WHERE campo1='"&request.form("campo1")&"'"
      else
        query = query & " AND campo1='"&request.form("campo1")&"'"
      end if
    end if
    
    if request.form("campo2") <>"" then
      if instr(1,query,"WHERE")=0 then
        query = query & " WHERE campo2='"&request.form("campo2")&"'"
      else
        query = query & " AND campo2='"&request.form("campo2")&"'"
      end if
    end if
    
    ....
    
    if request.form("campo6") <>"" then
      if instr(1,query,"WHERE")=0 then
        query = query & " WHERE campo6='"&request.form("campo6")&"'"
      else
        query = query & " AND campo6='"&request.form("campo6")&"'"
      end if
    end if
    
    ....
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  7. #7
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    eh.infatti il metodo che ti abbiam suggerito io e Shagrat fa questo ,veramente il mio prevede almeno una selezione,ma basta poco x farli accettare anche nessuna selezione,e cmq 1 o 6 è lo stesso, con le if metti nlla quesry solo le select che sono valorizzate,quindi...

  8. #8
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Grazie Shagrat... in realtà il motivo per cui volevo limitare il numero di select selezionate era per ridurre il limite di combinazioni possibili, perchè avevo pensato ad un metodo diverso da quello che proponi... adesso provo e vi faccio sapere, per il momento vi ringrazio...

  9. #9
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    ... dunque il metodo funziona (avevo pochi dubbi in realtà...)
    Grazie di tutto...

  10. #10
    posta il codice della pagina...così è un po' difficile capire l'errore
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

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.