[PHP] Problema nel passaggio del valore mese

giusalvo

Nuovo Utente
14 Ago 2012
25
1
3
MS
Salve,
ho questo codice:

PHP:
<html>
<body>
<?php
setlocale(LC_TIME, 'ita');
$mese=array(1=>"gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre");

$giorno_mese= date("d");
echo $giorno_mese;
$mese_nome=$mese[date("n")];
echo $mese_nome;
$anno =date("Y");
echo $anno;

?>
<form action="inviadata.php" method="post">
<table border="0" align="center">
<tr>
    <td align="center"><h3>Inserisci la tua data di nascita:</h3></td>
</tr>
<tr>
    <td align="center">Giorno
    <input type="text" size="2" maxlength="2" name="giorno" min="1" max="31" value=<?php echo $giorno_mese;?>>
    &nbsp;
    Mese
    <select name="ilmese">
    <option value=""selected><?php echo $mese_nome?></option>
    <option value="Gennaio">Gennaio</option>
    <option value="Febbraio">Febbraio</option>
    <option value="Marzo">Marzo</option>
    <option value="Aprile">Aprile</option>
    <option value="Maggio">Maggio</option>
    <option value="Giugno">Giugno</option>
    <option value="Luglio">Luglio</option>
    <option value="Agosto">Agosto</option>
    <option value="Settembre">Settembre</option>
    <option value="Ottobre">Ottobre</option>
    <option value="Novembre">Novembre</option>
    <option value="Dicembre">Dicembre</option>
    </select>
    &nbsp;
    Anno <input type="text" size="4" maxlength="4" name="anno" min="1848" max="2065" value=<?php echo $anno;?>>
</td>
</tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<tr>
<td align="center"><input type="submit" value="Invia"></td>
</tr>
</table>
</form>
</body>
</html>

e l'altro è questo

PHP:
<?php
echo ($_POST['giorno']) .' ' . ($_POST['ilmese']) . ' '. ($_POST['anno']);
?>

ma passano solo giorno e anno, non passa il mese!
Non riesco a trovare una soluzione: potreste darmi una dritta, per cortesia?
Grazie
Saluti
 
. ($_POST['ilmese']) . non vedo nessuna variabile chiamata "ilmese" ma solo..."mese"
prova a correggerla
 
ho sostituito così
PHP:
echo ($_POST['giorno']) .' ' . ($_POST['mese']) . ' '. ($_POST['anno']);
e funziona, ma se lascio il mese di default, non passa
 
Ciao,
innanzi tutto ti consiglio, in fase di prova, di utilzzzare il metodo GET, col quale puoi vededere, sulla barra degli indirizzi, le variabili passate.
Il problema sta nell'impostazione delle OPTION

PHP:
<option value=""selected><?php echo $mese_nome?></option>

Cosi impostata, se l'utente non effettua nessuna scelta (mese di default), viene passato quello che si trova nel VALUE (ossia "")
Per far si che venga passato il mese visiualizzato invece, lo devi valorizzare anche nel VALUE:

PHP:
<option value="<?php echo $mese_nome?>"selected><?php echo $mese_nome?></option>
 
Ultima modifica:
Che bello, Funziona!!!
Ma così però vedo Agosto due volte nell'elenco: all'inizio perchè è adesso e anche nell'elenco dei mesi.
Come posso ovviare?
Grazie
 
tempo fa ho fatto qualcosa di simille a ciò che vuoi fare tu. Se mi dai un po' di tempo ti posto il codice

Zorro
 
Ciao,
premetto che sono un'autodidatta, e nemmeno tanto esperto di PHP, per cui la soluzione a cui sono arrivato probabilmente non sarà la più "ortodossa" ma funziona (e questo è l'importante).
Per comodità ho asssegnato 'agosto' alla variabile $mese. Per valorizzzare il mese di default dovrai farte tante IF quanti sono i mesi dell'anno. Questo è il codice:


PHP:
<?php
$mese = 'Agosto';

echo '<select name="mese">';
echo '  <option value="  ">  </option>';
if ($mese  == 'Gennaio') {
    echo '  <option value="Gennaio" selected>Gennaio</option>';
} else {
    echo '  <option value="Gennaio">Gennaio</option>';
}
if ($mese  == 'Febbraio') {
    echo '  <option value="Febbraio" selected>Febbraio</option>';
} else {
    echo '  <option value="Febbraio">Febbraio</option>';
}
if ($mese  == 'Marzo') {
    echo '  <option value="Marzo" selected>Marzo</option>';
} else {
    echo '  <option value="Marzo">Marzo</option>';
}
if ($mese  == 'Aprile') {
    echo '  <option value="Aprile" selected>Aprile</option>';
} else {
    echo '  <option value="Aprile">Aprile</option>';
}
if ($mese  == 'Maggio') {
    echo '  <option value="Maggio" selected>Maggio</option>';
} else {
    echo '  <option value="Maggio">Maggio</option>';
}
if ($mese  == 'Giugno') {
    echo '  <option value="Giugno" selected>Giugno</option>';
} else {
    echo '  <option value="Giugno">Giugno</option>';
}
if ($mese  == 'Luglio') {
    echo '  <option value="Luglio" selected>Luglio</option>';
} else {
    echo '  <option value="Luglio">Luglio</option>';
}
if ($mese  == 'Agosto') {
    echo '  <option value="Agosto" selected>Agosto</option>';
} else {
    echo '  <option value="Agosto">Agosto</option>';
}
if ($mese  == 'Settembre') {
    echo '  <option value="Settembre" selected>Settembre</option>';
} else {
    echo '  <option value="Settembre">Settembre</option>';
}
if ($mese  == 'Ottobre') {
    echo '  <option value="Ottobre" selected>Ottobre</option>';
} else {
    echo '  <option value="Ottobre">Ottobre</option>';
}
if ($mese  == 'Novembre') {
    echo '  <option value="Novembre" selected>Novembre</option>';
} else {
    echo '  <option value="Novembre">Novembre</option>';
}
if ($mese  == 'Dicembre') {
    echo '  <option value="Dicembre" selected>Dicembre</option>';
} else {
    echo '  <option value="Dicembre">Dicembre</option>';
}
echo '  </select>';

?>


Puoi vedere il funzionamento cliccando qui.

Zorro
 
Non è che vedi due volte agosto. il rpimo lo vedi erpchè mettendo il selected lo vedi di default, se passia settembre vedrai settembre come primo. comunque per il form io userei un forech risparmi spazio e un domani se devi cambiare qualcosa ti absta modificare l'array
PHP:
<form action="" method="post">
<table border="0" align="center">
<tr>
    <td align="center"><h3>Inserisci la tua data di nascita:</h3></td>
</tr>
<tr>
    <td align="center">Giorno
    <input type="text" size="2" maxlength="2" name="giorno" min="1" max="31" value=<?php echo $giorno_mese;?>>
    &nbsp;
    Mese
    <select name="ilmese">
    <option value="<?php echo $mese_nome?>"selected><?php echo $mese_nome?></option>
    <?php
    foreach($mese as $valore)
    echo '<option value="'.$valore.'">'.$valore.'</option>';
    ?>
    </select>
    &nbsp;
    Anno <input type="text" size="4" maxlength="4" name="anno" min="1848" max="2065" value=<?php echo $anno;?>>
</td>
</tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<tr>
<td align="center"><input type="submit" value="Invia"></td>
</tr>
</table>
</form>
 

Discussioni simili