View Full Version : [PHP-HTML] DropDownList e valore Selected...
PhoEniX-VooDoo
11-07-2008, 11:09
Ciao, ancora io :D
Ho la seguente situazione:
1. C'e un menu a tendina che prende i suoi valori da DB (MySQL).
2. Prendo la valore selezionato tramite POST, in seguito alla pressione di un bottone (submit) che per mezzo del form richiama la pagina stessa.
3. Ho quindi la mia bella variabile contenente il valore delezionato.
PROBLEMA
I menu a tendina sono 3 e dato che alla pressione del bottone di submit la tendina ritorna in posizione iniziale (con valore nullo), riesco ad avere solo una variabile alla volta, e non tutte e tre.
Avrei bisogno quindi che il valore della tendina resti selezionato anche in seguito alla pressione del submit....
Ho già provato inserendo selected ma non funziona, essendo la tendina generata dinamicamente...
Questo è il codice di una tendina:
<?php
$query = "select DISTINCT soc_name from societa " . $where;
$dbResult = mysql_query($query, $db);
echo "<select name=\"societa\" id=\"myselect2\" size=\"0\">\r\n";
echo "<option value=\"\">-------->choose<--------</option>\r\n";
if ($query !== FALSE){
while($row=mysql_fetch_array($dbResult)){
$soc_name = htmlspecialchars ($row["soc_name"], ENT_QUOTES);
echo "<option value=\"$soc_name\">$soc_name</option>\r\n";
}
}
echo "</select>\r\n";
?>
Non ho capito bene...
Ma comunque puoi fare
if($soc_name == $_POST['societa']){
echo '<option selected="selected" ...>...</option>';
}
else {
echo '<option ...>...</option>';
}
no?
PhoEniX-VooDoo
11-07-2008, 12:51
Non ho capito bene...
Ma comunque puoi fare
if($soc_name == $_POST['societa']){
echo '<option selected="selected" ...>...</option>';
}
else {
echo '<option ...>...</option>';
}
no?
grazie, mi hai dato uno spunto con il quale ora riesco a tenere visualizzati il valore selezionato, anche agendo su altri submit.
Nonostante ciò il valore del POST pero risulta nullo, quindi nn riesco lo stesso ad avere tutti e tre i valori delle tendine ma sempre e solo uno alla volta. mmmmh :muro:
Non puoi mettere online la pagina così riesco a capire meglio il problema? :)
PhoEniX-VooDoo
11-07-2008, 13:37
Non puoi mettere online la pagina così riesco a capire meglio il problema? :)
non posso al momento, cmq ho fatto un esempio semplificato, allora
<form action="multi.php" method="POST">
<select size="1" name="selectozza">
<option value="1">primo</option>
<option value="2">secondo</option>
<option value="3">terzo</option>
</select>
<input type="submit" name="bOK" value="OK">
</form>
<?php print($_POST["selectozza"]);?>
<form action="multi.php" method="POST">
<select size="1" name="selectozza2">
<option value="A">AAA</option>
<option value="B">BBB</option>
<option value="C">CCC</option>
</select>
<input type="submit" name="bOK" value="OK">
<?php print($_POST["selectozza2"]);?>
</form>
Cosi ci sono due form.
Se io scelgo "secondo" e premo il bottone, mi printa 2
Quando vado a scegliere qualcosa dalla seconda tendina, esempio "CCC" mi printa C ma sparisce il 2
mentre...
<form action="multi.php" method="POST">
<select size="1" name="selectozza">
<option value="1">primo</option>
<option value="2">secondo</option>
<option value="3">terzo</option>
</select>
<input type="submit" name="bOK" value="OK">
<?php print($_POST["selectozza"]);?>
<select size="1" name="selectozza2">
<option value="A">AAA</option>
<option value="B">BBB</option>
<option value="C">CCC</option>
</select>
<input type="submit" name="bOK" value="OK">
<?php print($_POST["selectozza2"]);?>
</form>
Con due form, se scelgo seconda, printa 2, poi pero quando vado a scegliere qualcosa dalla seconda tendina, il POST della prima mi printa il promo valore (ovvero 1).
In nessuno dei casi quindi riesco ad avere due variabili con le due scelte! :muro:
P.S. Ma sei di Minusio?! Io sono del Luganese! :p
Hai bisogno una roba del genere? www.fabioboss.cn/test.php ?
Comunque si abito a Minusio :D Fai la SPAI che fai PHP?
RobyG_08
11-07-2008, 15:16
Rieccomi, vedo che hai optato per dei submit e più di un form...io te lo rimetto come risolverei io la situazione:
<html xmlns="http://www.w3.org/1999/xhtml" lang="it">
<head>
<script type="text/javascript" src="blink.js">
function caricaCombo()
{
document.frmMain.submit();
}
</script>
</head>
<body>
<form name="frmMain" action="multi.php" method="POST">
<select size="1" name="selectozza" onchange="javascript:caricaCombo();">
<option value="1">primo</option>
<option value="2">secondo</option>
<option value="3">terzo</option>
</select>
<select size="1" name="selectozza2" onchange="javascript:caricaCombo();">
<option value="A">AAA</option>
<option value="B">BBB</option>
<option value="C">CCC</option>
</select>
<select size="1" name="selectozza3" onchange="javascript:caricaCombo();">
<option value="A">x</option>
<option value="B">y</option>
<option value="C">z</option>
</select>
</form>
</body>
</html>
cosi semplicemente al cambio di ogni combo causi un postback, e ti prendi i valori
PhoEniX-VooDoo
11-07-2008, 15:22
Rieccomi, vedo che hai optato per dei submit e più di un form...io te lo rimetto come risolverei io la situazione:
<html xmlns="http://www.w3.org/1999/xhtml" lang="it">
<head>
<script type="text/javascript" src="blink.js">
function caricaCombo()
{
document.frmMain.submit();
}
</script>
</head>
<body>
<form name="frmMain" action="multi.php" method="POST">
<select size="1" name="selectozza" onchange="javascript:caricaCombo();">
<option value="1">primo</option>
<option value="2">secondo</option>
<option value="3">terzo</option>
</select>
<select size="1" name="selectozza2" onchange="javascript:caricaCombo();">
<option value="A">AAA</option>
<option value="B">BBB</option>
<option value="C">CCC</option>
</select>
<select size="1" name="selectozza3" onchange="javascript:caricaCombo();">
<option value="A">x</option>
<option value="B">y</option>
<option value="C">z</option>
</select>
</form>
</body>
</html>
cosi semplicemente al cambio di ogni combo causi un postback, e ti prendi i valori
Oh, grazie! :p
Ma... blink.js? Devo crearlo immagino...e cosa ci metto dentro? :fagiano:
RobyG_08
11-07-2008, 15:25
no no, mi è scappato, non centra nulla perchè l'ho preso da codice che avevo fatto, a te basta mettere
<script type="text/javascript">
src serve quando la funzione sta in un file a parte .js, in questo caso la funzione caricaCombo() (che forse avrebbe più senso chiamarla causaPost()) sta dentro la pagina.
PhoEniX-VooDoo
11-07-2008, 15:37
ianaz: grazie, ma io carico centinaia di campi database, preferisco non incasinarmi con gli array...cmq ho risolto molto semplicemente mettendo i valori in sessione :p
RobyG_08: ok...sembra che il tuo codice funziona, ora lo provo con i miei dati e ti faccio sapere!
Graaaziee ;)
RobyG_08
11-07-2008, 15:45
Be alla fine i bottoni che avevi messo non facevano altro che causare un postback. Cosa che fa quello script ma legato al cambiamento dell'elemento selezionato. Il problema che hai scritto nel primo post è dovuto al fatto che se tu fai una submit del form1, non puoi aspettarti di ricevere in post i valori del form2, ma solo del form che ha scatenato il post.
buona programmazione :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.