erreur dans mon code php

Eléphant du PHP | 162 Messages

08 août 2011, 15:22

pour la ligne 4 quand je met

//$_POST["NOM"]=""; $_POST["PRENOM"]=""; $_POST["CLASSE"]=''; $_POST["NOTE"]='';
je reçcois

------------------------------------------------------------------------------------------------------------------------------
Notice: Undefined index: NOM in C:\wamp\www\Monsite\liste_4eme53.php on line 5

Notice: Undefined index: PRENOM in C:\wamp\www\Monsite\liste_4eme53.php on line 6

Notice: Undefined index: CLASSE in C:\wamp\www\Monsite\liste_4eme53.php on line 7

Warning: trim() expects parameter 1 to be string, array given in C:\wamp\www\Monsite\liste_4eme53.php on line 8
ce élève n'est pas de cette classe !!!!!------------------------Insersion OK !!!!!!!!!

------------------------------------------------------------------------------------------------------------------------------
quand j'enlève c'est propre !!!!

Eléphant du PHP | 162 Messages

08 août 2011, 15:31

je veux 't'envoyer capture d’écran mais je sais pas comment insérrer une image ici.

si tu ve bien donne moi ton yahoo et je t'envoi pour ke tu voi

Eléphant du PHP | 162 Messages

08 août 2011, 15:36

Image

Eléphant du PHP | 162 Messages

08 août 2011, 15:44

j'ai plus d'erreur mais je suis loin d’éteindre mon objectif .
voici ce que je veux .
a chaque fois qu'un élève existe je saisie sa note dans le champ NOTE .cette note sera inscrit dans ma base de donnée .et en même temps sera affiché dans MaNote.

mais malheureusement quand je saisie une note çà s’insère pas dans ma base de donné et ne s'affiche pas

Eléphant du PHP | 162 Messages

08 août 2011, 15:49

mon crane me fait mal j'ai encore l'erreur :

Notice: Undefined variable: res in C:\wamp\www\Monsite\liste_4eme5.php on line 88

Warning: oci_fetch_assoc() expects parameter 1 to be resource, null given in C:\wamp\www\Monsite\liste_4eme5.php on line 88

Eléphant du PHP | 162 Messages

08 août 2011, 15:56

s'il te plait aide moi pour en finir avec cette erreur

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 août 2011, 00:33

Va falloir apprendre a debuger var_dump et print_r

Après faut aussi savoir ce qui ce passe dans ton script. Pourquoi quoi oci_fetch_assoc() rale ? parce que $req n'est pas une ressource correct.

il te faut vérifier ton script pour qu'il soit cohérent et "similaire" à la doc (lien déjà donné avant).

si tu continu a poster comme ça et a pleurer personne ne t'aidera.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 162 Messages

09 août 2011, 20:57

j'ai enleve $req met j'ai toujours l'erreur
.ensuite exlique moi bien tu parle de bug je comprend pas.

et je dois utiliser var_drump et print_r

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 août 2011, 15:08

reprenons ton code depuis le début :
<?php
if (isset($_POST["Enregistrer"])) {
$_POST["NOM"]="";   $_POST["PRENOM"]="";       $_POST["CLASSE"]='';        $_POST["NOTE"]='';
$NOM=trim($_POST["NOM"]);
$PRENOM=trim($_POST["PRENOM"]);
$CLASSE=trim($_POST["CLASSE"]);
$NOTE=trim($_POST["NOTE"]);
?>
Donc la si $_POST['enregistrer'] existe on efface les champs nom, prenom, classe et note du tableau $_POST
ensuite tu enlève les espaces en trop mais ben peu pas y en avoir !

ensuite connexion au sgbd + select des infos de la base ça a l'air bon (ceci dit je sais pas trop s'il n'y a pas de mélange quand ut fait une autre requête après ! (pas testé).
<?php
if (!empty($NOM)) { $sql=oci_parse($conn,"INSERT INTO participe(NOTE) values('".$NOTE."')");
        $result = oci_execute($sql);

   }
?>
donc la c'est clair $NOM sera toujours vide (voir remarque au dessus). (d'ailleurs $NOTE aussi)
quand a la requête insert je ne vois pas comment tu peux associer une note a un élève avec ça ! (manque au moins une valeur pour moi).

donc globalement tu aura un message d'erreur si la page s'affiche alors que le formulaire n'a pas été posté (cas du première affichage) => $res n'existe pas !

ce requête devrait être faite juste avant le while !
j'ai corrigé ton code rapidement, bien entendu pas testé, parce que j'ai pas tes table et heu, je crois que j'ai désinstallé mon serveur oracle :mrgreen:
<?php
// connexion au sgbd de toute façon c'est utilisé par tout dans la page 
$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)
))');

if (isset($_POST["Enregistrer"])) {
// la suite est discutable un array_walk (par exemple) opurr être plus intérréssant ;)
$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 '------------------------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&egrave;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 ;)
        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 $liste_etu['NOTE'] ?></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>
@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 162 Messages

10 août 2011, 15:33

merci de bien vouloir m'aider ..
dans le champ MaNote voici ce qui s'affiche comme erreur:

Notice: Undefined index: NOTE in C:\wamp\www\Monsite\liste_4eme5.php on line 109


mais la requète select marche puisque ca me donne la liste des eleve de la 4eme5

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 août 2011, 15:37

normal pas sélectionné dans la requête SQL ligne 88.

franchement est ce que tu comprend ton code (même modifié) ?

si ce n'est pas le cas dit nous ce que tu comprend pas, parce que la c'est la base, savoir que dans le tableaux $liste_etu tu aura les champs sélectionné dans la requête SQL !

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 162 Messages

10 août 2011, 15:44

oui vraiment j'ai besoin d'explication ..
dit moi pourqoi le requeète SELECT c'est retrouvé au milieu du code html . au pourqoi tu as deplacé la bas . et l'explication que tu m'a donné sur l'erreur j'ai pas compri

Eléphant du PHP | 162 Messages

10 août 2011, 15:54

ok j'ai compris pour la variable NOTE . elle ne fait pas parti de SELECT c pourquoi 3. merci.
mais explique moi pourquoi le SELECT c'est retouvé en bas .

Eléphant du PHP | 162 Messages

10 août 2011, 16:13

j'ai executer le code en rectifiant l'erreur qur tu m'a indiquée . mais je reçois ca comme erreur :

---------------------------------------------------------------------------------------------------------------------------------------------------------
Notice: Undefined index: NOM in C:\wamp\www\Monsite\liste_4eme5.php on line 17

Notice: Undefined index: PRENOM in C:\wamp\www\Monsite\liste_4eme5.php on line 18

Notice: Undefined index: CLASSE in C:\wamp\www\Monsite\liste_4eme5.php on line 19

Warning: trim() expects parameter 1 to be string, array given in C:\wamp\www\Monsite\liste_4eme5.php on line 20

--------------------------------------------------------------------------------------------------------------------------------------------------------

alors j'ai mi en commentaire :

//$NOM=trim($_POST["NOM"]);
//$PRENOM=trim($_POST["PRENOM"]);
//$CLASSE=trim($_POST["CLASSE"]);
//$NOTE=trim($_POST["NOTE"]);
----------------------------------------------------------------------------------------------------------------------------------------------------------------

je reçoi plus d'erreur mais mon INSERT passe pas .

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 août 2011, 17:15

la requête je l'ai déplacé pour qu'elle soit en dehors du if de traitement du formulaire. Car si tu ne valide pas le formulaire (donc au premier affichage de la page) la connexion au serveur + la requête ne sont pas exécutée (car l'on entre pas dans le if. Donc quand tu essai d'afficher la requête dans le tableau il y a une erreur car la variable n'existe pas (normal le if n'est pas traité donc la variable, n'existe pas ;) ).
je sais pas trop si je suis assez clair ?

pour nom, prénom et classe c'est normal car tu n'a pas de champ qui se nomment nom, prénom ou classe dans le formulaire.
en fait dans le formulaire tu n'a que note et num (+ les deux submit, d'ailleurs annulé ne devrais pas être un submit mais reset ;) )

donc le traitement doit se faire avec $_POST['NOTE'] et $_POST['NUM'] sachant qu'il faut faire un UPDATE (insert ?) pour chaque "NUM".

la requête insert : insert insert participe(note,num) values (lanote,lenumerodeleleve);
ceci en supposant que tu ai le numéro de l’élevé dans la table participe (car il faut bien pouvoir associer la note à un élevé !
Est ce que tu suis le raisonnement ?

le num c'est "l’identifiant" de l'élève, un numéro unique permettant de faire facilement la différence entre les élèves (sinon c'est le bordel ducobu récupère le 20 de léonie :) )

pour ce qui est des variables commenté, tu vois bien que si tu les met en commentaires, $NOTE ne sera plus affectée (et déclarée) donc au niveau de la requte SQL il va y avoir une erreur
Notice: Undefined variable: NOTE in C:\wamp\www\Monsite\liste_4eme5.php on line 29
on va y aller par petit bout.
- est ce que la liste et le formulaire s'affiche comme tu le souhaite ?
- peut tu expliquer exactement ce que tu veux faire avec ce formulaire ?

Avec ça tu va concevoir pas à pas le formulaire et sa validation. Je veux bien t'y aider faudra juste que le fasse toi même et que je t'explique si tu bloque sur quelque chose :)

peux tu aussi me fournir les structures des deux tables que je comprenne la logique et que je test chez moi ? (je vais voir pour installer un serveur de test oracle sur un vm ^^)

@+
Il en faut peu pour être heureux ......