- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problema: non riesco a mettere in ordine i mesi in una select
- 
							
							
							
							
							Volendo stampare ordinatamente i mesi dell'anno (da Gennaio a Dicembre) riprendendo fedelmente quel codice la versione corretta sarebbe questa: [PHP]<?php //Mese echo"<select name="mesi">"; echo "<option value=""> mese </option>"; 
 echo "<option value=""> </option>";$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"
 );
 $mese=$mesi[date('n')-1];
 $chiave=array_search($mese,$mesi);
 $a=0;
 while($a<12){echo"<option value="$a">$mesi[$a]</option>"; $chiave++; 
 $a++;
 if($chiave==12){$chiave=0;}
 }
 echo"</select>";echo "</select>"; 
 ?>[/PHP]Spero che sia utile. 
 
- 
							
							
							
							
							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: meseGennnaio 
 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> <?phpecho "<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 ????