Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    popolamento select dinamiche

    Ciao, sto provando a fare 3 select dinamiche con ajax, ho copiato pari pari l'esempio riportato qui:
    http://www.mrwebmaster.it/ajax/artic...-php_1062.html

    sembra anche piuttosto semplice e chiaro, il problema che mi rimangono tutte 3 le select vuote, non si popolano....che può essere?
    5ym0

  2. #2
    Scusate avevo commesso io un errore di connessione al db. ora funziona in parte.
    mi mette sia le province che i comuni uno in fila all'altro senza andare a capo. Come posso fare? grazie
    5ym0

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da Symon83
    Scusate avevo commesso io un errore di connessione al db. ora funziona in parte.
    mi mette sia le province che i comuni uno in fila all'altro senza andare a capo. Come posso fare? grazie
    Non ti pare di essere un tantinello vago nelle spiegazioni? Forse hai troppa fiducia nelle capacita' degli utenti del forum se speri che qualcuno possa darti utili consigli sena vedere una sola linea del codice che stai usando...
    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

  4. #4
    è pari pari a quello che trovate nel link che ho postato in alto...per quello non l'ho copiato, cmq per intenderci copio tutto:
    index.php:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">

    // Select Province e Comuni dalla Regione. 
    function selProvCom(idRegion) {
      // Seleziono province di questa regione. 
      $.get("select_abitativa.php", { regionid: idRegion, requestItems: 'province'}, 
      function(dataProvince){
        $("select[id='province']").empty(); 
        var options = '-- seleziona --';
        var arrayProvince = dataProvince.split( '||');
        for (var i = 1; i < arrayProvince.length; i++) {
          var provincia = arrayProvince[i].split( /,/);
          options += '' + provincia[1] + '';
        }
        $("select[id='province']").html(options);
      });

      // Seleziono comuni di questa regione. 
      $.get("select_abitativa.php", { regionid: idRegion, requestItems: 'comuni'}, 
      function(dataComuni){
        $("select[id='city']").empty();
        var options = '-- seleziona --';
        var arrayComuni = dataComuni.split( '||');
        for (var i = 1; i < arrayComuni.length; i++) {
          var comune = arrayComuni[i].split( /,/);
          options += '' + comune[1] + '';
        }
        $("select[id='city']").html(options);
      });
    }

    // Select dei Comuni dalla Provincia. 
    function selCom(idProvincia) {    
      // Seleziono comuni di questa provincia. 
      $.get("select_abitativa.php", { provinciaid: idProvincia, requestItems: 'comuni'}, 
      function(dataComuni){
        $("select[id='city']").empty();
        var options = '-- seleziona --';
        var arrayComuni = dataComuni.split( '||');
        for (var i = 1; i < arrayComuni.length; i++) {
          var comune = arrayComuni[i].split( /,/);
          options += '' + comune[1] + '';
        }
        $("select[id='city']").html(options);
      });
    }
    </script>

    </head>

    <body>



    <label for="region">Regione:</label>

    <select id="region" name="region" onchange="selProvCom(this.value);">
    <option value="" selected="selected">-- seleziona --</option>
    <?php
    // Collegamento ad database. 
    include("config.inc4.php");

    // Query selezione tutte le regioni. 
    $sql "select * from regioni order by regione"

    // Eseguo la query. 
    $result mysql_query($sql$conn); 
    while(
    $region mysql_fetch_array($result)) {
    ?>
    <option value="<?php echo $region['id']; ?>"><?php echo $region['regione']; ?></option>
    <?php
    }
    ?>
    </select>
    </p>



    <label for="province">Provincia:</label>

    <select id="province" name="province" onchange="selCom(this.value);">
    <option value="" selected="selected">-- seleziona --</option>
    <?php

    // Query selezione tutte le province. 
    $sql "select * from province order by provincia"

    // Eseguo la query. 
    $result mysql_query($sql$conn); 
    while(
    $province mysql_fetch_array($result)) {
    ?>
    <option value="<?php echo $province['id']; ?>"><?php echo $province['provincia']; ?></option>
    <?php
    }
    ?>
    </select>
    </p>



    <label for="city">Città:</label>

    <select id="city" name="city">
    <option value="" selected="selected">-- seleziona --</option>
    </select>
    </p>



    </body>
    </html>
    select_abitativa.php:
    Codice PHP:
    <?php
    // Seleziona Province e Comuni. 
    include("config.inc4.php");

    if (isset(
    $_GET['regionid']) and is_numeric($_GET['regionid'])) {
      if (isset(
    $_GET['requestItems']) and $_GET['requestItems']==='province') {
        
    $regionID intval($_GET['regionid']);
        
    $query = <<<EOQ
    SELECT * 
    FROM province 
    WHERE id_regione = '
    $regionID
    ORDER BY provincia
    EOQ;
        
    $result mysql_query($query$conn);
        
    $returnProvince '';
        while (
    $row mysql_fetch_array($result)) {
          
    $returnProvince .= "||".$row['id'].",".$row['provincia'];
        }
        
    print_r($returnProvince);
      } 
      else if (isset(
    $_GET['requestItems']) and $_GET['requestItems']==='comuni') {
        
    $regionID intval($_GET['regionid']);
        
    $query = <<<EOQ
    SELECT * 
    FROM comuni 
    WHERE id_regione = '
    $regionID
    ORDER BY comune
    EOQ;
        
    $result mysql_query($query$conn);
        
    $returnComuni '';
        while (
    $row mysql_fetch_array($result)) {
          
    $returnComuni .= "||".$row['id'].",".$row['comune'];
        }
        
    print_r($returnComuni);
      }

    else if (isset(
    $_GET['provinciaid']) and is_numeric($_GET['provinciaid'])) {
      if (isset(
    $_GET['requestItems']) and $_GET['requestItems']==='comuni') {
        
    $provinciaID intval($_GET['provinciaid']);
        
    $query = <<<EOQ
    SELECT * 
    FROM comuni 
    WHERE id_provincia = '
    $provinciaID
    ORDER BY comune
    EOQ;
        
    $result mysql_query($query$conn);
        
    $returnComuni '';
        while (
    $row mysql_fetch_array($result)) {
          
    $returnComuni .= "||".$row['id'].",".$row['comune'];
        }
        
    print_r($returnComuni);
      }
    }
    ?>
    problema: con firefox mi popola correttamente province e comuni in base alla regione ma tutte uno in fila all'altro senza andare a capo. Con IE quando seleziono la regione non popola ne provincia ne comune...scusate se prima son stato poco chiaro, grazie
    5ym0

  5. #5
    UUUUUPPP
    5ym0

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    71
    Ho il tuo stesso identico problema, mi si vede solo la prima select e non le altre...mi rimangono bianche.Perchè?

  7. #7
    Non lo so...non son riuscito a risolvere la cosa e non ho trovato aiuto purtroppo
    5ym0

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    15
    ciao,
    non so come funziona il vostro script ma vi posso consigliare uno che sicuramente funziona e facile da capire e potete modificare per le vostre esigenze come ho fatto io

    una cosa importante nel label for,select id e select name devono essere uguali al nome delle tabelle usate

    ora vi posto il codice(ajax)

    index.html
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <
    title>Esempio liste di selezione in cascata</title>
    <
    script type="text/javascript" src="lists.js"></script>
    <style type="text/css">
    body {
        font-family: verdana, sans-serif;
        font-size: 9pt;
    }
    select {
        width: 200px;
        margin: 5px 0;
    }
    fieldset {
        border: 1px solid #d0d0d0;
        padding: 5px;
        width: 220px;
    }
    </style>
    </head>
    <body>
    <form action="index.html" method="post">
    <fieldset>
    <label for="regioni">Regioni</label>

    <select name="regioni" id="regioni" onChange="loadList('province', getSelected(this))" >
    </select>

    <label for="province">Province</label>

    <select name="province" id="province">
    </select>

    <input type="submit" name="submit" value="Invia" />
    </fieldset>
    </form>

    <script type="text/javascript">
    //<![CDATA[
    loadList('regioni', 0);
    //]]>
    </script>
    </body>
    </html> 
    request.php
    Codice PHP:
     <?php
    require 'dbconfig.php';
    $conn mysql_connect(DB_HOSTDB_USERDB_PASSWORD) or die;
    mysql_select_db(DB_NAME) or die;
    //I valori in input vanno verificati
    //id deve essere un valore numerico
    $pid = (int)$_REQUEST['id'];
    //maschera  eventuali caratteri speciali in table 
    $tb mysql_real_escape_string($_REQUEST['table'], $conn);

    switch(
    $tb) {
        case 
    'regioni':
            
    $sql="SELECT id, nome FROM `$tb` ORDER BY nome";
            break;
        case 
    'province':
            
    $sql="SELECT id, nome FROM `$tb` WHERE id_regione=$pid ORDER BY nome";
            break;
    }
    //Il primo elemento della risposta è il nome della tabella (= attributo ID del tag select)
    $out="$tb;";
    if(
    $result mysql_query($sql$conn)) {
        while (
    $row mysql_fetch_row($result)) {
            
    $out .= $row[0] . '|' $row[1] . ';';
        }
    }
    //Rimuove il carattere ; in coda
    echo rtrim($out';');
    ?>
    list.js
    Codice PHP:
    var xmlHttp getXmlHttpObject();

    function 
    loadList(tbid){
    xmlHttp.open('GET''request.php?table='+tb+'&id='+idtrue);
    xmlHttp.onreadystatechange stateChanged;
    xmlHttp.send(null);
    }
    function 
    addOption(selectvaluetext) {
        
    //Aggiunge un elemento <option> ad una lista <select>
        
    var option document.createElement("option");
        
    option.value value,
        
    option.text text;
        try {
            
    select.add(optionnull);
        } catch(
    e) {
            
    //Per Internet Explorer
            
    select.add(option);
        }
    }
    function 
    getSelected(select) {
        
    //Ritorna il valore dell'elemento <option> selezionato in una lista
        
    return select.options[select.selectedIndex].value;
    }
    function 
    stateChanged() {
        if(
    xmlHttp.readyState == 4) {
            
    //Stato OK
            
    if (xmlHttp.status == 200) {
                var 
    resp xmlHttp.responseText;
                
                if(
    resp) {
                    
    //Le coppie di valori nella striga di risposta sono separate da ;
                    
    var values resp.split(';');
                    
    //Il primo elemento è l'ID della lista.
                    
    var listId values.shift();
                    var 
    select document.getElementById(listId);
                    
    //Elimina i valori precedenti
                    
    while (select.options.length) {
                        
    select.remove(0);
                    } 
                    
                    if(
    listId == 'regioni') {
                        
    addOption (select0'-- Selezionare regione --');
                    }
                    var 
    limit values.length;
                    
                    for(
    i=0limiti++) {
                        var 
    pair values[i].split('|');
                        
    //aggiunge un elemento <option>
                        
    addOption(selectpair[0], pair[1]);
                    }
                }
            } else {
                
    alert(xmlHttp.responseText);
            }
        }
    }

    function 
    getXmlHttpObject()
    {
      var 
    xmlHttp=null;
      try
        {
        
    // Firefox, Opera 8.0+, Safari
        
    xmlHttp=new XMLHttpRequest();
        }
      catch (
    e)
        {
        
    // Internet Explorer
        
    try
          {
          
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
        catch (
    e)
          {
          
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        }
      return 
    xmlHttp;

    dbconfig.php
    Codice PHP:
    <?php
    //Modify constants with data needed to access your own database
    define('DB_HOST','localhost');
    define('DB_NAME','testdb');
    define('DB_USER','testuser');
    define('DB_PASSWORD','test');
    ?>
    in fine il file sql
    db.sql
    Codice PHP:
      CREATE TABLE `regioni` (
      `
    idint(11NOT NULL auto_increment,
      `
    nomevarchar(30NOT NULL,
      
    PRIMARY KEY  (`id`)
    );

    -- 
    -- 
    Dump dei dati per la tabella `regioni`
    -- 

    INSERT INTO `regioni` (`id`, `nome`) VALUES 
    (1'Lombardia'),
    (
    2'Liguria'),
    (
    3'Toscana'),
    (
    4'Campania');

    CREATE TABLE `province` (
      `
    idint(11NOT NULL auto_increment,
      `
    id_regioneint(11NOT NULL,
      `
    nomevarchar(30NOT NULL,
      
    PRIMARY KEY  (`id`)
    );

    -- 
    -- 
    Dump dei dati per la tabella `province`
    -- 

    INSERT INTO `province` (`id`, `id_regione`, `nome`) VALUES 
    (11'Milano'),
    (
    21'Bergamo'),
    (
    32'Genova'),
    (
    42'Savona'),
    (
    53'Firenze'),
    (
    63'Lucca'),
    (
    74'Napoli'),
    (
    84'Avellino'),
    (
    94'Salerno'); 

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    71
    Non mi funziona...ho provato, facendo tutto e inserendo i miei dati sql, non mi seleziona nemmeno le regioni.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    15
    Ciao dany

    prima di tutto mentre ti rispondevo mi sono accorto di un errore il file js si kiama lists no list
    prova prima di tutto a cambire ilnome se non va continua a leggere ciò che to scritto
    scusa per l'errore




    non so cosa te hai fatto ma di sicuro funziona
    allora per capire
    i nome dei file sono giusti? sono 4 dbconfig.php, request.php, lists.js e db.sql
    hai creato un file db.sql?
    se si
    sei andato su phpmyadmin ed hai importato il database

    nel file config devi solo cambiare user e password tutto il resto lo lasci come


    fammi sapere

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.