• User Attivo

    Esempio in javascript

    Ciao a tutti, è la prima volta che scrivo in questa parte del forum di solito bazzico in php, e volevo chiedervi una cosa che secondo me avete lo stomaco pieno, io ho una tabella marche in una combo, al click mi dovrebbe riempire una seconda combo con i modelli legat a quelle marche, un po come regioni, province, regioni
    il tutto deve essere dinamico, i dati li prelevo dal db, non so se ci debba essere anche una pagina php, per la verità a me javascript attualmente risulta arabo
    mi basta un link o un esempio
    me lo studio prima e nel caso avessi problemi vi disturberò.
    Un grazie in anticipo da danny:ciauz:


  • Super User

    Ciao danny1975,
    ti posso dare alcune dritte:
    innanzitutto ti consiglio di utilizzare un framework come jQuery.
    Con jQuery ti verrà più semplice utilizzare funzioni ajax.
    Poi dovresti cercare come si popola in javascript una select.


  • User Attivo

    Ciao ayrton, grazie per le indicazioni, ma purtroppo non riesco a capire come rendere lo script dinamico, ho trovato questo che a dire il vero fa ciò che mi servirebbe ma il tutto è statico, ho letto che dovrei abbinare ad esso una pagina php, mi potresti aiutare a renderlo dinamico
    [PHP]
    <script type="text/javascript">

    var bluesplayers= new Array("B.B. King", "Muddy Waters", " Stevie Ray Vaughan", "George Thorogood");
    var rockplayers = new Array("Alvin Lee", "David Gilmour", "Pete Townshend", "Jeff Beck");
    function set_player() {
    var select_genre = document.myform.genre;
    var select_player = document.myform.player;
    var selected_genre = select_genre.options[select_genre.selectedIndex].value;
    select_player.options.length=0;
    if (selected_genre == "blues"){
    for(var i=0; i<bluesplayers.length; i++)
    select_player.options[select_player.options.length] = new Option(bluesplayers*);
    }
    if (selected_genre == "rock"){
    for(var i=0; i<rockplayers.length; i++)
    select_player.options[select_player.options.length] = new Option(rockplayers*);
    }
    }

    </script>
    </head>
    <body>
    <h1>Select doppia</h1>
    <form name="myform" method="POST">
    <table>
    <tr>
    <td>Testo:</td><td><INPUT TYPE="text" NAME="username" SIZE="8" MAXLENGTH="8">
    </td></tr>
    <tr>
    <td>Genre:</td><td>
    <select name="genre" onChange="set_player()">
    <option value="blues">Select One
    <option value="blues">Blues
    <option value="rock">Rock
    </select>
    </td>
    </tr><tr>
    <td>Guitarist:</td><td>
    <select name="player">
    <option>------
    </select>
    </td></tr>
    </table>
    </form>
    [/PHP]
    Grazie in anticipo del tuo aiuto


  • User Attivo

    Ciao a tutti, rieccomi con lo stesso problema, ma questa volta penso di aver fatto un passettino in avanti, vi dico solo che lo stesso pezzo di codice messo da solo funziona mentre inserito nella pagina interessata non ne vuole sapere, vi posto il codice
    index_1.php (funziona bene)
    [php]
    <html>
    <head>
    </head>
    <body>

        <select id="id" name="marca">
        <option value="Qualsiasi">Seleziona regione</option>
            <?php
    require 'connessione/Config.php';
    require 'connessione/Connect.php'; 
    $query_1=mysql_query("SELECT * FROM t_marche")
    or die("errore nella query;".mysql_error());
    for($a=0; $a<mysql_num_rows($query_1);$a++)
     {
      $elenco_2=mysql_fetch_assoc($query_1);
       print"
        <option value='".intval($elenco_2['id_marca'])."'>
        ".$elenco_2['desc_marca']."
        </option>";
     }
    

    ?>
    </select>
    <select id="zona" name="zona">
    <option value="Qualsiasi">Qualsiasi</option>
    </select>

    <script type="text/javascript" src="accattp://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
        $('#id').change(function(){
            $('#zona').load('sel_modelli.php?id='+$('#id').val());
        });
    </script>
    

    </body>
    </html>
    [/php]
    sel_modelli.php
    [php]
    <?php
    require 'connessione/Config.php';
    require 'connessione/Connect.php';
    $res = "<option value="Qualsiasi">Qualsiasi</option>\n";
    if( isset($_GET['id']) && ctype_alnum($_GET['id']) ){
    //Quì metti il codice per generare l'html da mettere direttalmente nella <select>
    $query_1=mysql_query("SELECT * FROM t_modelli where id_marca = '$id'")
    or die("errore nella query;".mysql_error());
    for($a=0; $a<mysql_num_rows($query_1);$a++)
    {
    $elenco_1=mysql_fetch_assoc($query_1);
    $res .= "<option value='".intval($elenco_1['id_modello'])."'>
    ".$elenco_1['desc_modello']."
    </option>";
    }
    }
    echo $res;
    ?>
    [/php]
    index.php (non funziona)
    [php]
    <head>
    </head>
    <?php
    require 'connessione/Config.php';
    require 'connessione/Connect.php';
    ?>
    <script type="text/javascript" src="accattp://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
    $('#id').change(function(){
    $('#zona').load('sel_modelli.php?id='+$('#id').val());
    });
    </script>
    <body>
    <form name="Form" method="post" action="add_articoli">
    <table cellpadding="0" cellspacing="0" border="0" width="430">
    <tr>
    <td align="left" height="18" bgcolor="#333333">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
     Registrazione articolo
    </font>
    </td>
    </tr>
    <tr><td height="9"></td></tr>
    </table>
    <table cellspacing="0" cellpadding="0" border="0">
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Codice articolo
    </font>
    </td>
    <td align="left">
    <input type="text" name="cod_a"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:130px; height:15px;">
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Codice originale
    </font>
    </td>
    <td align="left">
    <input type="text" name="cod_o"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:130px; height:15px;">
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Selez. categoria
    </font>
    </td>
    <td align="left">
    <select name="doc" style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:136px; height:21px;">
    <?php
    $query_1=mysql_query("SELECT * FROM t_categorie")
    or die("errore nella query;".mysql_error());
    for($a=0; $a<mysql_num_rows($query_1);$a++)
    {
    $elenco_categ=mysql_fetch_assoc($query_1);
    print"
    <option value='".intval($elenco_categ['id_categoria'])."'>
    ".$elenco_categ['desc_categoria']."
    </option>";
    }
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Seleziona marca
    </font>
    </td>
    <td align="left">
    <select id="id" name="marche"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:136px; height:21px;">
    <option value="seleziona">seleziona marca</option>
    <?php
    $query_2=mysql_query("SELECT * FROM t_marche")
    or die("errore nella query;".mysql_error());
    for($b=0; $b<mysql_num_rows($query_2);$b++)
    {
    $elenco_marche=mysql_fetch_assoc($query_2);
    print"
    <option value='".intval($elenco_marche['id_marca'])."'>
    ".$elenco_marche['desc_marca']."
    </option>";
    }
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Selez. modello
    </font>
    </td>
    <td align="left">
    <select id="zona" name="provincia"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:136px; height:21px;">
    <option value="Qualsiasi">Qualsiasi</option>
    </select>
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Nome articolo
    </font>
    </td>
    <td align="left">
    <input type="text" name="nome_a"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:300px; height:15px;">
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Imponib acquisto
    </font>
    </td>
    <td align="left">
    <input type="text" name="nome_a"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:80px; height:15px;">
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Imposta %
    </font>
    </td>
    <td align="left">
    <select name="doc" style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:50px; height:21px;">
    <?php
    $query_3=mysql_query("SELECT * FROM t_iva")
    or die("errore nella query;".mysql_error());
    for($c=0; $c<mysql_num_rows($query_3);$c++)
    {
    $elenco_iva=mysql_fetch_assoc($query_3);
    print"
    <option value='".intval($elenco_iva['id_iva'])."'>
    ".$elenco_iva['desc_iva']."
    </option>";
    }
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Imponib vendita
    </font>
    </td>
    <td align="left">
    <input type="text" name="nome_a"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:80px; height:15px;">
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Quantità
    </font>
    </td>
    <td align="left">
    <input type="text" name="nome_a"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:43px; height:15px;">
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="75">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Note
    </font>
    </td>
    <td align="left">
    <textarea name="nome_a"
    style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
    font-size: 8pt; width:300px; height:65px;">
    </textarea>
    </td>
    </tr>
    <tr>
    <td align="left" width="110" height="25">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    Seleziona
    </font>
    </td>
    <td align="left">
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    3 porte
    </font>
    <input type=checkbox name="nome_a">
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    [/php]
    Avrei 2 cose da chiedervi, la prime e se mi date una mano a trovare l'errore, la seconda, vorrei sapere se questa cosa poteva essere fatta meglio
    Grazie da danny


  • Super User

    Cerca con Google: jQuery ajax populate select.
    Ci sono diversi esempi/tutorial


  • User Attivo

    Ok, mo lo faccio
    Grazie ancora poi ti farò sapere l'esito

    Ciao da danny:?


  • User Attivo

    Ciao Ayrton sto impazzendo, ho fatto delle ricerche, ma non mi portono da nessuna parte. Potremmo prendere un codice come riferimento e poi lavorarci sopra.
    Puoi dirmi: questa cosa già è stata fatta, sono d'accordo, ma in non riesco a trovarla.
    Proviamo così forse è meglio, non so più cosa fare

    Ciao da danny


  • Super User

    Basati su questo tutorial: www. chazzuka .com /blog/?p=80