- Home
- Categorie
- Coding e Sistemistica
- Coding
- Script per assegnare i voti agli studenti
-
Mi posti i due file così vediamo cosa non va'?
Con le modifiche che ti ho messo prima a me funziona senza problemi.
-
tuttivoticlasse.php
<?php
include("include/config.php");
include("include/connessione.php");$classe=$_POST['tuttivoti'];
$oggi=date("Y-m-d");$sql="SELECT *
FROM studenti
WHERE classe = '$classe'
ORDER BY cognome ASC, nome ASC";$result = mysql_query($sql,$db)or die ("Errore nella query: " . mysql_error());
?>
<table>
<form id="form_ins_voti" name="insertvoti" method="post" action="salvatuttivoti.php" >
<?php
while ($studente = mysql_fetch_array($result)){
?>
<tr>
<td><strong><?php echo $studente['id_studente']." ".$studente['cognome']." ".$studente['nome'].""; ?></strong></td>
<td>data:<input name="datavoto[]" type="text" id="datavoto" size="10" value="<?php echo"$oggi"?>" /></td>
<td>tipo:
<select name="tipovoto[]" id="tipovoto">
<option value="Scritto">Scritto</option>
<option value="Orale">Orale</option>
</select></td>
<td>voto:
<input type="text" name="voto[]" id="voto" size="3" />
<input type="hidden" name="id_studente[]" value="<?php echo $studente['id_studente']; ?>" />
</td>
<?php
}
mysql_free_result($result);
mysql_close($db);
?>
<td><input type="submit" name="button" id="button" value="Invia" /></td>
</form>
</tr>
</table>salvatuttivoti.php
<?php
include("include/config.php");
include("include/connessione.php");$id_studente=$_POST['id_studente'];
$datavoto=$_POST['datavoto'];
$tipovoto=$_POST['tipovoto'];
$voto=$_POST['voto'];//var_dump ($id_studente);
//echo "<br />";
//var_dump ($datavoto);
//echo "<br />";
//var_dump ($tipovoto);
//echo "<br />";
//var_dump ($voto);
//echo "<br />";for ($i=0; $i<=(count($id_studente)); $i++) {
if (isset($voto*) && is_numeric($voto*)) //nel frattempo controlliamo che sia un valore numerico
{
// list($Y, $m, $d)=explode("-",$datavoto*);
// $datavoto*=mktime(0,0,0,$Y,$m,$d);
$sql="INSERT INTO voti (id_studente, tipo_voto, data_voto, voto)
VALUES ('$i', '$tipovoto*', '$datavoto*', '$voto*')";
$query=@mysql_query($sql) or die (mysql_error());
}
}
?>
-
Ok, avevo tagliato io un pezzo postando le modifiche.
Varia la query così:
[php]$sql="INSERT INTO voti (id_studente, tipo_voto, data_voto, voto)
VALUES ('$id_studente*', '$tipovoto*', '$datavoto*', '$voto*')";[/php]
-
Perfetto! Funziona tutto benissimo anche il fatto che se non inserisco il voto ad uno studente (magari assente) non viene inserito nulla nel db (che è esattamente quello che serve perché calcolo le medie...).
Ci sarebbe ancora un piccolo ritocco...Poiché l'inserimento dei voti a molti studenti si riferisce solo ad un compito in classe, mi sembra inutile ripetere ad ogni riga la data (viene effettuata per tutti nello stesso giorno) e la tipologia (scritto). Sarebbe possibile indicare in una casella sola buona per tutti gli studenti?
-
Varia allora così il form:
[php]<?php
include("include/config.php");
include("include/connessione.php");$classe=$_POST['tuttivoti'];
$oggi=date("Y-m-d");$sql="SELECT *
FROM studenti
WHERE classe = '$classe'
ORDER BY cognome ASC, nome ASC";$result = mysql_query($sql,$db)or die ("Errore nella query: " . mysql_error());
?>
<table>
<form id="form_ins_voti" name="insertvoti" method="post" action="salvatuttivoti.php" >
<tr>
<td>data:<input name="datavoto" type="text" id="datavoto" size="10" value="<?php echo"$oggi"?>" /></td>
<td>tipo:
<select name="tipovoto" id="tipovoto">
<option value="Scritto">Scritto</option>
<option value="Orale">Orale</option>
</select>
</td>
</tr>
<?php
while ($studente = mysql_fetch_array($result)){
?>
<tr>
<td><strong><?php echo $studente['id_studente']." ".$studente['cognome']." ".$studente['nome'].""; ?></strong></td>
<td>voto:
<input type="text" name="voto[]" id="voto" size="3" />
<input type="hidden" name="id_studente[]" value="<?php echo $studente['id_studente']; ?>" />
</td>
</tr>
<?php
}
mysql_free_result($result);
mysql_close($db);
?>
<tr><td colspan="2"><input type="submit" name="button" id="button" value="Invia" /></td></tr>
</form>
</tr>
</table>[/php]E così il salvatuttivoti:
[php]<?php
include("include/config.php");
include("include/connessione.php");$id_studente=$_POST['id_studente'];
$datavoto=$_POST['datavoto'];
$tipovoto=$_POST['tipovoto'];
$voto=$_POST['voto'];for ($i=0; $i<=(count($id_studente)); $i++) {
if (isset($voto*) && is_numeric($voto*))
{
$sql="INSERT INTO voti (id_studente, tipo_voto, data_voto, voto) VALUES ('$id_studente*', '$tipovoto', '$datavoto', '$voto*')";
$query=@mysql_query($sql) or die (mysql_error());
}
}
?>[/php]
-
Ho provato ad inserire il voto a due classi (3 alunni per classe) ma mi ha salvato solo gli ultimi due id, vale a dire id_3 e id_6
-
Che voti hai messo agli altri? Ed in che formato?
-
Classe 4A
Ho inserito i seguenti voti:
id1 Cognome1 Nome1 voto: 10
id2 Cognome2 Nome2 voto: 20
id3 Cognome3 Nome3 voto: 30Classe 4B
Ho inserito i seguenti voti:
id4 Cognome1 Nome1 voto: 40
id5 Cognome2 Nome2 voto: 50
id6 Cognome3 Nome3 voto: 60Nel db sono stati scritti:
id3 voto: 30
id6 voto: 60
-
A me ha preso tutto.
Ricontrolla lo script e verifica i numeri immessi.
-
Scoperto il problema.
Volendo inserire:
echo"<p>Inserimento eseguito correttamente</p> \n";
echo"<META HTTP-EQUIV='Refresh' CONTENT='3; URL=admin.php'>";
probabilmente crea problemi, pazienza vedrò come e dove inserire il reindirizzamento.
Colgo l'occasione per ringraziarti dell'enorme aiuto.
Sono un prof delle superiori che da qualche anno ha deciso di pubblicare, tra le altre cose, i voti degli studenti. Mi sono ingegnato per rendere possibile l'idea e, chiedendo aiuto e leggendo qua e la...
Cerco poi sempre di apportare delle migliorie sia grafiche che sostanziali.
Questa è stata una delle più interessanti perché prima dovevo inserire i voti ad uno ad uno...Cordialità
M. Polliotto
http:\polliotto.altervista.org
-
Non puoi mettere un <meta .....> in mezzo alla pagina. Puoi usare un header("Refresh:3;url=admin.php"); o un Js <script>setTimeout("top.location.href='admin.php'",3000);</script>
Buon lavoro e piacere d'esserti stato utile.
-
Ancora grazie e, se avrò bisogno...so dove rivolgermi
Buona estate
M. Polliotto
-
Buona estate anche a te...e al rientro sii buono con tuoi studenti.
Alla prossima.