Enreqistrer des notes d'eleves en php

salut a tous .
je veux enregistrer les notes des eleves mais ma requete passe pas . s'il vous plait aider moi .
voici mon code :

<?php
$date = date("d-m-Y");
$heure = date("H:i");
echo 'Nous sommes le '.$date.' et il est '.$heure;
?>
<?php
if (isset($_POST["valider"])) {
    $NOTE=trim($_POST["NOTE"]);
    $conn = oci_connect("zana", "cool75sool", '(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)
    ))');
    	
		$sql=oci_parse($conn,"INSERT INTO participe(NOTE) values('".$NOTE."',(SELECT NUM FROM eleve WHERE NUM.eleve=Num.participe))");
			$result = oci_execute($sql);  
		if ($result) {
			$msg="<font color=green>insertion OK</font>";
		}
		else {
			$msg="<font color=red>insertion impossible</font>";
		}
		 /*

    Analyse et exécution d'autres commandes ici...

    */

    // Validation de la transaction
    $committed = oci_commit($conn);

    // 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 '------------------------Insersion OK !!!!!!!!!';}
	
	}
	 


?>
<!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>
</head>

<body>
<table width="200" border="0" align="center" bgcolor="#CCCCCC">
  <tr>
    <td colspan="2">-------------Sa Note------------- </td>
  </tr>
  <tr>
    <td width="40">note</td>
    <td width="144"><input type="text" name="NOTE" value=""/></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><input type="submit" name="Valider" value="Enregistrer" /></td>
    <td><input type="reset" name="Submit2" value="Annuler" /></td>
  </tr>
</table>
</body>
</html>

13 réponses

Résumé de la discussion

L'objectif est d'enregistrer les notes des élèves via une page PHP connectée à Oracle, mais la requête d'insertion ne passe pas et empêche l'enregistrement des notes. Des causes techniques émergent, comme un nom de champ POST non aligné (Valider vs valider) et une requête SQL mal formée qui insère deux valeurs dans une seule colonne. La requête prévoit l'insertion sur une colonne unique (NOTE) avec une sous-requête pour récupérer l'ID, mais elle contient des parenthèses et des guillemets mal placés et utilise un alias inexistant (Num.participe). En cas de correctifs, il serait pertinent de séparer les valeurs dans les colonnes NOTE et ELEVE et d'utiliser une requête paramétrée avec OCI_BIND, afin d'éviter les erreurs de syntaxe et de sécuriser l'opération.

Bobot (l’IA à votre service)
  1. Bonsoir,

    $sql=oci_parse($conn,"INSERT INTO participe(NOTE) values('".$NOTE."',(SELECT NUM FROM eleve WHERE NUM.eleve=Num.participe))");


    c est ce truc la qui marche pas ???

    ton hypothèse de laison NUM.eleve=Num.participe ne semble pas lier à la table eleve...

    si je comprends bien ta liaison : ...(SELECT NUM FROM eleve WHERE eleve.NUM=".$elevequialanote."))

    J espère t avoir eclairé.
    0
    1. je comprend pa cette variable : .$elevequialanote.
      0
      1. ta condition where depend de la clef affecté a l eleve, non ?
        je l ai nommé $elevequialanote
        participe(NOTE) est bien la table des notes ???
        0
    2. voici mes tables:
      eleve( NUM,NOM,PRENOM,CLASSE,AGE,)
      participe(NUM,id_eleve,id_eval,date_eval,note)
      evaluation(id_eval,,type_eval)
      0
      1. il te manques la deuxieme valeur dans le insert
        INSERT INTO participe(NOTE,id_eleve) values('".$NOTE."' ....
        deja ...
        Puis apres la jonction, est trop bizarre ...
        0
    3. j'ai pas compris ton explication alors j'ai essayé ca mais ca marche toujours pas !
      :

      SELECT a.NUM,b.id_eleve FROM eleve a,participe b WHERE a.NUM=b.id_eleve ;
      0
      1. 1- la ligne que tu veux deux elements: la note et l id ...
        2- il te faut au moins l id de l eleve comme 2eme parametre de ton fichier php.
        est ce que ton formulaire te donne ces 2 params???
        dans ce cas ....
        0
      2. INSERT INTO participe (NOTE,id_eleve) values('".$NOTE."',(SELECT a.NUM FROM eleve a,participe b WHERE a.NUM=b.id_eleve and a.NUM=".$elevequialanote ." ))
        0
    4. au fait les élèves sont deja enregistré dans ma base de donnée . je veu enregistrer leur note apres chaque eveluation
      0
      1. a quoi refère .$elevequialanote. et ou et comment l'utiliser
        je suis perdu avec cette variable. explique moi son role
        0
        1. apres if (isset($_POST["valider"])) {rajoute print_r ($_POST);

          dis moi ce qu elle renvoie ...
          0
      2. print_r($_POST) affiche les information de la variable $_POST
        0
        1. voici mes tables :
          eleve( NUM,NOM,PRENOM,CLASSE,AGE,) 
          participe(id_eleve,id_eval,date_eval,note) /////////// id_eleve fait reference a NUM 
          evaluation(id_eval,,type_eval)
          
          j'ai enlevé SELECT qui se trouvait dans mon INSERT .
          j'ai mis :
          
          "INSERT INTO participe(NOTE,id_eleve) values('".$NOTE.",'".$id_eleve."')" .
          mais jusque la ca marche pas
          0
          1. '".$NOTE.",'".$id_eleve."')"
            Manque un quillemet
            '".$NOTE."','".$id_eleve."')"
            0
        2. je viens de rectifier ça mais toujours pas d'insertion .
          0
          1. en mysql c est du genre
            $lign= "INSERT INTO '".$table."' ('Album', 'Date','login') VALUES ".$value.";";
            0
          2. table et value sont des variables d une classe ...
            0
          3. $value est sous la forme ('string','date',integer)
            0
        3. vu le nombre de fois ou tu as poster ce bout de code sur CCM.
          Tu ne devrais pas chercher à comprendre (en trouvant un bon livre su PHP par exemple) plutôt que de faire développer ton script par tous les membres de ce forum ?
          0
          1. voici ma nouvelle table et ma nouvelle requête :

            participe(NOTE,id_eleve,id_evaluation) /////////// id_eleve fait reference a NUM

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

            je reçois toujours pas d'insertion de note
            0
            1. participe(NOTE

              rajoute peut etre un espace
              participe (NOTE
              0
          2. tu viens de m'achever la avec la notion de classe . je veux faire un truck sans passer par les classes
            0
            1. C'est studieux ou <<Stu dit: "Hantes">>
              0