Corriger mon code php

Fermé
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 11 août 2011 à 15:28
lupuz Messages postés 68 Date d'inscription mercredi 10 août 2011 Statut Membre Dernière intervention 12 août 2011 - 12 août 2011 à 10:15
je suis professeur de maths et je veux créer un code php pour enregistrer les notres de mes eleves dans ma base de donnée oracle .
j'ai essayé de créer un code mais ca marche pas .
alors je ici pour solliciter votre aide .merci d'avance.

voici mes tables :
eleve( NUM,NOM,PRENOM,CLASSE,AGE,)
participe(NUM,id_eval,date_eval,note)
evaluation(id_eval,,type_eval)

au fait dans ma logique je supose que les eleves sont deja inscrit dans ma table eleve avec un autre formulaire que j'ai crée qui marche bien .
maintenant ce que je veux :
je supose que le prof vien de faire un devoir ou une interrogation et il veut enregistrer les note en se servant de la liste des eleve qui est deja dans la base .
donc avec la liste deja dedans il inserre les notes et en meme temps les note sont affiché en face dans le champs MaNOte

et voici mon code :

<?php
// connexion au sgbd de toute façon c'est utilisé par tout dans la page 
$conn = oci_connect("zana", "mdp", '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
(INSTANCE_NAME = orcldb)
(GLOBAL_NAME = orcldb)
))');

if (isset($_POST["Enregistrer"])) {
// la suite est discutable un array_walk (par exemple) opurr être plus intérréssant <img src="./images/smilies/icon_wink.gif" alt=";)" title="Wink" />
//$NOM=trim($_POST["NOM"]);
//$PRENOM=trim($_POST["PRENOM"]);
//$CLASSE=trim($_POST["CLASSE"]);
//$NOTE=trim($_POST["NOTE"]);

//Dans ma base de donnée j'ai deja enregistrer des eleves de différentes classes
//apres avoir fait une evaluation je veux enregistrer les notes des éleves par exemples ceus de la 4eme classe
// alors je crée une requtte sql qui me permet d'abord de faire une selection des eleves de la 4eme5

//au cas ou ces élèves existent ,dans le champ NOTE qui doit se trouver devant chaque nom ,j'inscrit la note de cet élève  

if (!empty($NOM)) { 
    $sql=oci_parse($conn,"INSERT INTO participe(NOTE) values('".$NOTE."')");
    $result = oci_execute($sql);
    //Analyse et exécution d'autres commandes ici...
    // Validation de la transaction
    $committed = oci_commit($conn);// utilise
    // Vérification de la validation : si une erreur est survenue, afficher
    // le message d'erreur
    if (!$committed) {
        $error = oci_error($conn);
        echo 'Validation échouée. Oracle dit : ' . $error['message'];
    }
    else{ 
	    echo $liste_etu['NOTE'] ;
        echo '------------------------Insersion OK !!!!!!!!!';}
    }
   }
else
   { // au cas ou lélève n'existe pas alors je reçois ce message
       echo "LE NOM DE l'élève ne peux être vide !!!";
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style3 {color: #FFFFFF}
.Style4 {color: #FFFFFF; font-weight: bold; }
.Style5 {
color: #CCCCCC;
font-weight: bold;
}
-->
</style>
</head>

<body>

<div align="center">
<h1><a href="MonSiteOK.php" title="Acceuil !!!!" class="Style5">
<input type="image" name="imageField" src="btmylod_1.png" />
</a><em>>>> LISTE DES ELEVES DE 4ème 5 </em> <<<
</h1>
</div>
<form id="form1" name="form1" method="post" action="">
<table width="1065" border="0" align="center" cellspacing="2">
<tr bgcolor="#999999">
<th width="233" scope="row"><span class="Style3">NOM</span></th>
<td width="274"><div align="center" class="Style4">PRENOM</div></td>
<td width="208"><div align="center" class="Style4">CLASSE</div></td>
<td width="144"><div align="center" class="Style4">NOTE</div></td>
<td width="184"><div align="center" class="Style4">MaNote</div></td>
</tr>
<?php
$i=0;
$paire= '33FFFF';
$impaire= 'C0C0C0';
// requete SQL pour l'affichage de la table 
$res = oci_parse($conn,"SELECT NUM,NOM,PRENOM,CLASSE FROM eleve WHERE CLASSE='4eme5' ORDER BY NOM ASC");
if ($res === false ){
    // affichage d'un message d'erreur !
}
else {
    $req = oci_execute($res);
    if ($req === false ){
        // affiche le message d'erreur. 
    }
    else {
        // la je met des { pour le else mais sans ça fait pareil <img src="./images/smilies/icon_wink.gif" alt=";)" title="Wink" />
        while($liste_etu = oci_fetch_assoc($res)) {
        ?>
        <tr bgcolor="#<?php
        if( ($i%2) === 0) echo $paire;
        else echo $impaire; ?>">
        <td><?php echo $liste_etu['NOM'] ?></td>
        <td><?php echo $liste_etu['PRENOM'] ?></td>
        <td><?php echo $liste_etu['CLASSE'] ?></td>
        <td><input type="text" name="NOTE[]" value=" "/><input type="hidden" name="NUM[]" value="<?php echo $list_etu['NUM'];?>"</td>

        <td><?php //echo $ech ?></td>
        </tr>
        <?php
        $i++;
        }
}
}
?>
</table>
<table width="200" border="0">
  <tr>
    <td><input type="submit" name="Enregistrer" value="Enregistrer" /></td>
    <td><input type="submit" name="annule" value="Annuler" /></td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</form>
<p>&nbsp;</p>
</body>
</html>
A voir également:

3 réponses

lupuz Messages postés 68 Date d'inscription mercredi 10 août 2011 Statut Membre Dernière intervention 12 août 2011 11
11 août 2011 à 15:36
Bonjour,

Lors de l'ajout de la note, tu ne lie pas cette dernière à un élevé
"INSERT INTO participe(NOTE) values('".$NOTE."')" il manque d'une façon ou d'une autre un identifiant de l'élevé.
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023
Modifié par msi79 le 11/08/2011 à 19:14
oui je vois mais peut tu m'aider a construire cette requète.
voici a quoi j'ai pensé :
 $sql=oci_parse($conn,"INSERT INTO participe(NOTE) values('".$NOTE."',(SELECT NUM FROM eleve ;))");
0
lupuz Messages postés 68 Date d'inscription mercredi 10 août 2011 Statut Membre Dernière intervention 12 août 2011 11
12 août 2011 à 10:15
Cette requête va affecter toutes les notes au même élève :
$sql=oci_parse($conn,"INSERT INTO participe(NOTE) values('".$NOTE."',(SELECT NUM FROM eleve ;))");

Le NUM de l'élève est passé en POST avec la note
la bonne requête serait plutôt du type :

$sql=oci_parse($conn,"INSERT INTO participe(NOTE, NUM) values('".$NOTE."','".$NUM"');
0