form dinamico

Ciao a tutti,

ho un problema da rislvere relativo ad un form che ha un campo select che visualizza tutti gli stati del mondo. Se scelgo l'italia deve visualizzarmi un menu a tendina con tutte le province d'italia e uno con le località in modo che appena scelgo la provincia mi si visualizzo solo le località di quella provincia.

Ci sto sbattendo la testa da un pò mi spiegate come è possibile fare questo tipo di form?

Grazie

 :bye:

inviato 10 anni fa
stellina
X 0 X

io ho qualcosa che fa al caso tuo però è in Jscript se va bene cmq ti mando un pvt perchè non mi sembra il forum adatto.

 :bye:

risposto 10 anni fa
yusizu
X 0 X

fai una ricerca sul forum, se n'è già parlato

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Il fatto è che non riesco a far funzionare il terzo select.

con il primo scelgo le nazioni, con il secondo le province solo se la nazione è Italia e con il terzo seleziono le localita. Ma nelle localita prende tutte le localita inserite nel db e non quelle specifiche di una det provincia....

<?php

error_reporting(E_ALL);

$stato_opt = '';

$province_opt = '';

$localita_opt = '';

$stati = @mysql_query('SELECT stato FROM stati_nazioni ORDER BY stato ASC');

if (!$stati) {

   exit('<p>Unable to obtain author list from the database.</p>');

}

                  

                  

while ($stat = mysql_fetch_array($stati)) {

   

   $stato = htmlspecialchars($stat['stato']);

   $selected = (isset($_POST['stato']) && $_POST['stato'] == $stato) ? 'selected="selected"' : '';

   $stato_opt .= "<option value=\"$stato\" $selected>$stato</option>\n";

}

if($_POST)

{

   if($_POST['nome'] !='')

   {

      echo 'Tutti i dati sono stati inviati';

      exit();

   }

   if($_POST['stato'] == 'Italia')

   {

      $provinc = @mysql_query('SELECT nome_prov,sigla_prov FROM province ORDER BY nome_prov ASC');

      if (!$provinc) {

         exit('<p>Unable to obtain author list from the database.</p>');

      }

                        

                        

      while ($data = mysql_fetch_array($provinc)) {

         $nome_prov = htmlspecialchars($data['nome_prov']);

         $sigla_prov = htmlspecialchars($data['sigla_prov']);

         $selected = (isset($_POST['sigla_prov']) && $_POST['sigla_prov'] == $sigla_prov) ? 'selected="selected"' : '';

         $province_opt .= "<option value=$sigla_prov $selected>$nome_prov</option>\n";

      }

   }

   if($_POST['sigla_prov'] != '')

   {

      //$loc = @mysql_query("SELECT nome FROM localita WHERE sigla=" . $_POST['sigla_prov'] ." ORDER BY nome ASC");

      $loc = @mysql_query("SELECT nome FROM localita ORDER BY nome ASC");

      if (!$loc) {

         exit('<p>Unable to obtain author list from the database.</p>');

      }

      while ($dat = mysql_fetch_array($loc)) {

         $nome = htmlspecialchars($dat['nome']);

         $selected = (isset($_POST['nome']) && $_POST['nome'] == $nome) ? 'selected="selected"' : '';

         $localita_opt .= "<option value=\"$nome\" $selected>$nome</option>\n";

      }

   }

}

costruisci_form($stato_opt,$province_opt,$localita_opt);

function costruisci_form($stato, $province, $localita)

{

   ?>

<form id="form1" name="form1" method="post" action="">

  <p>

    <label>Stato

    <select name="stato" id="stato" onchange="javascript: document.form1.submit();">

      <option value="">-- seleziona uno stato --</option>

     <?php echo "$stato"; ?>

    </select>

    </label>

  </p>

  <p>

    <label>Provincia

    <select name="sigla_prov" id="sigla_prov" onchange="javascript: document.form1.submit();">

      <option value="">---</option>

     <?php echo "$province"; ?>

    </select>

    </label>

  </p>

  <p>

    <label>Localita

    <select name="nome" id="nome"  onchange="javascript: document.form1.invia.disabled = (this.selectedIndex == 0) ? true : false;">

      <option value="">---</option>

     <?php echo "$localita"; ?>

    </select>

    </label>

  </p>

  <p>

    <input name="invia" type="submit" id="invia" value="Invia" disabled="disabled" />

  </p>

</form>

<?php

}

?>

Cosa non va nel form???

Grazie

 :bye:

risposto 10 anni fa
stellina
X 0 X

la prima cosa che ho notato nel codice è che le query che vanno a riempire le select non hanno una clausola WHERE per selezionare solo i record pertinenti.

In altre parole, dopo che con la prima select hai scelto la nazione mi aspetto che la query che estrae tutte le province abbia una clausola WHERE per prendere solo le città della nazione specificata. Poi, selezionata la provincia, l'ulteriore query deve avere una clausola WHERE per estrarre dal DB solo le località relative alla provincia selezionata.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Per quanto riguarda il WHERE nella query delle province per ora non mi serve nel senso che gestisco solo le province italiane per gli altri stati gestisco solo la nazione.

Per il where nelle localita ho commentato la query che ha al suo interno il WHERE ma non funziona quella query mi da questo tipo di errore Unknown column 'AR' in 'where clause'  (dove AR è la sigla della provincia che ho scelto )

???

Grazie

 :bye:

risposto 10 anni fa
stellina
X 0 X

infatti non è sintatticamente corretta, mancano gli apici:

mysql_query("SELECT nome FROM localita WHERE sigla='$_POST[sigla_prov]' ORDER BY nome ASC");

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

non riesco ad integrare questo form con scelta di province - localita con il resto che form che contiene altri dati che mi servono per l'inserimento.

Questo in stanza è la situazione del codice:

if(isset($_POST['invia'])) 

{ 

               

   $name = $_POST['name'];

                .....altre variabili

            

   $sql = "INSERT INTO ......";

              

   if (@mysql_query($sql)) {

      echo '<br><br><p align="center"><b>OK!</b></p>';

   } else {

      echo '<p>errore segnalato: ' .

      mysql_error() . '</p>';

   }

            

               

    

} 

else 

{ 

    ?>

<form name="form1" enctype="multipart/form-data" method="post" action=""> 

  <table width="99%" border="0" align="center" cellpadding="5" cellspacing="1" class="entryTable">

     <tr>

       <td width="137" class="label" align="left">Tipologia Struttura:</td>

       <td width="340" align="left" class="content">

          <input  type="text" name="name" size="30" align="left" /><br /></td>

     </tr>  

    <tr>

     <td></td>

     <td>ALTRI DATI ........</td>

   </tr>

  </table>

        <input type="submit" name="invia" value="Invia"> 

        <input type="reset" name="invia" value="Cancella"> 

    </form> 

   <?php

} 

?>                 

ho provato in diversi modi ad integrare i due form (quello che ho appena scritto con quello che seleziona stato-provincia-localita)

come devo fare???

grazie

 :bye:

risposto 10 anni fa
stellina
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda