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

    selezione automatica della combo select

    ciao,
    ho due form select in cui con il php mi estraggo in un ciclo while i dati contenuti in due tabelle.
    nella tabella continenti ho 2 campi:

    id_continente / valore_continente

    1 africa
    2 Latin America
    3 asia
    4 europa

    nella tabella nazione ho 3 campi:
    id_nazione, id_continente, valore_nazione.

    l'id_nazione è autoincrement , l'id_continente è il valore corrispondente al continente cui la nazione fa parte, valore_nazione è il nome della nazione.

    quello che vorrei fare è quando seleziono i continenti mi escano nella seconda combo le nazioni correlate.

    ho questo script:
    codice:
    <html>
    <head>
    </head>
    <body>
            <script language="Javascript">
    var IdxsC = new Array();
    var OptsN = new Array();
    
    var oOpt;
    
    <?php
    include("../pannello/dbconnect.php");
    
    $queryC = "SELECT * FROM continente";
    $resultC = mysql_query($queryC) or die(mysql_error());
    
    for ($idxC=0; $datiC = mysql_fetch_array($resultC); $idxC++) {
    ?>
    
    {
        IdxsC[<?=$idxC?>] = <?=$datiC["id_continente"]?>;
        OptsN[<?=$idxC?>] = new Array();
    
    <?php
        $queryN = "SELECT * FROM nazione WHERE id_continente = ".$datiC["id_continente"];
        $resultN = mysql_query($queryN) or die(mysql_error());
    
        for ($idxN=0; $datiN = mysql_fetch_array($resultN); $idxN++) {
    ?>
    
        {
            oOpt = document.createElement("option");
            oOpt.value =<?=$datiN["id_nazione"]?>;
            oOpt.text = <?=$datiN["valore_nazione"]?>;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    <?php
        }
    ?>
    
    }
    
    <?php
    }
    ?>
    
    function GetOptions(idxC) {
        for(var idx=0; idx<IdxsC.length; idx++) {
            if(IdxsC[idx] == idxC) {
                return OptsN[idx];
            }
        }
        return new Array();
    }
    
    function nazione(selezionata) {
        var Opts = GetOptions(selezionata);
    
        document.form1.seconda.options.length = 0;
    
        var oOpt = document.createElement("option");
        oOpt.value = "";
        oOpt.text = "";
        document.form1.seconda.options[0] = oOpt;
    
        for(i=0; i<Opts.length; i++) {
            document.form1.seconda.options[i+1] = Opts[i];
        }
    }
    
            </script>
    
    
    <form name="form1">
    <select name="prima" onChange="nazione(this[this.selectedIndex].value)">
    <?php
    
    echo "<option value=\"\"></option>"; 
    $query = "SELECT * FROM continente";
    $result = mysql_query($query) or die(mysql_error());
    while ($dati = mysql_fetch_array ($result)) {
        echo "<option value=\"".$dati['id_continente']."\">".$dati['valore_continente']."</option>\n";
    }
    ?>
    </select>
    
    <select name="seconda"> </select>
    
    </form>
    
    </body>
    </html>
    solo che non riesco a far uscire le nazioni nella combo...
    dov'è che sbaglio?
    grazie.

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    In questo forum si tratta dei linguaggi di scripting lato client... non tutti (me compreso) sono in grado di capire perfettamente la sintassi, la logica e l'effetto degli script PHP (o altro) che agiscono lato server... per poterti essere d'aiuto devi postare il codice come lo riceve il browser.

    Sara' tua incombenza, dall'esame delle soluzioni proposte, risalire al codice lato server in grado di generarlo.

    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
    ciao,
    grazie per la risposta.

    dunque tutto il codice php che mi permette di popolare le combo funziona perfettamente. almeno con la selezione manuale.
    quello che non funziona è il codice javascript che mi permette di effettuare la selezione automatica.
    immagino sia difficile, perchè è un misto di php e javascript, ma quello che vorrei verificare (lasciando perdere le query e il php che come ho detto funziona) con voi del forum di scripting è proprio quella parte, anche perchè di javascript non sono proprio un esperto.

    grazie per la pazienza

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    devi postare il codice come lo riceve il browser.
    ... almeno nei tratti essenziali: form, select con relativa gestione eventi, qualche option (per avere un'idea del loro contenuto), tutti gli script...

    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
    ah ok.
    allora ti posto come la riceve il browser.

    codice:
    <html>
    <head>
    </head>
    <body>
            <script language="Javascript">
    var IdxsC = new Array();
    var OptsN = new Array();
    
    var oOpt;
    
    
    {
        IdxsC[0] = 1;
        OptsN[0] = new Array();
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =1;
            oOpt.text = Camerun;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =2;
            oOpt.text = Egypt;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =3;
            oOpt.text = Rwanda;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =4;
            oOpt.text = Senegal;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =5;
            oOpt.text = South Africa;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =6;
            oOpt.text = Zambia;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
    }
    
    
    {
        IdxsC[1] = 2;
        OptsN[1] = new Array();
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =7;
            oOpt.text = Argentina;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =8;
            oOpt.text = Brasil;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =9;
            oOpt.text = Chile;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =10;
            oOpt.text = Colombia;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =11;
            oOpt.text = Cuba;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
    }
    
    
    {
        IdxsC[2] = 3;
        OptsN[2] = new Array();
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =12;
            oOpt.text = Hong Kong;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =13;
            oOpt.text = India;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =14;
            oOpt.text = Japan;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
    }
    
    
    {
        IdxsC[3] = 4;
        OptsN[3] = new Array();
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =15;
            oOpt.text = Belgique;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =16;
            oOpt.text = France;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =17;
            oOpt.text = Italia;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =18;
            oOpt.text = Portugal;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
        {
            oOpt = document.createElement("option");
            oOpt.value =19;
            oOpt.text = Espana;
            OptsN[$idxC][$idxN] = oOpt;
        }
    
    
    }
    
    
    function GetOptions(idxC) {
        for(var idx=0; idx<IdxsC.length; idx++) {
            if(IdxsC[idx] == idxC) {
                return OptsN[idx];
            }
        }
        return new Array();
    }
    
    function nazione(selezionata) {
        var Opts = GetOptions(selezionata);
    
        document.form1.seconda.options.length = 0;
    
        var oOpt = document.createElement("option");
        oOpt.value = "";
        oOpt.text = "";
        document.form1.seconda.options[0] = oOpt;
    
        for(i=0; i<Opts.length; i++) {
            document.form1.seconda.options[i+1] = Opts[i];
        }
    }
    
            </script>
    
    
    <form name="form1">
    <select name="prima" onChange="nazione(this[this.selectedIndex].value)">
    <option value=""></option><option value="1">Africa</option>
    <option value="2">Latin America</option>
    <option value="3">Asia</option>
    
    <option value="4">Europe</option>
    </select>
    
    <select name="seconda"> </select>
    
    </form>
    
    </body>
    </html>
    come dicevo la combo continenti è popolata, ma in quella delle nazioni non appare nulla.

  6. #6

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Quando assegni una stringa ad una variabile devi delimitarle con gli apici... per esempio:

    oOpt.text = "South Africa";

    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

  8. #8
    allora, ho aggiunto gli apici:

    oOpt.text = "<?=$datiN["valore_nazione"]?>";

    dove valore_nazione è la nazione.

    ho guardato l'output della pagina e in ogni nazione ci sono gli apici, ma non funziona lo stesso!

    esempio dell'output:



    codice:
    {
            oOpt = document.createElement("option");
            oOpt.value =5;
            oOpt.text = "South Africa";
            OptsN[$idxC][$idxN] = oOpt;
        }
    ho provato anche a mettere gli apici alla variabile oOpt.value =

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.