- Home
- Categorie
- Coding e Sistemistica
- HTML e CSS
- Problema: non riesco a mettere in ordine i mesi in una select
-
Ciao MenteLibera,
Che modifica hai apportato rispetto all'originale ??? E poi pensandoci stanotte per noi i mese non iniziano a conteggiare da 1 a 12 o sbaglio ??? Invece nell'array inizia da 0 come mese che corrisponde a gennaio
-
Ponendo come prima riga di entrambi i codici quella contenente "<?php" l'unica differenza sta nella #29. Il codice originario era:
[PHP]echo"<option value="$chiave">$mesi[$chiave]</option>";[/PHP]
Con la mia modifica è diventato questo:
[PHP]echo"<option value="$a">$mesi[$a]</option>";[/PHP]
Per come è impostato il codice originale il primo elemento ha indice del mese zero, e letto così sembrerebbe che la data verrà passata ad uno JavaScript avendo già coerente.
-
Ciao,
Innanzi tutto ti ringrazio dell'aiuto. da solo non ci sarei mai riuscito. Secondo poi vorrei capire una cosa. Il codice che ho postato e preso dall'esempio di cui non ricordo, non smebrerebbe associato a nessun javascript. Quindi io potrei modificare i mesi partendo da 1 fino a 12 ossia così:
originariamente:
[PHP]
$mesi = array (
"0" => "Gennaio",
"1" => "Febbbraio",
"2" => "Marzo",
"3" => "Aprile",
"4" => "Maggio",
"5" => "Giugno",
"6" => "Luglio",
"7" => "Agosto",
"8" => "Settembre",
"9" => "Ottobre",
"10" => "Novembre",
"11" => "Dicembre"
);
[/PHP]modificato da me:
[PHP]
$mesi = array (
"1" => "Gennaio",
"2" => "Febbbraio",
"3" => "Marzo",
"4" => "Aprile",
"5" => "Maggio",
"6" => "Giugno",
"7" => "Luglio",
"8" => "Agosto",
"9" => "Settembre",
"10" => "Ottobre",
"11" => "Novembre",
"12" => "Dicembre"
);
[/PHP]Sbaglio ??? Non dovrebb cambiare assolutamente niente solo che è più ordinato all'italiana.
-
Ciao,
Allora ho modificato un paio di cose. Solo che non mi visualizza l'ultimo mese ossia dicembre. Questo è l'intero codice:
[PHP]
//Mese
echo"<select name="mesi">";
echo "<option value=""> mese </option>";
echo "<option value=""> </option>";$mesi = array (
"1" => "Gennaio", <--- Modificato da 0 sono passato a 1 direttamente
"2" => "Febbbraio",
"3" => "Marzo",
"4" => "Aprile",
"5" => "Maggio",
"6" => "Giugno",
"7" => "Luglio",
"8" => "Agosto",
"9" => "Settembre",
"10" => "Ottobre",
"11" => "Novembre",
"12" => "Dicembre"
);
$mese=$mesi[date('n')-1];
$chiave=array_search($mese,$mesi);
$a=1; <--- Modificato da 0 a 1 mi dava due spazi tra il mese e i nomi
while($a<12){echo"<option value="$a">$mesi[$a]</option>";
$chiave++;
$a++;
if($chiave==12){$chiave=0;}
}
echo"</select>";echo "</select>";
[/PHP]
Sicuramente c'è un'altra soluzione e poi ti volevo chiedere, è possibile tirare un rigra per distanziare tra mese e l'inigio del nome dei mesi ossia dovrebbe apparire una cosa del genere:
mese
Gennnaio
Febbraio
Marzoecc... ecc...
Attendo tue notizie grazie.
Allora ho risolto in un modo molto spartano. Ossia ho aumentato di uno questo while
originariamente era:[PHP]
while($a<12){
[/PHP]
Per visualizzare il mese di dicembre mancante l'ho portato a 1
[PHP]
while($a<13){
[/PHP]
Così ho risolto anche se non sicuramente bello però si vedono tutti i mesi. Mi rimane solo come stendere una riga come ti dicevo. grazie
-
Quello che hai fatto è una delle tante alternative possibili. La mia raccomandazione è quella di studiare bene gli array in PHP essendo uno degli argomenti principali del linguaggio. Una prima giuda base della casa la trovi qui: giorgiotave.it/guide-webmaster/php/array/
In Rete troverai altre guide più avanzate...Per il controllo del while questo è equivalente:
[PHP]while($a<=12){[/PHP]
Inoltre l'indice dovrà partire da 1.
--
Meno male che ho ricaricato la pagina prima di risponderti perché altrimenti avevi le osservazioni di qualche post sopra [/OT]
-
Ciao MenteLibera,
Beato te che hai la mente libera ehehehe Battute a parte. Il while che ho modificato io non va bene ??? Considera che il conteggio inizia da 1 per arrivare a 12 e di conseguenza non so il perchè il dodicesimo mese non si vede mettendo <12. Non capisco una cosa perdonami questa che hai scritto:
Per il controllo del while questo è equivalente:
while($a<=12){
Difatti l'array inizia come dicevo prima da 1 per arrivare a 12 (dicembre): per quanto riguarda la riga in mezzo è fattibile ????
-
Ciao MenteLibera,
Ti vorrei chiedere un'altra cortesia. Ho sviluppato un modulo d'scrizione che poi dovrei convalidare mentre uno digita lo username e l'email gli dovrebbe dire se è libero o meno. Questao è la pagina che ho sviluppato da zero.
iscrizone.php
[PHP]
<html>
<head>
<meta charset="UTF-8">
<script src='qua c'è il link di richiamo per jquery.min.js'></script>
<script src="qua c'è il link di richiamo per jquery.min.js"></script>
<title>Modulo Iscrizione</title>
</head><body> <div align="center">
<div style='font-family: Comic Sans MS; font-size: 20px'>
BENVENUTI NEL MODULO D'ISCRIZIONE
<hr />
</div></div> <form action="checkdate.php" method="POST"> Cognome: <input type ="text" id="cogonome" name="cognome" > <p> <p> Nome: <input type ="text" id="nome" name="nome" > </p></p> <?php
echo "<p> <p>";
echo "Data di nascita nel seguente formato (gg/mm/aaaa): ";// Inizio Selezione data di nascita
//Giorno
echo "<select name='giorno' id='giorno'>";
echo "<option value=""> giorno </option>";
echo "<option value=""> </option>";for($gg=1; $gg<=31; $gg++){
if(strlen($gg)< 2){$gg = "0".$gg;}
echo "<option value="$gg"> $gg </option>";
}
echo "</select>";//Mese
echo"<select name='mesi' id='mese'>";
echo "<option value=""> mese </option>";
echo "<option value=""> </option>";$mesi = array (
"1" => "Gennaio",
"2" => "Febbbraio",
"3" => "Marzo",
"4" => "Aprile",
"5" => "Maggio",
"6" => "Giugno",
"7" => "Luglio",
"8" => "Agosto",
"9" => "Settembre",
"10" => "Ottobre",
"11" => "Novembre",
"12" => "Dicembre",
);
$mese=$mesi[date('n')-1];
$chiave=array_search($mese,$mesi);
$a=1;
while($a<13){echo"<option value="$a">$mesi[$a]</option>";
$chiave++;
$a++;
if($chiave==13){$chiave=0;}
}
echo"</select>";echo "</select>";
//Anno
$da=1950;
$al=2014;
echo "<select name='anno' id='anno'>";
echo "<option value=""> anno </option>";
echo "<option value=""> </option>";
for($aa=$da; $aa<=$al; $aa++){
echo "<option value="$aa"> $aa </option>";
}
echo "</select>" ;?>
<p> <p>
Username: <input type ="text" id="username" name="username" >
</p></p>
<p> <p>
Email: <input type ="text" id="email" name="email" >
</p></p><p> <p> Rip-Email: <input type ="text" id="ripemail" name="ripemail" > </p></p> <p> <p> Password: <input type ="password" id="password" name="password" > </p></p> <p> <p> Ri-Password: <input type ="password" id="ripassw" name="ripassw" > </p></p
<input type="checkbox" name="privacy" value="1" onclick="unlock(this, 'btn1')" /> Spuntare per accettare i <a href="c'è il link per regolamentoprivacy.php">termi di regolamento e la privacy. </a>
</form>
<div style ="text-align: center">
<input type="submit" name="Submit" style ="font-family: 'Comic Sans MS'; font-size:25px" id="btn1" value="Invia dati" disabled="disabled">
</div><?php require_once("connetymysqli"); ?> </body>
</html>
[/PHP]
Mi poptresti vedere se ci sono errori o da modificare per favore ??? Grazie.
-
Ciao MenteLibera,
Scusami ma devo chiedere dei chiarmenti. Adoperando la connesssione mysqli devo fare un insert into con la data. Ora volevo sapere la data a parte come viene visualizzata nel modulo di registrazione con tre select diversi per giorn/mese/aaaa, viene memorizzata in un campo unico data presumo. Se si, come dve essere il campo data nel db ???? E un altra cosa, è possibile avere un esempio di insert into con la nuva estensione mysqli ??? Grazie.
-
Il ciclo while è eseguito finché è vera la condizione nel suo argomento, pertanto nel caso che dici per l'ultima iterazione sarebbe:
[PHP]while(12<12)[/PHP]
Noterai che il predicato è falso quindi non viene eseguito, ed infatti tu per farlo tornare ricorrevi all'elemento successivo l'ultimo. Invece come lo suggerivo l'ultimo caso che è:
[PHP]while(12<=12)[/PHP]
In questo caso il predicato essendo vero (è soddisfatta l'uguaglianza) il ciclo viene eseguito, ma quando passa all'elemento successivo non è più soddisfatto il predicato (13<=12).
(Su questo argomento mi pare di essere tornato ai bei vecchi tempi del Liceo e se avessi la liberatoria menzionerei i docenti che mi insegnarono l'informatica per riconoscere il loro credits.)
Ultimo punto che posso seguire è sulla richiesta di trattini anziché l'elemento vuoto. Sostituisci la riga:
[PHP]echo "<option value=""> </option>";[/PHP]
con quest'altra:
[PHP]echo "<option value="">-------</option>";[/PHP]
Devo ripetermi, ma come ultimo consiglio studia gli array a cominciare dal link che ho postato precedentemente. Quando avrai assimilato i contenuti capirai alcune cose interessanti sugli array che permetteranno di scrivere un codice migliore.
Buon lavoro.
-
Ciao MenteLibera,
Grazie delle spiegazioni. Quando ritornerò a Roma mki studio il link ch emi hai dato . Cavolo spieghi veramente bene. Ti posso chiueder eun altro aiuto ??? Su un modulo ????