- Home
- Categorie
- Coding e Sistemistica
- Coding
- usare valori da una select dinamica
-
usare valori da una select dinamica
Ciao a tutti. Ho dei seri problemi con php. sono alle primissime armi... Sto unsando uno script che genera una select dinamica con valori presi da un database ( postgres). Mi serve per selezionare regioni provincie e città. Lo script è il seguente:
[php]<?php
require_once("utility.php");
$con = connect_DB("postgres", "pegaso54"); // mi connetto al DB
if (!$con){
echo "Errore nella connessione al database: " . pg_last_error($con);
exit;
}
$id_regione="";
$id_provincia="";
$id_comune="";$id_regione=$_POST['regione'];
$id_provincia=$_POST['provincia'];
$id_comune=$_POST['comune'];
?><div></div>
<td>Seleziona la dislocazione dell'immobile: </td><P></P>
<form name="search" method="POST" >
<td>Regione: </td>
<select onchange="document.search.submit()" name="regione">
<option value="">Scegli regione...</option><?php $con = connect_DB("postgres", "pegaso54"); // mi connetto al DB if (!$con){ echo "Errore nella connessione al database: " . pg_last_error($con); exit;
}
$sql_regione="SELECT nomeregione,idregione FROM regione ORDER BY nomeregione";
$query_regione=pg_query($con,$sql_regione);
while ($rigaR=pg_fetch_array($query_regione)){
$regione=$rigaR['nomeregione'];
$idRegione=$rigaR['idregione'];
echo "<option value='$idRegione'";
if ($id_regione==$idRegione)
echo " selected";
echo ">".$regione ."</option>";
}
pg_close($con);
?></select></td> </tr> <tr> <td>Provincia: </td> <td> <select onchange="document.search.submit()" name="provincia"> <option value="">Scegli provincia...</option> <?php $con = connect_DB("postgres", "pegaso54"); // mi connetto al DB if (!$con){ echo "Errore nella connessione al database: " . pg_last_error($con); exit;
}
if(isset($id_regione)){
$sql_provincia="SELECT * FROM provincia WHERE idregione='$id_regione' ORDER BY nomeprovincia";
$query_provincia=pg_query($con,$sql_provincia);
while ($rigaP=pg_fetch_array($query_provincia)){
$provincia=$rigaP['nomeprovincia'];
$idProvincia=$rigaP['idprovincia'];
echo "<option value='$idProvincia'";
if ($id_provincia==$idProvincia) {echo " selected";}
echo ">".$provincia."</option>";
}}
pg_close($con);
?></select></td> </tr> <tr> <td>Comune: </td> <td> <select onchange="document.search.submit() id="comune" name="comune"> <option value="">Scegli il comune...</option> <?php $con = connect_DB("postgres", "pegaso54"); // mi connetto al DB if (!$con){ echo "Errore nella connessione al database: " . pg_last_error($con); exit;
}
if(isset($id_provincia)){
$sql_comuni="SELECT * FROM comune WHERE idprovincia='$id_provincia' ORDER BY nomecomune";
$query_comuni=pg_query($con,$sql_comuni) or die (mysql_error());
while ($rigaC=pg_fetch_array($query_comuni)){
$comune=$rigaC['nomecomune'];
$idComune=$rigaC['idcomune'];
echo "<option value='$idComune'";
if ($id_comune==$idComune) {echo " selected";}
echo ">".$comune."</option>";
}}
pg_close($con);
?></select></td> </tr>
</form>[/php]
L'ho adattato alle mie esigenze e funziona. mi ricicla la pagina alla selezione di regione e poi di provincia. Ora la mia domanda è questa:
come faccio a usare il valore scelto di regione provincia e comune in un altra pagina(ad esempio per una query di insert)? Se uso GET_POST['regione'] mi viene la notice che mi dice che la variabile è undefined. Aiutatemi voi... grazie...
-
Essendo il metodo di trasferimento dati del form POST la variabile devi trovarla cosi.
$regione="$_POST["regione"];
E cosi via per le altre...
Controlla che nel form siano tutte dichiarate con il giusto nome.
Io per sicurezza metto sempre la variabile cosi.<input type="text" name="nome" id="nome" />
-
si anche io conoscevo questo metodo... ma purtroppo come ho scritto mi restituisce il notice che mi dice che è indefinita...
-
Usando il metodo post mi restituisce questo messaggio:
Notice: Undefined index: regione in C:\phpdoc\stampadati.php on line **10stavo provandolo con un semplice script cosi formato:
$id_regione=$_POST["regione"];
echo "$id_regione";ma proprio non va... aiutatemi... grazie.
**
-
Prova a postarmi il codice completo della pagina che invia e il codice della pagina che riceve.
Cosi vedo meglio.
-
Ciao fralight,
questo succede perchè tu utilizzi le variabili anche quando il modulo non è stato inviato, ma è stato fatto semplicemente l'accesso alla pagina, inserisci il controllo per verificare se il modulo è inviato prima di fare le operazioni necessarie.
-
Per Marco... Il codice della pagina che invia è il primo che ho postato... quello che riveve è il secondo codice postato semplicemente con i tag... poi i dati sono presi da db...
Per thedarkita... grazie della risposta.. solo che non ho capito cosa devo fare... non sono per niente esperto... sarebbe per un esame ma tutte queste cose non ce le hanno minimaente spiegate... mi daresti una grande mano se mi spiegassi cosa devo fare... te ne sarei davvero grato... diventeresti il mio guro della programmazione...
-
Prova cosi:
[php]
<?php
require_once("utility.php");
$con = connect_DB("postgres", "pegaso54"); // mi connetto al DB
if (!$con){
echo "Errore nella connessione al database: " . pg_last_error($con);
exit;
}
$id_regione="";
$id_provincia="";
$id_comune="";
// Modulo inviato
if(isset($_POST['regione']))
{
$id_regione=$_POST['regione'];
$id_provincia=$_POST['provincia'];
$id_comune=$_POST['comune'];
}
?><div></div>
<td>Seleziona la dislocazione dell'immobile: </td><P></P>
<form action="" name="search" method="POST" >
<td>Regione: </td>
<select onchange="document.search.submit()" name="regione">
<option value="">Scegli regione...</option><?php $con = connect_DB("postgres", "pegaso54"); // mi connetto al DB if (!$con){ echo "Errore nella connessione al database: " . pg_last_error($con); exit;
}
$sql_regione="SELECT nomeregione,idregione FROM regione ORDER BY nomeregione";
$query_regione=pg_query($con,$sql_regione);
while ($rigaR=pg_fetch_array($query_regione)){
$regione=$rigaR['nomeregione'];
$idRegione=$rigaR['idregione'];
echo "<option value='$idRegione'";
if ($id_regione==$idRegione)
echo " selected";
echo ">".$regione ."</option>";
}
pg_close($con);
?></select></td> </tr> <tr> <td>Provincia: </td> <td> <select onchange="document.search.submit()" name="provincia"> <option value="">Scegli provincia...</option> <?php $con = connect_DB("postgres", "pegaso54"); // mi connetto al DB if (!$con){ echo "Errore nella connessione al database: " . pg_last_error($con); exit;
}
if(isset($id_regione)){
$sql_provincia="SELECT * FROM provincia WHERE idregione='$id_regione' ORDER BY nomeprovincia";
$query_provincia=pg_query($con,$sql_provincia);
while ($rigaP=pg_fetch_array($query_provincia)){
$provincia=$rigaP['nomeprovincia'];
$idProvincia=$rigaP['idprovincia'];
echo "<option value='$idProvincia'";
if ($id_provincia==$idProvincia) {echo " selected";}
echo ">".$provincia."</option>";
}}
pg_close($con);
?></select></td> </tr> <tr> <td>Comune: </td> <td> <select onchange="document.search.submit() id="comune" name="comune"> <option value="">Scegli il comune...</option> <?php $con = connect_DB("postgres", "pegaso54"); // mi connetto al DB if (!$con){ echo "Errore nella connessione al database: " . pg_last_error($con); exit;
}
if(isset($id_provincia)){
$sql_comuni="SELECT * FROM comune WHERE idprovincia='$id_provincia' ORDER BY nomecomune";
$query_comuni=pg_query($con,$sql_comuni) or die (mysql_error());
while ($rigaC=pg_fetch_array($query_comuni)){
$comune=$rigaC['nomecomune'];
$idComune=$rigaC['idcomune'];
echo "<option value='$idComune'";
if ($id_comune==$idComune) {echo " selected";}
echo ">".$comune."</option>";
}}
pg_close($con);
?></select></td> </tr>
</form>
[/php]
-
e uso le variabili sempre con GET_POST ['regione?]?
-
Non credo di aver capito cosa intendi, puoi spiegarti meglio?
-
ho provato ma purtroppo da la stessa risposta di undefined...
-
Ma tu stai usando GET_POST scritto tutto attaccato?
-
Dovrei incollarci quanto meno l'errore, altrimenti è difficile capire qualcosa.
-
Notice: Undefined index: idregione in C:\phpdoc\stampadati.php on line **6
appare solo questo...
**
-
per marco... no uso l'underscore... GET_POST
-
A questo punto scusa postaci anche la pagina che riceve il form..
Non vorrei dire stupidaggini ma l'istruzione GET_POST io non la conosco, per carità potrebbe anche esistere, ma forse hai fatto confusione...
-
<?php
echo "i tuoi dati sono:";echo "la tua regione è:";
$regione= $_POST ["idregione"];
echo "$regione";
?>
scusa ho scritto male... uso $_POST...
-
Stai provando in locale?
Magari ricordo male, forse c'era una qualcosa di cambiare su un INI di Apache, se fosse cosi forse sa meglio il mio collega di cosa si tratta.
-
si s ilavoro in locale... con apache... solo che non sembra quello il problema... dall'errore sembra quasi che non capisca che valore dargli... dice variabile non definita...
-
Se metti la riga cosi? Aggiungendo cioè l'id?
<select onchange="document.search.submit()" name="regione" id="regione">