Modificare la pagina elenco.php
della lezione PHP e MySQL in modo da
mostrare gli oggetti della mancolista suddivisi in base alla categoria di appartenenza. Ad esempio:
Fumetti
- La storia dei tre Adolf
- The Amazing Spiderman n. 1
Film
- Lo chiamavano Trinità
La nuova pagina web dovrà utilizzare i parametri di configurazione presenti nel file config.php
(che non è necessario però includere nella consegna), e non dovrà generare alcun tipo di messaggio di errore.
Ci sono due strade per risolvere il problema. La prima consiste nell'usare due query annidate: la più esterna scorre le categorie, la più interna gli oggetti all'interno di quella categoria. L'altro metodo è fare un join tra la tabella categorie e oggetti, ordinare il risultato in base alla categoria, e visualizzare una nuova intestazione ogni volta che la categoria cambia rispetto a quella della riga precedente.
Questi sono gli errori più comuni che ho riscontrato:
SELECT
una clausola del tipo ORDER BY categorie.nome
; in caso contrario, se gli oggetti che appartengono alla stessa categoria non sono consecutivi, viene generata la stessa intestazione più volte.PDO
), e inviare la query esterna su una connessione e quella interna sull'altra.Ecco i risultati finali. Gli asterischi si riferiscono agli errori di cui sopra.
Studenti | Giudizio | Commento |
---|---|---|
Adriani, Mariani | Buono | *3 - sarebbe meglio usare ORDER BY invece di GROUP BY nella query, visto che non si usa nessuna funzione aggregata |
Altomare, Francescone, Terrenzi | Sufficiente | *1 |
Candeloro, De Luca F. | Sufficiente | *1 |
Capparella, Tontodonati | Sufficiente | *1 - non usate il file config.php come richiesto, ma mettete i parametri di connessione direttamente nella soluzione dell'esercizio. |
Cardone, Staniscia | Sufficiente | *1 |
Cialfi | Insuff. | *2 |
Cialfi bis | Suff. | vedi versione corretta inviata in attachment |
Cilli, Di Giovanni, Paglialunga (versione 2) | Ottimo | *3, *4 |
Coccione | Ottimo | *3 |
D'Ambrosio, Sappracone | Insuff. | - non visualizza tutti gli oggetti, a causa dell'uso della clausola GROUP BY nella query al database, invece di ORDER BY - visualizza messaggi di errore relativamente alla variabile $cat non definita |
D'Ambrosio, Sappracone bis | Buono | *3 |
D'Aveta, Di Chiro | Sufficiente | *1 |
D'Incecco, Marchesani | Ottimo | |
De Luca S. | Buono | *3, *4 - l'uso che fai della variabile $prova è veramente poco elegante. Puoi inserire direttamente la variabile $riga["nome"] dentro la query, se ti ricordi di racchiuderla tra parentesi graffe. |
Iuras | Insuff. | *2 |
Iuras bis | Buono | vedi Parlermo bis |
Mazziotti, Scutti | Sufficiente | *1 |
Monachese-Salerno | Ottimo | *3 |
Palermo | Insuff. | *2 |
Palermo bis | Buono | - sarebbe meglio se la query interna automaticamente selezionasse i soli oggetti della cateroria giusta (SELECT * FROM oggetti WHERE categoria_id=? ) con ? poi impostato a $riga["id"] . In questo modo non dovresti controllare manualmente con $riga["id"] coincida con $rig["categoria_id"] e l'applicazione sarebbe più efficiente. Usate al massimo le funzionalità del linguaggio SQL!! |
Pignoli | Sufficiente | *3, *4 - non va bene l'uso della variabile $num , perché nessuno ti assicura che gli id delle categorie siano consecutivi. Dovresti eliminare questa variabile e, nella query, rimpiazzare $num con {$cat['id']} . |
Taronna | Buono | *4 - ti sei dimenticato una virgola alla linea 14... morale: provare le modifiche prima di inviare il file! |
Chi ha ottenuto un voto insufficiente può recuperare o venendo a ricevimento o inviandomi una versione corretta.