• User

    esami di php...media materie...

    Ciao a tutti,
    ho scoperto questo sito per caso , ma spero che la sorte mi abbia aiutato!!
    Arrivo subito al problema...
    Sto studiando da qualche settimana php per poterlo utilizzare in futuro...
    Purtroppo, però, ho necessità di realizzare un progetto per la mia ultima materia all'università.
    Ho così presentato un progetto molto semplice, essendo alle prime armi, in php, ma al docente non è bastato ed ha pensato di propormi delle modifiche sapendo benissimo che non sarei in grado di farlo e debba ricorrere all'aiuto di un amico (parole sue!!!). Ma non conosco nessuno....magari ne nascerà una nuova amicizia con voi.
    Qui vi riporto le pagine che ho creato e poi vi spiego il problema....
    <HTML
    <BODY>
    <div align="center"></div>
    <FORM METHOD=POST ACTION="media.php">
    <table width="372" border="0" align="center" cellspacing="4">
    <tr>
    <td width="182" bgcolor="#009900">Nome</td>
    <td width="174"><input name="nome" type="text" ></td>
    </tr>
    <tr>
    <td> </td>
    <td> </td>
    </tr>
    <tr>
    <td bgcolor="#006600">Materia 1 </td>
    <td><select name="m1">
    <option>18</option>
    <option>19</option>
    <option>20</option>
    <option>21</option>
    <option>22</option>
    <option>23</option>
    <option>24</option>
    <option>25</option>
    <option>26</option>
    <option>27</option>
    <option>28</option>
    <option>29</option>
    <option>30</option>
    </select></td>
    </tr>
    <tr>
    <td bgcolor="#006600">Materia 2 </td>
    <td><select name="m2" >
    <option>18</option>
    <option>19</option>
    <option>20</option>
    <option>21</option>
    <option>22</option>
    <option>23</option>
    <option>24</option>
    <option>25</option>
    <option>26</option>
    <option>27</option>
    <option>28</option>
    <option>29</option>
    <option>30</option>
    </select></td>
    </tr>
    <tr>
    <td> </td>
    <td><input name="SUBMIT" type="SUBMIT" value="Calcola la media"></td>
    </tr>
    </table>

    </p>
    </FORM>
    </BODY>
    </HTML>

    pagina PHP
    <HTML><?php
    $nome = $_POST['nome'];
    $m1 = $_POST['m1'];$m2 = $_POST['m2'];
    $media_voti = ($m1+$m2)/2;?>
    <BODY>
    <table width="281" border="0" align="center" cellspacing="4">
    <tr>
    <td height="71" colspan="2" bgcolor="#000099"><div align="center" class="Stile1">Tabella Riepilogativa </div></td>
    </tr>
    <tr>
    <td colspan="2"> </td>
    </tr>
    <tr>
    <td width="201" bgcolor="#000099"><div align="center">Materia 1 </div></td>
    <td width="64" bgcolor="#0000CC"><div align="center"><?php echo $m1 ?></div></td>
    </tr>
    <tr>
    <td bgcolor="#000099"><div align="center" class="Stile2">Materia 2 </div></td>
    <td bgcolor="#0000CC"><div align="center">
    <?php echo $m2 ?>
    </div></td>
    </tr>
    <tr>
    <td> </td>
    <td> </td>
    </tr>
    </table>
    <p align="center">

    <?php echo "Ciao $nome";
    echo "

    Il tuo punteggio di partenza è " . ceil($media_voti);?>
    </p>
    <p align="center">
    <?php
    if ($media_voti >100) {
    echo "Complimenti! Hai una buona media ";
    } else {
    echo "Complimenti per la tristezza.";
    }
    ?>
    </p>
    <p align="center"> </p>
    </BODY>
    </HTML>
    Il prof. mi ha spiegato che vorrebbe che si prospettasse la seguente soluzione, cercherò di essere il più chiaro possibile....
    Considerando tre studenti Mario Paolo e Mirko...
    Lo studente MARIO compila il form nella pagina html e ad esempio seleziona nella materia sociologia 18.
    fin qui ci siamo no??
    successivamente lo studente PAOLO compila anche lui il form e ad esempio nella materia sociologia seleziona invece 20.
    successivamente lo studente MIRKO compila il form e ad esempio nella materia sociologia seleziona invece 22.
    Quello che il prof vorrebbe è che allo studente PAOLO risulti non solo il suo voto in sociologia, ma anche la media tra il suo voto in sociologia e quello di MARIO(in questo caso tra 18 e 20).
    A Mirko invece risulterà il suo voto in sociologia e la media tra il suo voto in sociologia e quelli di MARIO e PAOLO(in questo caso tra 18 20 e 22).
    Vi prego di aiutarmi se potete in quanto ho l'esame tra 2 settimane!!!!
    grazie di cuore


  • Moderatore

    Non è che ci ho capito tanto... ma probabilmente ti basta un database dove registri nome e voto.

    Quando vuoi stampare le medie, controlli i dati inseriti e ci fai la medi. :ciauz:


  • User Attivo

    ciao,
    dubito di aver capito quello che vuoi fare :bho: o forse se tu che non hai capito quello che vuole il professore :mmm: .Non vedo il senso di quello che ti ha chiesto ... comunque:
    essendo utenti diversi, in tempi diversi, da PC diversi a scegliere il voto ed ad inviare il form allora da qualche parte dovrai memorizzare la scelta di ciascuno.

    Dove memorizzare? MySql ma forse ti complichi ... in questo caso allora meglio su un bel file .txt utilizzando [url=http://it2.php.net/fwrite]fwrite di php
    qualcosa del genere:

    <?php
    $voto = $_POST[m1];
    $filename = $_POST[materia_m1].".txt";
    if (!$handle = fopen($filename, 'a')) {
    echo "Cannot open file ($filename)";
    exit;
    }
    if (fwrite($handle, $voto."\n") === FALSE) {
    echo "Cannot write to file ($filename)";
    exit;
    }
    fclose($handle);
    ?>
    Il codice di sopra memorizza in un file chiamato materia.txt riga per riga i voti scelti per quella materia da tutti gli studenti che utilizzano il form.

    Adesso ti serve recuperare tutti i voti e calcolarne la media, e lo fai con [url=http://it2.php.net/file_get_contents]file get contents:

    <?php
    $storico_voti = file_get_contents ($materia."txt");
    $voti = explode ('\n', $storico_voti); //mette ogni riga del file in un record dell'array voti
    array_pop($voti); //elimina l'ultimo record dell'array che è una riga vuota
    $media_storico = array_sum($voti)/count($voti);
    echo $media;
    ?>

    Fammi sapere :ciauz: