• User Attivo

    script regioni provincie e comuni

    Ciao a tutti,
    ho un database con tre tabelle (Regioni, Provincie, Comuni)
    ora devo fare una form con tre Select.
    Nella prima la regione, nella seconda le provincie e nella terza le città/paesi.
    Selezionando la regione, la seconda si riempie delle provincie di quella regione, selezionando la seconda, la terza si riempie dei comuni di quella provincia.
    Il tutto estraendo i dati dal database...
    come posso fare?
    soluzioni?
    resto in attesa dei vostri cari suggerimenti...
    Ciao!!

    nessun suggerimento?
    vi prego [...]...!


  • Consiglio Direttivo

    Ciao talkoman

    le provincie e comuni sono legati alla tabella padre da qualcosa?
    esempio:

    regione
    id | descrizione
    1 | Sicilia

    provincia
    *id |descrizione| id_regione
    *1 | Catania | 1

    comune
    *id |descrizione| id_provincia
    *1 | Acitrezza | 1

    Se si (anche perché personalmente non troverei altri modi) ti basterà assegnare una query ad ogni select per tirar fuori i dati legati alla tabella padre

    Regione:

    SELECT descrizione FROM regione
    ```Provincie:
    

    SELECT descrizione FROM provincie WHERE id_regione='$id_regione'

    SELECT descrizione FROM comuni WHERE id_provincia='$id_provincia'

    Per ottenere gli id ovviamente ti recuperi il dato postato dalla select a cui assegnerai come value l'id dell'elemento ;)

  • User

    credo di aver capito....tu vuoi che il tutto venga fatto "al volo" no?

    Piccolo problema....tu abla espanol!? 🙂

    Vai qui...

    www . desarrolloweb.com/articulos/1281.php


  • User Attivo

    vi faccio vedere cosa dovrei fare.
    Provate a compilare questo form:
    tecnocasa.it/commerciale/txtsearch/searchi.jsp?conf=ra&orig=SitoTecnocasa


  • Consiglio Direttivo

    vedo che già funziona........non è ben chiaro allora che vorresti fare :mmm:

    Se come dice ciccio6630 vuoi che ti si faccia senza l'aggiornamento pagina allora devi ricorrere al Js o ajax 😉


  • User Attivo

    quello non l'ho fatto io.
    Ne devo realizzare uno uguale e mi serve una mano....


  • Consiglio Direttivo

    bene....le query da fare sono quelle...
    dove hai dubbi?


  • User Attivo

    come fargliele eseguire ogni volta che cambio regione....


  • Consiglio Direttivo

    In PHP non puoi far altro che mettere un bel tasto submit dato che è un linguaggio lato server
    In Js (ovvero com'è fatto in quel sito da te linkato)

    [php]<select onchange="document.nome_form.submit()" name="region">[/php]
    ricarica la pagina alla selezione di una nuova regione e ti raccogli i dati postati per rieseguire le query


  • User Attivo

    @Samyorn said:

    ricarica la pagina alla selezione di una nuova regione e ti raccogli i dati postati per rieseguire le query

    ecco....proprio questo non so fare.....:bho:


  • Consiglio Direttivo

    Ah, ecco 😄
    Allora prova così, dovrebbe andare 😉
    [php]<?
    $id_regione="";
    $id_provincia="";
    $id_comune="";

    $id_regione=$_POST['regione'];
    $id_provincia=$_POST['provincia'];
    $id_comune=$_POST['comune'];
    ?>

    <form action="page.php" name="search" method="POST">
    <select onchange="document.search.submit()" name="regione">
    <option value="">Scegli regione...</option>
    <?
    $sql_regione="SELECT * FROM regione ORDER BY descrizione";
    $query_regione=@mysql_query($sql_regione) or die (mysql_error());
    while ($array=mysql_fetch_array($query_regione))
    {
    ?>
    <option value="<? echo $array['id']; ?>"<? if ($id_regione==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
    <?
    }
    ?>
    </select>

    <select onchange="document.search.submit()" name="provincia">
    <option value="">Scegli provincia...</option>
    <?
    $sql_provincia="SELECT * FROM provincia";
    if ($id_regione!="")
    {
        $sql_provincia.=" WHERE id_regione='$id_regione'";
    }
    $sql_provincia.=" ORDER BY descrizione";
    $query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
    while ($array=mysql_fetch_array($query_provincia))
    {
    ?>
        <option value="<? echo $array['id']; ?>"<? if ($id_provincia==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
    <?
    }
    ?>
    </select>
    
    <select onchange="document.search.submit()" name="comune">
    <option value="">Scegli il comune...</option>
    <?
    $sql_comuni="SELECT * FROM comuni";
    if ($id_provincia!="")
    {
        $sql_comuni.=" WHERE id_provincia='$id_regione'";
    }
    $sql_comuni.=" ORDER BY descrizione";
    $query_comunia=@mysql_query($sql_comuni) or die (mysql_error());
    while ($array=mysql_fetch_array($query_comunia))
    {
    ?>
        <option value="<? echo $array['id']; ?>"<? if ($id_comune==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
    <?
    }
    ?>
    </select>
    

    </form>[/php]


  • User Attivo

    ehi grazie tante per il codice.
    l'ho provato ma non va....
    Cioè le select si riempiono ma sono bianche.....
    non si vede il contenuto!!!
    e in più pur non scegliendo la regione, sia comune che provincia sono piene.... :s


  • Consiglio Direttivo

    Io ho messo dei nomi campo a caso, devi sistemarli per come hai impostato tu il Db
    L'ho testato e funziona, devi solo cambiare questa riga, ho dimenticato di cambiare la variabile...ma comunque mi funziona 😉
    [php]$sql_comuni.=" WHERE id_provincia='$id_provincia'";[/php]EDIT:
    si, tira fuori cmq i dati, cambiala così:

    [php]<?
    $id_regione="";
    $id_provincia="";
    $id_comune="";

    $id_regione=$_POST['regione'];
    $id_provincia=$_POST['provincia'];
    $id_comune=$_POST['comune'];
    include "config.inc.php";
    ?>

    <form action="index.php" name="search" method="POST">
    <select onchange="document.search.submit()" name="regione">
    <option value="">Scegli regione...</option>
    <?
    $sql_regione="SELECT * FROM regione ORDER BY descrizione";
    $query_regione=@mysql_query($sql_regione) or die (mysql_error());
    while ($array=mysql_fetch_array($query_regione))
    {
    ?>
    <option value="<? echo $array['id']; ?>"<? if ($id_regione==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
    <?
    }
    ?>
    </select>

    <select onchange="document.search.submit()" name="provincia">
    <option value="">Scegli provincia...</option>
    <?
    $sql_provincia="SELECT * FROM provincia WHERE id_regione='$id_regione' ORDER BY descrizione";
    $query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
    while ($array=mysql_fetch_array($query_provincia))
    {
    ?>
        <option value="<? echo $array['id']; ?>"<? if ($id_provincia==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
    <?
    }
    ?>
    </select>
    
    <select onchange="document.search.submit()" name="comune">
    <option value="">Scegli il comune...</option>
    <?
    $sql_comuni="SELECT * FROM comuni  WHERE id_provincia='$id_provincia' ORDER BY descrizione";
    $query_comunia=@mysql_query($sql_comuni) or die (mysql_error());
    while ($array=mysql_fetch_array($query_comunia))
    {
    ?>
        <option value="<? echo $array['id']; ?>"<? if ($id_comune==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
    <?
    }
    ?>
    </select>
    

    </form>[/php]


  • User Attivo

    si ho già adattato alle mie esigenze....ma non funziona lo stesso....
    posto?


  • Consiglio Direttivo

    Ho editato prova in quel modo 😉

    se non funziona nemmeno così posta la pagina e la struttura delle tabelle 😉


  • User Attivo

    ecco la pagina compro.php

    [PHP]<?php
    $id_regione="";
    $id_provincia="";
    $id_comune="";

    $id_regione=$_POST['regione'];
    $id_provincia=$_POST['provincia'];
    $id_comune=$_POST['comune'];
    ?>

    <form action="compro.php" name="search" method="POST">
    <select onchange="document.search.submit()" name="regione">
    <option value="">Scegli regione...</option>
    <?php
    $sql_regione="SELECT nome,codice FROM regioni ORDER BY nome";
    $query_regione=@mysql_query($sql_regione) or die (mysql_error());
    while ($rigaR=mysql_fetch_array($query_regione)){
    $regione=$rigaR['nome'];
    $idRegione=$rigaR['codice'];
    echo "<option value='$idRegione'";
    if ($id_regione==$idRegione)
    echo " selected";
    echo $regione ."</option>";
    }
    ?>
    </select></td>
    </tr>
    <tr>
    <td>Provincia: </td>
    <td>
    <select onchange="document.search.submit()" name="provincia">
    <option value="">Scegli provincia...</option>
    <?php
    if(isset($id_regione)){
    $sql_provincia="SELECT * FROM province WHERE codice_regione='$id_regione' ORDER BY nome";
    $query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
    while ($rigaP=mysql_fetch_array($query_provincia)){
    $provincia=$rigaP['nome'];
    $idProvincia=$rigaP['codice'];
    echo "<option value='$idProvincia'";
    if ($id_provincia==$idProvincia) {echo " selected";}
    echo $provincia."</option>";
    }}
    ?>
    </select></td>
    </tr>
    <tr>
    <td>Comune: </td>
    <td>
    <select onchange="document.search.submit()" name="comune">
    <option value="">Scegli il comune...</option>
    <?php
    if(isset($id_provincia)){
    $sql_comuni="SELECT * FROM comuni WHERE codice_provincia='$id_provincia' ORDER BY nome";
    $query_comuni=@mysql_query($sql_comuni) or die (mysql_error());
    while ($rigaC=mysql_fetch_array($query_comuni)){
    $comune=$rigaC['nome'];
    $idComune=$rigaC['codice'];
    echo "<option value='$idComune'";
    if ($id_comune==$idComune) {echo " selected";}
    echo $comune."</option>";
    }}
    ?>
    </select></td>
    </tr>
    </form>[/PHP]

    Tabelle:
    COMUNI
    id
    codice_provincia
    codice
    nome

    PROVINCE
    id
    codice_regione
    codice
    nome

    REGIONI
    id
    codice
    nome


  • Consiglio Direttivo

    ti eri dimenticato di chiudere i tag delle <option**>

    **[PHP]<?php
    $id_regione="";
    $id_provincia="";
    $id_comune="";

    $id_regione=$_POST['regione'];
    $id_provincia=$_POST['provincia'];
    $id_comune=$_POST['comune'];
    ?>

    <form action="index.php" name="search" method="POST">
    <select onchange="document.search.submit()" name="regione">
    <option value="">Scegli regione...</option>
    <?php
    $sql_regione="SELECT nome,codice FROM regioni ORDER BY nome";
    $query_regione=@mysql_query($sql_regione) or die (mysql_error());
    while ($rigaR=mysql_fetch_array($query_regione)){
    $regione=$rigaR['nome'];
    $idRegione=$rigaR['codice'];
    echo "<option value='$idRegione'";
    if ($id_regione==$idRegione)
    echo " selected";
    echo ">".$regione ."</option>";
    }
    ?>
    </select></td>
    </tr>
    <tr>
    <td>Provincia: </td>
    <td>
    <select onchange="document.search.submit()" name="provincia">
    <option value="">Scegli provincia...</option>
    <?php
    if(isset($id_regione)){
    $sql_provincia="SELECT * FROM province WHERE codice_regione='$id_regione' ORDER BY nome";
    $query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
    while ($rigaP=mysql_fetch_array($query_provincia)){
    $provincia=$rigaP['nome'];
    $idProvincia=$rigaP['codice'];
    echo "<option value='$idProvincia'";
    if ($id_provincia==$idProvincia) {echo " selected";}
    echo ">".$provincia."</option>";
    }}
    ?>
    </select></td>
    </tr>
    <tr>
    <td>Comune: </td>
    <td>
    <select onchange="document.search.submit()" name="comune">
    <option value="">Scegli il comune...</option>
    <?php
    if(isset($id_provincia)){
    $sql_comuni="SELECT * FROM comuni WHERE codice_provincia='$id_provincia' ORDER BY nome";
    $query_comuni=@mysql_query($sql_comuni) or die (mysql_error());
    while ($rigaC=mysql_fetch_array($query_comuni)){
    $comune=$rigaC['nome'];
    $idComune=$rigaC['codice'];
    echo "<option value='$idComune'";
    if ($id_comune==$idComune) {echo " selected";}
    echo ">".$comune."</option>";
    }}
    ?>
    </select></td>
    </tr>
    </form>[/PHP]


  • User Attivo

    grazie!!!
    un genio!!


  • User Attivo

    ciao :sbav:
    allora
    in questo script ci sono tre select

    ex

    lombardia milano rho O
    puglia foggia vieste

    nel mio script eseguo la ricerca in rappresentanti e il risultato sarebbe ex

    1 Giorgio O
    2 Gianni

    MA SE IO VOLESSI OLTRE ALLA RICERCA CE NEL RISULTATO MI COMPARISSE .... ex

    lombardia milano rho 1 Giorgio O

    puglia foggia vieste 2 Gianni

    cosa devo fare...............

    <?php
    require('config.php');
    ?>
    <?php
    $id_regioni="";
    $id_provincie="";
    $id_comuni="";
    $id_regioni=$_POST['regione'];
    $id_provincie=$_POST['provincia'];
    $id_comuni=$_POST['comune'];
    ?>
    <form action="<?php $_SERVER["PHP_SELF"]?>" name="search" method="POST">
    <select onchange="document.search.submit()" name="regione">
    <option value="">Scegli regione...</option>
    <?php
    $sql_regione="SELECT * FROM regioni ORDER BY nome";
    $query_regione=@mysql_query($sql_regione) or die (mysql_error());
    while ($rigaR=mysql_fetch_array($query_regione)){
    $regione=$rigaR['nome'];
    $idRegione=$rigaR['id_regioni'];
    echo "<option value='$idRegione'";
    if ($id_regioni==$idRegione)
    echo " selected";
    echo ">".$regione ."</option>";
    }
    ?>
    </select></td>
    </tr>
    <tr>
    <td>Provincia: </td>
    <td>
    <select onchange="document.search.submit()" name="provincia">
    <option value="">Scegli provincia...</option>
    <?php
    if(isset($id_regioni)){
    $sql_provincia="SELECT * FROM provincie WHERE id_regioni='$id_regioni' ORDER BY nome";
    $query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
    while ($rigaP=mysql_fetch_array($query_provincia)){
    $provincia=$rigaP['nome'];
    $idProvincia=$rigaP['id_provincie'];
    echo "<option value='$idProvincia'";
    if ($id_provincie==$idProvincia) {echo " selected";}
    echo ">".$provincia."</option>";
    }}
    ?>
    </select></td>
    </tr>
    <tr>
    <td>Comune: </td>
    <td>
    <select onchange="document.search.submit()" name="comune">
    <option value="">Scegli il comune...</option>
    <?php
    if(isset($id_provincie)){
    $sql_comuni="SELECT * FROM comuni WHERE id_provincie='$id_provincie' ORDER BY nome";
    $query_comuni=@mysql_query($sql_comuni) or die (mysql_error());
    while ($rigaC=mysql_fetch_array($query_comuni)){
    $comune=$rigaC['nome'];
    $idComune=$rigaC['id_comuni'];
    echo "<option value='$idComune'";
    if ($id_comuni==$idComune) {echo " selected";}
    echo ">".$comune."</option>";
    }}
    ?>
    </select></td>
    </tr>
    <label>
    <?php
    $sql_rappresentanti = "SELECT * FROM rappresentanti WHERE id_comuni='$id_comuni' ORDER BY nome";
    $query_rappresentanti=@mysql_query($sql_rappresentanti) or die (mysql_error());
    while ($rapp=mysql_fetch_array($query_rappresentanti))
    {
    $nome=$rapp['nome'];
    $id=$rapp['id_rappresentanti'];
    echo "</br>$id $nome</br>";
    }
    //libero memoria
    mysql_free_result($result);
    //chiudo la connessione
    mysql_close();
    ?>
    </form>

    thanks💋💋💋


  • Consiglio Direttivo

    Se strutturi la tabella rappresentanti così

    id | nome | id_comuni

    immagino dovresti scrivere
    [PHP] $sql_rappresentanti = "SELECT * FROM rappresentanti WHERE id_comuni='$id_comuni' ORDER BY nome";
    $query_rappresentanti=@mysql_query($sql_rappresentanti) or die (mysql_error());
    while ($rapp=mysql_fetch_array($query_rappresentanti))
    {
    $nome=$rapp['nome'];
    $id=$rapp['id'];
    echo "</br>$id $nome</br>";
    }[/PHP]
    :wink3: