Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: select dinamiche

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    2

    select dinamiche

    Salve a tutti i partecipanti del forum ai quali pongo un quesito (forse banale) da risolvere.
    Ho creato una pagina php contenente un form nel quale sono presenti due combo
    1. contenente le sigle delle provincie
    2. contenente i comuni
    Ora il primo lo riempo tramite una semplice query che estrae da una tabella le sigle stesse. Per il secondo, come intuibile, voglio far apparire solo i comuni relativi alla provincia selezionata.
    Il passaggio del parametro per la query di riempimento del combo "comuni" l'ho risolto, leggendo un thread sul forum, passando il parametro sigla provincia con il metodo GET e ricaricando la pagina (queste operazioni avvengono una funzione jscript associata all'evento onchange della prima select).
    Poi con $_GET estraggo il valore passato e la query sui comuni funziona riempiendo in maniera corretta ma si perde il valore della sigla selezionata in quanto il SELECTED VALUE del combo "provincie" torna ad essere " ".
    Ora mi chiedo come faccio anche dopo il ricarico della pagina a mantenere nel primo combo il valore selezionato della sigla provincia. Premesso che nella pagina in questione utilizzo, per altri scopi, una sessione posso registrare una variabile di sessione (e se si come e dove) prima del refresh ponendo nella 1 select
    <option selected value = $variabile di sessione>$variabile</option>.
    Ci sono altre soluzioni?
    Grazie per l'eventuale aiuto sperando di essere stato chiaro

  2. #2
    Avevo anke io un problema simile...ho usato un codice così...prova:

    Codice PHP:
     <select name="provincia" onChange="inviaCambiamenti()">
                      <?
            $query
    ="SELECT DISTINCT provincia FROM tabella order by 'provincia'";
            
    $result mysql_query($query);
            echo 
    "<option value=\"\">Seleziona</option>";
            while(
    $row mysql_fetch_assoc($result))
            {
                if(!empty(
    $provincia))
                {
                    if (
    $row[provincia]<>$provincia)
                    {
                        echo 
    '<option value="'.$row[provincia].'" >'.$row[provincia].'</option>';
                    }
                    else                    
                    {
                    echo 
    '<option value="'.$row[provincia].'" SELECTED>'.$row[provincia].'</option>';
                    }
                }
                else 
                {
                    echo 
    '<option value="'.$row[provincia].'">'.$row[provincia].'</option>';
                }
            }
        
    ?>
                    </select>


    <select name="comune">
                      <?
            $query
    ="SELECT DISTINCT comune FROM tabella WHERE provincia='$provincia' order by 'comune'";
            
    $result mysql_query($query);
            echo 
    "<option value=\"\">Seleziona</option>";
            while(
    $row mysql_fetch_assoc($result))
            {
                if(!empty(
    $comune))
                {
                    if (
    $row[comune]<>$comune)
                    {
                        echo 
    '<option value="'.$row[comune].'" >'.$row[comune].'</option>';
                    }
                    else                    
                    {
                    echo 
    '<option value="'.$row[comune].'" SELECTED>'.$row[comune].'</option>';
                    }
                }
                else 
                {
                    echo 
    '<option value="'.$row[comune].'">'.$row[comune].'</option>';
                }
            }
        
    ?>
                    </select>
    Funzione inviaCambiamenti (la metti nell'head):

    codice:
    <script language="javascript">
    
    function inviaCambiamenti(){
    	document.form1.action = "<?php echo $PHP_SELF; ?>";
    	document.form1.submit();
    }
    
    </script>
    Quest'esempio te l'ho fatto nel caso tu abbia una sola tabella...nel caso ne abbia due devi solo modificare le query...

    Spero di esserti stato d'aiuto...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    2

    select dinamiche

    grazie....avevo già visto qualcosa di simile in un thread qui nel forum....provo e poi ti faccio sapere

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    78

    Ho scopiazzato alla grande ma...

    ...la 2à select non và, non sono riuscito a capire il perchè...puoi verificare se non sono capace neanche a fare il copia-incolla.
    Un saluto.stefano.
    ti posto il code:
    <?php
    error_reporting(E_ALL);

    $link=mysql_connect( "Localhost", "root", "root")
    or die ( "Non riesco a connettermi a [b]Localhost");
    mysql_select_db ("database", $link)
    or die ( "Non riesco a selezionare il db database
    ");

    $query="SELECT DISTINCT regione FROM 004_provincia order by 'regione'";
    $result = mysql_query($query);
    ?>
    <html>
    <head>
    <script language="javascript">

    function inviaCambiamenti(){
    document.form1.action = "<?php echo $PHP_SELF; ?>";
    document.form1.submit();
    }

    </script></head>
    <table align="right" border="0">
    <tr><td align="right">
    <form><input type="button" value="Chiudi" onClick="closewindow()"></form>
    </td></tr></table>

    <form name="form1" action="update.php" method="POST">
    <table border="0" width="30%"><caption align="left"><font color="#0000FF" size="4">Crea un nuovo annuncio</font></caption>
    <tr></tr>
    <tr><td width="10%"></td><th width="10%"><p align="right"><font color="#0000FF">Marca</font></th> <td width="10%">
    <select name="regione" onChange="inviaCambiamenti()">
    <?

    echo "<option value=\"\">Seleziona</option>";
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($regione))
    {
    if ($row[regione]<>$regione)
    {
    echo '<option value="'.$row[regione].'" >'.$row[regione].'</option>';
    }
    else
    {
    echo '<option value="'.$row[regione].'" SELECTED>'.$row[regione].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[regione].'">'.$row[regione].'</option>';
    }
    }
    ?>
    </select></td></tr>
    <tr><td width="10%"></td><th width="10%"><p align="right"><font color="#0000FF">Provincia</font></th> <td width="10%">
    <select name="provincia">
    <?
    $query="SELECT DISTINCT regione,provincia FROM 004_provincia WHERE regione='$regione'";
    $result = mysql_query($query);
    echo "<option value=\"\">Seleziona</option>";
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($provincia))
    {
    if ($row[provincia]<>$provincia)
    {
    echo '<option value="'.$row[provincia].'" >'.$row[provincia].'</option>';
    }
    else
    {
    echo '<option value="'.$row[provincia].'" SELECTED>'.$row[provincia].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[provincia].'">'.$row[provincia].'</option>';
    }
    }
    ?>
    </select>
    </select>


    <tr><td></td><td></td><td></td><td><input type="submit" value="Invia"></td></tr>

    </table></form>
    Display annuncio ...
    </body></html>

    se nella 2 select ci mettoveneto, funzioan...ma perchè?

  5. #5
    hai chiuso due volte la seconda select...

    poi, prova a recuperare la variabile regione attraverso l'array $_POST, quindi dopo queste righe:

    codice:
    $query="SELECT DISTINCT regione FROM 004_provincia order by 'regione'"; 
    $result = mysql_query($query);

    mettici

    codice:
    $regione = $_POST['regione'];
    nella tabella 004_provincia la regione, è un intero o un varchar come nella tabella delle regioni?


    lo script l'ho fatto quando ero molto agli inizi con il php...adesso lo scriverei un tantino ottimizzato
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Codice PHP:
    <?
    $page 
    $_SERVER['PHP_SELF']; // la pagina php
    $qstr $_SERVER['QUERY_STRING']; // la parte della stringa
                                
    echo "<script type=text/javascript>
    function cambia(id){
    window.location = '
    $_SERVER[PHP_SELF]?r='+id
    }
    </script>"
    ;
             include 
    "config.php";
    $db mysql_connect("$server""$username""$password");
    mysql_select_db("$database",$db);
    $sql_reg mysql_query("SELECT  * FROM province group by prv_regione ORDER BY prv_regione ASC");
    $sql_reg2 mysql_query("SELECT  prv_regione FROM province where prv_cod_reg='$_GET[r]'");
    while (
    $data2 mysql_fetch_object($sql_reg2))
    {
    $nome_regione $data2->prv_regione;
    }

    echo 
    "Regione <select size=1 name=regione onchange=java script:cambia(this.value)>";
    echo 
    "<option value=$_GET[r]>$nome_regione</option>";
    while (
    $data mysql_fetch_object($sql_reg))
    {
    echo 
    "<option value=$data->prv_cod_reg>$data->prv_regione</option>";
    }
    echo 
    "</select>";
    echo 
    "Provincia <select size=1 name=provincia>";
    if(isset(
    $_GET['r'])){
    $sql_prv mysql_query("SELECT prv_sigla, prv_cod_reg, prv_nome FROM province WHERE prv_cod_reg='$_GET[r]' ORDER BY prv_nome ASC");
    while (
    $data mysql_fetch_object($sql_prv))
    {
    echo 
    "<option value=\"$data->prv_sigla\">$data->prv_nome</option>";
    }
    }else{
    echo 
    "<option>Seleziona prima una regione</option>";
    }
    echo 
    "</select>";
    ?>
    Questo funziona
    Guarda solo per le tabelle e se vuoi una discussione gia aperta su questo menu dinamico guarda qualche thread piu avanti (quello iniziato da fair76) .....


  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    78

    se ti racconto cosa mi è successo mi ....

    rimangio i gomiti....questo script lo sto riaggiustando per la seconda volta, il primo copia-incolla (del tuo) con qualche modifica funzionava perfettamente ma ho dovuto formattare l'hd ed avevo una vechia copia di back-up di tutto il lavoro...mannaggia e adesso doppio lavoro....urraahhhhhh
    il campo regione è un varchar...ho fatto le modifiche che mi hai detto ma ancora non và..dicevi che lo ottimizzeresti diversamente...se vuoi sono tutt'orecchi e occhi, soprattutto.Un saluto.Stefano

    mi sa che non avuto il tempo di risponderti....

  8. #8
    ho fatto un veloce copia-incolla e ho provato ad adattarlo, prova:

    codice:
    <?php 
    error_reporting(E_ALL); 
    
    $link=mysql_connect( "Localhost", "root", "root") 
    or die ( "Non riesco a connettermi a [b]Localhost"); 
    mysql_select_db ("database", $link) 
    or die ( "Non riesco a selezionare il db database
    "); 
    
    $regione = strip_tags(stripslashes(trim($_POST['regione'])));
    $provincia = strip_tags(stripslashes(trim($_POST['provincia'])));
    
    $query="SELECT DISTINCT regione FROM 004_provincia order by 'regione'"; 
    $result = mysql_query($query); 
    ?>
    <html>
    <head>
    <script type="text/javascript"> 
    
    function inviaCambiamenti(){ 
    document.form1.action = "<?php echo $_SERVER['PHP_SELF']; ?>"; 
    document.form1.submit(); 
    } 
    
    </script>
    </head>
    
    <table align="right" border="0">
      <tr>
        <td align="right"><form>
            <input type="button" value="Chiudi" onClick="closewindow()">
          </form></td>
      </tr>
    </table>
    <form name="form1" action="update.php" method="POST">
      <table border="0" width="30%">
        <caption align="left">
        <font color="#0000FF" size="4">Crea un nuovo annuncio</font>
        </caption>
        <tr></tr>
        <tr>
          <td width="10%"></td>
          <th width="10%"><p align="right"><font color="#0000FF">Regione</font></th>
          <td width="10%">
    	  <select name="regione" onChange="inviaCambiamenti(); ">
              <? 
    
    print '<option value="">Seleziona</option>'; 
    while($row = mysql_fetch_assoc($result)) 
    { 
    	if($regione != ''){ 
    		if ($row['regione'] <> $regione){ 
    			echo '<option value="'.$row['regione'].'" >'.$row['regione'].'</option>'; 
    		}else{ 
    			echo '<option value="'.$row['regione'].'" SELECTED>'.$row['regione'].'</option>'; 
    		} 
    	} else { 
    		echo '<option value="'.$row['regione'].'">'.$row['regione'].'</option>'; 
    	} 
    } 
    ?>
            </select></td>
        </tr>
        <tr>
          <td width="10%"></td>
          <th width="10%"><p align="right"><font color="#0000FF">Provincia</font></th>
          <td width="10%">
    	  	<?
    	    $query2 ="SELECT DISTINCT regione,provincia FROM 004_provincia WHERE regione='".$regione."'";	
    		$result2 = mysql_query($query2)or die(mysql_error());; 
    		?>
    <select name="provincia" onChange="inviaCambiamenti();">
              <? 
    
    echo '<option value="">Seleziona</option>'; 
    while($row2 = mysql_fetch_assoc($result2)) { 
    	if($provincia != ''){ 
    		if ($row2['provincia'] <> $provincia){ 
    			echo '<option value="'.$row2['provincia'].'" >'.$row2['provincia'].'</option>'; 
    		}else{ 
    			echo '<option value="'.$row2['provincia'].'" SELECTED>'.$row2['provincia'].'</option>'; 
    		} 
    	} else { 
    		echo '<option value="'.$row2['provincia'].'">'.$row2['provincia'].'</option>'; 
    	}  
    } 
    ?>
            </select>
            
        <tr>
          <td></td>
          <td></td>
          <td></td>
          <td><input type="submit" value="Invia"></td>
        </tr>
      </table>
    </form>
    Display annuncio ...
    </body></html>
    copia e incolla tutto il codice



    se ti va anche quello proposto da stefano3804...beh ora hai due soluzioni





    p.s. il mio non l'ho testato...prova e fammi sapere

    p.s2. non capisco perché nel codice il forum inserisca dei \n a caso spezzettando determinate righe su più righe [naturalmente nel tuo codice metti tutto sulla stessa riga]
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    78

    Ho solo 3 parole...

    sei un mito....ho provato anche ad adatare quello di Stefano3804 ma non avevdo molta esperienza non ci sono riuscito.Un grazie a tutti e due...mi avete sollevato da un bel mal di testa di 2 settimane.buon week-end.Stefano.

  10. #10
    di niente!





    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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 © 2024 vBulletin Solutions, Inc. All rights reserved.