Codice PHP:
if(isset($_POST["newVoteFor_".$riga["id"]]) || empty($_POST["newVoteFor_".$riga["id"]]))
$_POST["newVoteFor_".$riga["id"]] = false;
In queste due righe inizializzo ogni Select, nel caso in cui il campo fosse vuoto. Serve più che altro per non vedere l'errore Undefined Index.
Codice PHP:
if(
is_numeric($_POST["newVoteFor_".$riga["id"]]) //Controllo che il valore sia numerico
&& ($_POST["newVoteFor_".$riga["id"]] >= 3) //Controllo che il voto vada da 3 a 10
&& ($_POST["newVoteFor_".$riga["id"]] <= 10)
)
Questo If effettua dei controlli prima di inserire il voto.
Il primo controlla che il valore ricevuto sia effettivamente numerico, e che qualche utente non abbia cambiato il codice per inserire un'altra cosa nel DB.
Gli altri due controllano che il voto sia un numero compreso tra 3 e 10.
La tua query di inserimento dovrebbe essere qualcosa del genere
codice:
INSERT INTO `voti` (`id_studente`, `voto`) VALUES ('".$riga["id"]."', '".$_POST["newVoteFor_".$riga["id"]]."');
i voti sono contenuti in newVoteFor_? cioè fai un ciclo e a seconda della riga fai un post per ottenere il voto attraverso newVoteFor_?
Invece gli studenti si ottengono facendo di nuovo una query relativa alla classe selezionata...
Ogni select ha come base (che ovviamente puoi cambiare, era solo per distinguerli meglio)
newVoteFor_ID_Studente
Quindi, nella pagina di inserimento, posso
- Rifare la query e inserire un nuovo voto SOLO se è presente un <select> che finisce con l'ID dello studente corrente ("corrente" cambia automaticamente all'interno del ciclo)
Oppure
- Analizzare tutti i $_POST[] che vengono trasmessi alla pagina, verificare che provengano dal Select per inserire un nuovo voto, prendere l'id dello studente, ed infine fare l'Insert
Se vuoi provare il secondo esempio, ho scritto al volo questo
Codice PHP:
foreach ($_POST as $key => $value){ //Per ogni $_POST[] ricevuto
if(substr($key, 0, 11) == "newVoteFor_"){ //Controllo che abbia come nome di base "newVoteFor_"
$idStudente = substr($key, 11); //Prendo gli ultimi caratteri della stringa
if(
is_numeric($value) &&
($value >= 3) &&
($value <= 10)
){
if(!mysql_query("INSERT INTO `voti` (`id_studente`, `voto`) VALUES ('".$idStudente."', '".$value."');"))
echo mysql_error() ."
";
}
}
}
Ma non l'ho ancora testato quindi non ne sono sicurissimo ^^"