• User Attivo

    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.


  • User Attivo

    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


  • User Attivo

    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.


  • User Attivo

    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.


  • User Attivo

    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
    Marzo

    ecc... 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


  • User Attivo

    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]


  • User Attivo

    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 ????


  • User Attivo

    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.


  • User Attivo

    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.


  • User Attivo

    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.


  • User Attivo

    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 ????