Newsgroup: it.comp.software.database
Titolo: Campi query "variabili"

Per una classe di studenti, vorrei che ciascun docente leggesse il voto 
delle proprie materie
Per esempio il docente di Italiano, storia, geografia le proprie ed il 
docente di Italiano, storia, geografia le proprie.
Ho fatto un una pagina dalla quale con get viene letto
iddocente
idclasseAssegnata
materieASSEGNATE
per esempio il risultato puň essere
$iddocente = 2;
$idclasseAssegnata = 3;
$materieASSEGNATE = "storia;geografia;italiano";
con queste istruzioni creo il codice per i campi da leggere
$M = explode(";", $materieASSEGNATE);
foreach($M as $CM){$CampoMateria = $CampoMateria ."salunni.".$CM.", ";}
con la seguente query
$query = "SELECT ".$CampoMateria." salunni.idalunno, salunni.idclasse, 
salunni.cognomenome  FROM salunni WHERE 
(((salunni.idclasse)='$idclasse'));";
E fino a qui non ci sono problemi, ma scorrendo la query sono "costretto" a 
scrivere:
while ($row = mysql_fetch_array($result))
{
echo "<br>";
echo $row['idalunno'], " - " , $row['cognomenome'], " - " , $row['storia'], 
" - " , $row['geografia'], " - " , $row['italiano'];
}
?>
Ed il problema appare se per esempio le materie sono matematica e scienze, 
dovrei scrivere cosě!!!
echo $row['idalunno'], " - " , $row['cognomenome'], " - " , $row['storia'], 
" - " , $row['geografia'], " - " , $row['italiano'];
e cosě via.
Come posso fare ad utilizzare una "variabile" per leggere le materi diverse=
Qualcosa del genere (ma č solo per farmi capire)
$row['MATTERIA1'], $row['MATTERIA2']
Spero di essere stato comprensibile,
grazie a chi potrŕ aiutarmi.
Leonardo 

 $materieASSEGNATE = "storia;geografia;italiano"
Dio mio...
Rifai lo schema del database in modo da normalizzarlo. Per maggiori 
informazioni, questo e` un buon punto di partenza: 
http://it.wikipedia.org/wiki/Normalizzazione_del_database
 (e` interessante 
notare che riporta un caso d'uso come il tuo)
Enrico


io gli farei la domanda come ha fatto ad ottenere l'incarico di database
admin >>>>:-> per una scuola

Enrico 'Henryx' Bianchi ha scritto:

concordo, per'altro ti giuro non sono riuscito a capire molto
poi due precisazioni ancora:
1) [un pò ot] da quel che vedo stai usando php, e a meno che non hai 
taglaito parti di codice stai usando anche le global var, con php6 le 
hanno tolte, visto che ci sei comincia a non usarle più tanto per 
evitarti lavori futuri, riferisciti alle var con 
$_GET['materieASSEGNATE'] (magari evita pure il maiuscolo)
2) le query scritte così non sono sanificate...fossi uno studente non ci 
penserei due volte a tentare qualche injection per alzarmi il voto... :D 
(certo dovrei sapere com'è il db, dovrei raggiungere le pagine 
ecc...però....)

>
Ti ringrazio, non conscevo quella pagina.
Ma sono io che non sono riuscito a spiegarmi, il problema era banale, la 
mattina al risveglio sapevo gią di averlo risolto. Bastava inserire as 
Materia1 nella query
Ciao
Leonardo

 admin >>>>:-> per una scuola
Posto che si dovrebbe parlare di Database Developer, e` irrilevante ai fini 
della discussione
Enrico
P.S. si, lo so che il tuo era un tentativo di fare una battuta, ma 
preferisco rispondere cosi` per evitare possibili flame. Tra l'altro, viste 
le poche informazioni a riguardo, nulla vieta di pensare che l'OP sia uno 
studente della scuola stessa (non sarebbe la prima volta che degli studenti 
vengano "sfruttati" per la realizzazione di progetti utili all'istituto)


in questo caso sanno bene, a "sfruttarli" cosi vedono una situazione
reale e non un lavoro teorico fine a se stesso