Select concatenate php sql ajax

Emix

Utente Attivo
15 Feb 2010
596
0
16
Buonasera, sto diventando matto... Sono partito dallo script classico di province regioni comuni.
Mi occorre modificarlo avendo solamente due select concatenate, in una i destinatari e nella seconda eventuali destinazioni.

La tabella destinatari:

id_destinatario
ragione sociale

La tabella destinazioni:
id_destination
id_destinatario
indirizzo

Ho provato modificando lo script e ottengo i seguenti file:

Index:
HTML:
<!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">
    <meta name="author" content="Tarchini Maurizio">

    <script type="text/javascript" src="jquery-1.3.2.js"></script>

    <link href="screen.css" rel="stylesheet" type="text/css" />
    <title>Regioni, province, comuni | Your Inspiration Web</title>
    
    <script type="text/javascript">
    $(document).ready(function(){

        var scegli = '<option value="0">Scegli...</option>';
        var attendere = '<option value="0">Attendere...</option>';
        
        $("select#province").html(scegli);
        $("select#province").attr("disabled", "disabled");
        $("select#comuni").html(scegli);
        $("select#comuni").attr("disabled", "disabled");
        
        
        $("select#regioni").change(function(){
            var regione = $("select#regioni option:selected").attr('value');
            $("select#province").html(attendere);
            $("select#province").attr("disabled", "disabled");
            $("select#comuni").html(scegli);
            $("select#comuni").attr("disabled", "disabled");
            
            $.post("select.php", {id_destinatario:destinatari}, function(data){
                $("select#province").removeAttr("disabled");
                $("select#province").html(data);   
            });
        });   
        
        $("select#province").change(function(){
            $("select#comuni").attr("disabled", "disabled");
            $("select#comuni").html(attendere);
            var provincia = $("select#province option:selected").attr('value');
            $.post("select.php", {id_pro:provincia}, function(data){
                $("select#comuni").removeAttr("disabled");
                $("select#comuni").html(data);   
            });
        });   
    });
    
    </script>
</head>
<?php
include_once 'select.class.php';
$opt = new SelectList();
?>
<body>
    <div id="container">
    
    <h1>La cascata regioni - province - comuni</h1>
    <h2>Seleziona una regione e nella select successiva compariranno le province di quella regione</h2>
    <h3>Selezionando una provincia, nella select successiva compariranno i comuni di quella provincia</h3>
    
        <form action="?" id="myform">
            Seleziona una regione:<br />
            <select id="regioni">
                <?php echo $opt->ShowRegioni(); ?>
            </select>
            <br /><br />
        
            Seleziona una provincia:<br />
            <select id="province">
            <option>Scegli...</option>
            </select>
            <br /><br />
        
            Seleziona un comune:<br />
            <select id="comuni">
            <option>Scegli...</option>
            </select>
            
        </div>
    </form>


</body>
</html>

Pagina Select.php:

PHP:
<?php

include_once 'select.class.php';
$opt = new SelectList();

if(isset($_POST['id_destinatario']))
{
    echo $opt->ShowProvince();
    die;
}

if(isset($_POST['id_pro']))
{
    echo $opt->ShowComuni();
    die;
}


?>

Pagina select.class.php:

PHP:
<?php

class SelectList
{
    
    protected $conn;
    
        public function __construct()
        {
            $this->DbConnect();
        }
    
        protected function DbConnect()
        {
            include "db_config.php";
            
            $this->conn = mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
            mysql_select_db($db,$this->conn) OR die("Impossibile selezionare il database $db");
            
            return TRUE;
        }
        
        public function ShowRegioni()
        {
            $sql = "SELECT * FROM destinatari";
            $res = mysql_query($sql,$this->conn);
            $regioni = '<option value="0">scegli...</option>';
            
                while($row = mysql_fetch_array($res))
                {
                    $regioni .= '<option value="' . $row['id_destinatario'] . '">' . utf8_encode($row['ragsociale']) . '</option>';
                }
                
            return $regioni;
        }
        
        public function ShowProvince()
        {
            $sql = "SELECT * FROM destinazioni WHERE id_destinatario=$_POST[id_destinatario]";
            $res = mysql_query($sql,$this->conn);
            $province = '<option value="0">scegli...</option>';
            
                while($row = mysql_fetch_array($res))
                {
                    $province .= '<option value="' . $row['id_destination'] . '">' . utf8_encode($row['indirizzo']) . '</option>';
                }
                
            return $province;
        }
        
        public function ShowComuni()
        {
            $sql = "SELECT * FROM comuni WHERE id_pro=$_POST[id_pro]";
            $res = mysql_query($sql,$this->conn);
            $comuni = '<option value="0">scegli...</option>';
            
                while($row = mysql_fetch_array($res))
                {
                    $comuni .= '<option value="' . $row['id_com'] . '">' . $row['cap'] . ' - ' . utf8_encode($row['comune']) . '</option>';
                }
                
            return $comuni;
        }
}

?>
Come potete vedere ho sostituito le cose che mi servivano ignorando i nomi e ignorando la terza select.
La prima select funziona bene (vedo la lista) la seconda appena clicco, si ferma su attendere... e in console leggo:

(index):32 Uncaught ReferenceError: destinatari is not defined
at HTMLSelectElement.<anonymous> ((index):32)
at HTMLSelectElement.handle (jquery-1.3.2.js:2693)
at HTMLSelectElement.<anonymous> (jquery-1.3.2.js:2468)

Non capisco...

Grazie a chi volesse aiutarmi.
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Cambia var regione in var destinatari.
Anche inizialmente devi impostare un select checked prelesezionato.
Comunque l'attributo disabled va utilizzato solo dopo l'invio dal momento che puoi inviare solamente i dati che hanno il focus se non devi effettuare alcun invio puoi utilizzare disabled in ogni momento.
Alla prossima istruzione (alla pressione di quella select) rimuovi l'attributo e buona codifica.
 
Ultima modifica:

Emix

Utente Attivo
15 Feb 2010
596
0
16
Grazie ci sono riuscito. Preziosi come sempre!

Ho cambiato la var come detto da te, ora completo con gli altri accorgimenti, anche se mi fermo a due select non 3.
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Select Concatenate Ajax, php, sql Presentati al Forum 16
R select concatenate solo php PHP 12
F [Javascript] select list concatenate - passare valore dalla prima alla seconda Javascript 7
neo996sps [Laravel 5.1 + ajax] Popolare select concatenate Regioni, Province, Comuni PHP 1
A select concatenate Javascript 1
N AsmSelect jQuery, Select concatenate jQuery 3
D Select concatenate impostare di default dato memorizzato Javascript 4
ciccio1892 Select concatenate con Ajax inviare scelta utente tramite post insieme ad altri dati form PHP 3
S Select dinamiche concatenate Ajax 8
N Select concatenate Regioni-Province (con Variazione) Javascript 7
N Select concatenate Regioni-Province-Comuni (con Variazione) Javascript 14
B Select concatenate di tutte le province e comuni d'Italia aggiornato al 2007 Presenta il tuo Sito 0
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
otto9due Ordinare option di una select Javascript 5
W MySQL ciclo in SELECT MySQL 0
W MySQL SELECT list dinamica MySQL 0
M Select Option dentro una Table jQuery 2
G Colorare menu select attraverso ricerca php PHP 0
L problema con query select PHP 2
F menù select dinamico da db in php PHP 3
D popolare campi tra th alla select PHP 36
M Estrarre valore con SELECT COUNT PHP 0
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Select Dinamiche...da txt? PHP 3
E Php select option e ajax PHP 23
R Select concatenata che non funziona la seconda volta Ajax 3
L select join e sottrazione punti PHP 13
L input dati con inser into select ? PHP 4
V hierarchy-select jQuery 0
F query e form con select multipla PHP 17
T recupero valori select multipla da android Javascript 3
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
Tommy03 Select in ordine per numero di record MySQL 7
T problema con select dinamica con jquery Javascript 0
J Far comparire e scomparire un div con un select Javascript 1
M Opzioni select da 1 a 200 PHP 0
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
C input in sostituzione della select PHP 2
G Insert into select - Aiuto MySQL 0
max1974 autocomplete trigger select jQuery 0
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
M Estrarre dati da una select HTML PHP 3
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1
T [PHP] Autocompilazione input multiple da una select PHP 1
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
S [PHP] aggiornamento table tramite select senza ricaricare la pagina PHP 5
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
M [PHP] Problema con query select PHP 2
C [PHP] Controllo <select> comportamento anomalo PHP 2
G [PHP] Select con opzioni dipendenti da un'altra select PHP 3

Discussioni simili