Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    popolare select dinamicamente

    ciao, chi mi aiuta a popolare sta select?


    codice:
        <script language="JavaScript">
        var arItems = new Array()
        arItems = [
        <?
        $cmd = "SELECT db_sw_id, db_version_id, version FROM db_version";
        $rs = mysql_query($cmd);
        while($aItems = mysql_fetch_array($rs)){
            echo "[".$aItems['db_sw_id']."," .$aItems['db_version_id'].",'".$aItems['version']."']";
        }
        ?>
        ]
        </script>
        <script>
        function fillItems( intStart ) {
            var fTypes = document.form1.db_sw
            var fItems = document.form1.db_version
            var a = arItems
            var b, c, d, intItem, intType
            if ( intStart > 0 ) {
                for ( b = 0; b < a.length; b++ ) {
                    if ( a[b][1] == intStart ) {
                        intType = a[b][0];
                    }
                }
                for ( c = 0; c < fTypes.length; c++ ) {
                    if ( fTypes.options[ c ].value == intType ) {
                        fTypes.selectedIndex = c;
                    }
                }
            }
            if ( intType == null ) {
                intType = fTypes.options[ fTypes.selectedIndex ].value
            }
            fItems.options.length = 0;
                for ( d = 0; d < a.length; d++ ) {
                    if ( a[d][0] == intType ) {
                        fItems.options[ fItems.options.length ] = new Option( a[d][2], a[d][1] ); // no line-break here
                    }
                if ( a[d][1] == intStart ) {
                    fItems.selectedIndex = fItems.options.length - 1;
                }
            }
        }
        </script>

    a questo punto basterebbe richiamare la funzione all'onchange..

    codice:
        <td>
        <SELECT name="db_sw" id="db_sw" onChange="fillItems(0);">
        <option value="">select a sw type...</option>
        <?
        $type_list = GetListing("db_sw", "db_sw_id, db_sw_name");
        foreach($type_list as $k => $v ) {
            echo "<option value=\"$k\">$v</option>\n";
        }
        ?>
        </SELECT>
        </td>
        <td>
        <SELECT name="db_version" id="db_version">
        </SELECT>
    ma non riesco a farlo funzionare.. qualcuno capisce il perché?
    casomai il tutorial é qui:

    http://www.devarticles.com/c/a/Java...us-Client-Side/

    ps: getListing non fa altro che scrivere le option della prima select....
    alcool: la causa e la soluzione di tutti i problemi

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Posta solo il codice come lo riceve il browser... cosi' come e' frammisto al PHP non si capisce nulla

    ciao
    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
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    codice:
    var arItems = new Array()
    arItems = [
    [1,1,'8.1.7.3.0 - 64bit Production']
    [1,2,'8.1.7.3.0 - Production'][1,3,'8.1.7.4.0 - 64bit Production']
    [1,4,'9.0.1.5.1 - Production']
    [1,5,'9.2.0.1.0 - Production'][1,6,'9.2.0.3.0 - Production']
    [1,7,'9.2.0.4.0 - 64bit Production'][2,8,'9.2.0.4.0 - Production']
    [2,25,'12345hhh']
    ]
    </script>
    <script>
    function fillItems( intStart ) {
        var fTypes = document.add_db.db_sw;
        var fItems = document.add_db.db_version;
        var a = arItems;
        var b, c, d, intItem, intType;
        if ( intStart > 0 ) {
            for ( b = 0; b < a.length; b++ ) {
                if ( a[b][1] == intStart ) {
                    intType = a[b][0];
                }
            }
            for ( c = 0; c < fTypes.length; c++ ) {
                if ( fTypes.options[ c ].value == intType ) {
                    fTypes.selectedIndex = c;
                }
            }
        }
        if ( intType == null ) {
            intType = fTypes.options[ fTypes.selectedIndex ].value;
        }
        fItems.options.length = 0;
            for ( d = 0; d < a.length; d++ ) {
                if ( a[d][0] == intType ) {
                    fItems.options[ fItems.options.length ] = new Option( a[d][2], a[d][1] ); // no line-break here
                }
            if ( a[d][1] == intStart ) {
                fItems.selectedIndex = fItems.options.length - 1;
            }
        }
    }
    </script>
    nella prima parte ho l'array (che ho definito col php)
    nella seconda c'é la funzione (che non penso funzioni)

    codice:
    <td>
    <SELECT name="db_sw" id="db_sw" onChange="fillItems(0);">
      <option value="">select a sw type...</option>
      <option value="1">oracle</option>
      <option value="2">mysql</option>
      <option value="3">SQL Server</option>
      <option value="5">test</option>
    </SELECT>
    </td>
    
    <td>
    <SELECT name="db_version" id="db_version">
    </SELECT>
    </td>
    la seconda select é vuota perché dovrebbe essere popolata dalla funzione..

    help
    alcool: la causa e la soluzione di tutti i problemi

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Mancano le virgole nella definizione dell'array... e altre cosette:

    var arItems = new Array(
    [1,1,'8.1.7.3.0 - 64bit Production'],
    [1,2,'8.1.7.3.0 - Production'],
    [1,3,'8.1.7.4.0 - 64bit Production'],
    [1,4,'9.0.1.5.1 - Production'],
    [1,5,'9.2.0.1.0 - Production'],
    [1,6,'9.2.0.3.0 - Production'],
    [1,7,'9.2.0.4.0 - 64bit Production'],
    [2,8,'9.2.0.4.0 - Production'],
    [2,25,'12345hhh']
    )

    ciao
    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

  5. #5
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    grazie!

    altre cosette? cosa?
    alcool: la causa e la soluzione di tutti i problemi

  6. #6
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    in effetti mi é bastato mettere le virgole... manca altro? in ogni caso funziona...
    grazie
    alcool: la causa e la soluzione di tutti i problemi

  7. #7
    ciao!
    ho provato il codice ma quando lo eseguo (da locale) mi da un'errore: 'document.add_db.db_sw' è nullo o non è un oggetto'
    cosa vuol dire?

    La stringa dei dati (arItems) e stata inserita direttamente nel codice javascript dell'html senza usare php (con le dovute virgole).

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    add_db e' il nome del form che contiene la select.

    ciao
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    27
    ho due problemi... non so javascript! l'altro è che io dovrei popolare una serie di select prendendo il contenuto da un array che mi creo dinamicamente con php.
    Perquanto riguarda il php tutto ok, il problema sorge quando voglio crearmi la select... non so proprio dove mettere mano... qualcuno mi aiuta a capire?
    ad esempio vorrei questo risultato:

    <select name="valoriCaricati">
    <option value="250"> abc</option>
    <option value="96">cca</option>
    <option value="250">ddd</option>
    .....
    </select>

    e i valori vengono dall'array

    var valori = new array()

    valori = [
    [250,'abc'],
    [96,'cca'],
    [250,'ddd'],
    ...
    ]

    please help me!!!

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.