Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    MySQL Visualizzare stessa opzione una volta sola

    Allora, io ho creato uno script per la mia classe per segnare tutti i dati dei test di educazione fisica
    Ho creato una tabella con campi: alunno, prova, primo_quadrimestre (il risultato della prova nel primo quadrimestre), secondo_quadrimestre, anno_scolastico.
    Ora, ho creato lo script per aggiungere i dati alla tabella e funziona tutto.
    Il mio problema è quando voglio mostrare i dati di una persona.
    ad esempio: http://sito/script_edfisica/view.php?alunno=alunno1

    All'interno di view.php ho questo script:
    Codice PHP:
    $alunno=$_GET['alunno'];
    $query $mysql->query("SELECT * FROM educazione_fisica WHERE alunno='$alunno' ORDER BY alunno LIMIT 0,2");
    echo 
    "<div id=\"contenitore\">";
    echo 
    "<p class=\"titolo\">Risultati di: $alunno</p>";
    while (
    $row mysqli_fetch_array($query)) {
    echo 
    "<p class=\"paragrafo\">Anno Scolastico: $row[anno_scolastico]
    \n
    \n</p><table cellspacing=\"20\" width=\"500\"><tr><td></td><td>[b]Primo Quadrimestre[/b]</td><td>[b]Secondo Quadrimestre[/b]</td></tr>"
    ;
    $ris $mysql->query("SELECT prova, primo_quadrimestre, secondo_quadrimestre FROM educazione_fisica WHERE alunno='$alunno' AND anno_scolastico='$row[anno_scolastico]' ORDER BY prova");
    while (
    $row2 mysqli_fetch_array($ris)) {
    if (
    $row2['secondo_quadrimestre'] == "") {
    $row2['secondo_quadrimestre'] = "--";
    }
    echo 
    "<tr><td>[b]$row2[prova][/b]</td><td>$row2[primo_quadrimestre]</td><td>$row2[secondo_quadrimestre]</td></tr>";
    }
    echo 
    "</table>
    "
    ;

    Solo che dato che il form che invia i dati invia una prova alla volta è possibile che nella tabella ci siano fino a 7 righe (7 è il numero di prove) con lo stesso anno.
    Dato che il mio intento è visualizzare una tabella per ogni anno, come faccio a non far ripetere l'anno?
    Cioè, come evitare una cosa del genere: http://2ste.netsons.org/script_fisic...p?alunno=Bardo?
    Spero abbiate capito =/

  2. #2
    mica tanto... :master:

  3. #3
    Allora ti faccio un esempio:
    Metto i dati di un alunno che si chiama Andrea
    Vado su insert.php e faccio:

    Alunno: Andrea
    Prova: salto in lungo da fermo
    risultato primo quadrimestre: 2.50m
    risultato secondo quadrimestre: 2.70m
    anno scolastico: 2007/2008
    Inserisco. Torno a insert.php e faccio:

    Alunno: Andrea
    Prova: Trazioni alla sbarra
    Risultato primo quadrimestre: 23
    Risultato primo quadrimestre: 27
    Anno scolastico: 2007/2008

    Ora, in view.php ho un codice che mi seleziona tutte le righe che riguardano un certo alunno (in questo caso Andrea):

    Codice PHP:
    $query $mysql->query("SELECT * FROM educazione_fisica WHERE alunno='$alunno' ORDER BY alunno LIMIT 0,2"); 
    La query ha come limite 0,2 perchè è due anni che siamo alle superiori, perciò gli anni da visualizzare sono 2.
    Ora, ho un ciclo while che per ogni anno mi crea una tabella:
    Codice PHP:
    while ($row mysqli_fetch_array($query)) {
    echo 
    "<p class=\"paragrafo\">Anno Scolastico: $row[anno_scolastico]
    \n
    \n</p><table cellspacing=\"20\" width=\"500\"><tr><td></td><td>[b]Primo Quadrimestre[/b]</td><td>[b]Secondo Quadrimestre[/b]</td></tr>"

    (manca la parte finale, ma in questo frangente non serve e vi creerebbe ancora più confusione).
    Ora, tornando all'esempio di prima, siccome ho messo due prove, e tutte e due avevano come anno scolastico: 2007/2008, mi creerebbe due volte la tabella con anno scolastico 2007/2008 (come nel link riportato sopra), mentre io voglio, in sintesi, che lo stesso anno venga visualizzato una volta sola.
    Cioè, mettiamo che per un alunno ci siano 7 righe con anno scolastico 2007/2008 e due righe con anno scolastico 2006/2007, vorrei che il ciclo while mi visualizasse una volta l'anno 2007/2008 e una l'anno 2006/2007.

  4. #4

  5. #5
    Ma nella tabella educazione_fisica, tu inserisci un nuovo record riferito ad un alunno per ogni prova che fa, cioé tu hai fatto l'esempio:

    Alunno: Andrea
    Prova: salto in lungo da fermo
    risultato primo quadrimestre: 2.50m
    risultato secondo quadrimestre: 2.70m
    anno scolastico: 2007/2008
    Inserisco. Torno a insert.php e faccio:

    Alunno: Andrea
    Prova: Trazioni alla sbarra
    Risultato primo quadrimestre: 23
    Risultato primo quadrimestre: 27
    Anno scolastico: 2007/2008

    Quindi quando avete fatto il salto in lungo da fermo hai inserito in educazione_fisica una cosa del genere:

    INSERT INTO educazione_fisica (alunno, prova, risultato_primo_quad, ris_secondo_quad, anno)
    VALUES ('Andrea', 'salto in.....', ......., '2007/2008')

    Quando, invece, ci sono state le trazioni alla sbarra:

    INSERT INTO educazione_fisica (alunno, prova, risultato_primo_quad, ris_secondo_quad, anno)
    VALUES ('Andrea', 'trazioni.....', ......., '2007/2008')


    Se, poi c'è un'altra prova ad esempio corsa 100 metri, allora aggiungerei per Andrea un nuovo record alla tabella, quindi non ha senso fare:

    SELECT * FROM educazione_fisica WHERE alunno='$alunno' ORDER BY alunno LIMIT 0,2

    e dire che La query ha come limite 0,2 perchè è due anni che siamo alle superiori, perciò gli anni da visualizzare sono 2.
    Ma quello che devi fare è una select in cui prendi tutte le prove di Andrea per l'anno scolastico in corso, cioé:

    SELECT * FROM educazione_fisica WHERE alunno='$alunno' AND anno='2007/2008' ORDER BY alunno

  6. #6
    Infatti se guardi il codice completo che ho postato nel primo post lo faccio, solo che fare solo così significa che l'anno dovrei scriverlo io manualmente, mentre preferirei che se l'anno prossimo aggiungessi come record una prova con anno scolastico = 2008 lo aggiungesse automaticamente.
    Guarda qui: http://2ste.netsons.org/script_fisi...hp?alunno=Bardo
    Sopra ogni tabella c'è la scritta anno scolastico, che viene generata automaticamente, vorrei che continuasse a fare così, solo non mettendo più volte lo stesso anno.
    Poi vabbè, se la cosa è troppo complicata metto a mano, tanto è da fare solo una volta all'anno XD

  7. #7
    Per l'anno corrente puoi usare:

    $anno_corrente = date("Y");

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.