erreur dans mon code php

Eléphant du PHP | 162 Messages

07 août 2011, 21:26

salut a vous j'ai crée une table a partir de laquelle je veux faire un SELECT mais je reçois l'erreur :
-----------------------------------------------------------------------------------------
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\Monsite\liste_4eme5.php on line 78
------------------------------------------------------------------------------------------------
voici mon code php :

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


<?php


    $_POST["NOM"]="";     $_POST["PRENOM"]="";   $_POST["CLASSE"]='';    
    $NOM=trim($_POST["NOM"]);
	$PRENOM=trim($_POST["PRENOM"]);
	$CLASSE=trim($_POST["CLASSE"]);
	
	
	
	$color=array('#333333','#999999');
		$i=0;

// on se connecte à ORACLE situé sur redhat 5
      $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)
    ))');
    	


// on crée la requête SQL
 
$result = oci_parse($conn,"SELECT NOM,PRENOM,CLASSE FROM eleve WHERE CLASSE='4eme5' ORDER BY NOM ASC");
$req = oci_execute($result);


?>



<!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="click pour voir votre Note  !!!!" class="Style5">
    <input type="image" name="imageField" src="btmylod_1.png" />
    </a><em>>>> LISTE DES ELEVES DE 4&egrave;me 5 </em> <<<
  </h1>
</div>
<p>&nbsp;</p>
<table width="729" 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>
    
  </tr>
  
  
   <?php
  		while ($liste_etu=mysql_fetch_assoc($req)) {
			$j=$i%2;
		
  ?>
  
  
  <tr bgcolor=#33FFFF>
    
	
    <td><?php echo "{$row['NOM']}" ?></td>
    <td><?php echo $liste_etu['PRENOM'] ?></td>
    <td><?php echo $liste_etu['CLASSE'] ?></td>
    <td><?php echo $liste_etu['CEL'] ?></td>
  </tr>
  <?php
  }
  ?>

 
</table>
</body>
</html>

Mammouth du PHP | 19672 Messages

07 août 2011, 22:48

Ta base, c'est du Oracle ou du MySQL ? Parce qu'on ne peut pas mélanger les fonctions comme tu le fais.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 162 Messages

07 août 2011, 22:50

oui merci j'ai corrigé ca passe .
ma base c'est oracle

Mammouth du PHP | 19672 Messages

07 août 2011, 22:51

Résolu alors ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 162 Messages

07 août 2011, 22:59

oui merci

Eléphant du PHP | 162 Messages

08 août 2011, 00:18

je suis encore la .
j'ai essayé d’améliorer mon code mais je reçois une erreur .
svp aider moi :
je recçio l'ereur :
*****************************************************************************************************************
Notice: Undefined variable: result1 in C:\wamp\www\Monsite\liste_4eme5.php on line 98

Notice: Undefined variable: sql in C:\wamp\www\Monsite\liste_4eme5.php on line 98

Warning: oci_fetch_assoc() expects exactly 1 parameter, 2 given in C:\wamp\www\Monsite\liste_4eme5.php on line 98

------------------------------------------------------------------------------------------------------------
le code
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



<?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"]);
	
	
	
	$color=array('#333333','#999999');
		$i=0;

// on se connecte à ORACLE situé sur redhat 5
      $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)
    ))');
    	


// on crée la requête SQL
 
$result1 = oci_parse($conn,"SELECT NOM,PRENOM,CLASSE FROM eleve WHERE CLASSE='4eme5' ORDER BY NOM ASC");
$req = oci_execute($result1);

	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);

    // 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>
<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
	         while($liste_etu=oci_fetch_assoc(($result1),($sql))) {			
			 $j=$i%2;
		
  ?>
    <tr bgcolor="#33FFFF">
      <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=" 000000,0000"/></td>
      <td><?php echo $liste_etu['NOTE'] ?></td>
    </tr>
    <tr bgcolor="#33FFFF">
      <td><input type="submit" name="Enregistrer" value="Enregistrer" /></td>
      <td><input type="submit" name="annule" value="Annuler" /></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    
    <?php
  }
?>
  </table>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</form>
<p>&nbsp;</p>
</body>
</html>

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

08 août 2011, 00:56

salut,

les messages sont relativement clair :

Notice: Undefined variable: result1 in C:\wamp\www\Monsite\liste_4eme5.php on line 98
=>ligne 98 tu utilise la variable $result1 mais celle ci n'existe pas !

Notice: Undefined variable: sql in C:\wamp\www\Monsite\liste_4eme5.php on line 98
=>ligne 98 tu utilise la variable $sql mais celle ci n'existe pas !(pourquoi essayer de passer le retour d'une insertion à une oci_fetch_assoc ????

Warning: oci_fetch_assoc() expects exactly 1 parameter, 2 given in C:\wamp\www\Monsite\liste_4eme5.php on line 98
=> la aussi c'est clair tu passe deux paramètres à la fonction oci_fetch_assoc alors qu'elle n'en prend qu'un en paramètre ! doc de la fonction oci_fetch_assoc

le submit devrait être en dehors de la boucle, parce que lava y avoir autant de bouton submit / annulé que de tuple.

la colonne classe est facultative car elle est déja indiqué (4ème5) ;)

pour le fonctionnement du formulaire, si tu souhaite pouvoir exploiter les infos rentré dans le champ il va falloir faire autrement (parce que l'a t'a qu'un champs). Pour être exploitable il faut utiliser la notation tableau pour le nommage du champs (note devient : note[]) chaque nouvel élève ajoutera une ligne de tableau.
maintenant il faut pouvoir reconnaître chaque ligne afin de mettre la bonne note au bon élève lors de la modification de la base.

Pour cela le mieux c'est un champ input de type hidden avec la clef primaire en valeur (exemple la clefprimaire se nomme id => <input type="hidden" name="id[]" value"valeur issue de la db" />) ceci avec la note tu aura deux tableaux dans $_POST avec les même indice qu'il te suffira de parcourir avec foreach.

exemple de code modifé (toujours en supposant que la clef primaire est id).
<?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"]);



$color=array('#333333','#999999');
$i=0;

// on se connecte à ORACLE situé sur redhat 5
$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)
))');



// on crée la requête SQL

$result1 = oci_parse($conn,"SELECT id, NOM,PRENOM,CLASSE FROM eleve WHERE CLASSE='4eme5' ORDER BY NOM ASC");

$req = oci_execute($result1);

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);

// 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>
<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';
while($liste_etu = oci_fetch_assoc($result1)) {	
//$j=$i%2;// ça sert pas ça ? c'est pour un changement de bgcolor une ligne sur deux ? d'ailleurs $i n'est pas déclarée ?

?>
<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=" 000000,0000"/><input type="hidden" name="id[]" value="<?php echo $list_etu['id']?></td>
<td><?php echo $liste_etu['NOTE'] ?></td>
</tr>

<?php
$i++;
}
<tr bgcolor="#33FFFF">
<td><input type="submit" name="Enregistrer" value="Enregistrer" /></td>
<td><input type="submit" name="annule" value="Annuler" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

?>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</form>
<p>&nbsp;</p>
</body>
</html>
pour $result1 utilise var_dump pour voir ce qui se passe :)

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

Eléphant du PHP | 162 Messages

08 août 2011, 01:06

voici ce que je reçois comme erreur :

***************************************************************************************************
Parse error: parse error in C:\wamp\www\Monsite\liste_4eme5.php on line 114
************************************************************************************************

à la ligne 114 jai ca ::<tr bgcolor="#33FFFF">

Mammouth du PHP | 19672 Messages

08 août 2011, 01:10

Logique, observe attentivement et demande toi s'il ne manque rien entre la ligne 113 et la ligne 114, ça devrait te sauter aux yeux, même la coloration syntaxique te donne des indices.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 162 Messages

08 août 2011, 01:23

je suis vraiment debutant . je vois pas s'il te plai aide moi

Mammouth du PHP | 19672 Messages

08 août 2011, 01:35

Tu mélanges du PHP et du HTML, mais pour ce faire, tu dois donc selon l'endroit ouvrir une balise PHP (<?php) et plus loin la refermer ( ?> ) Ce qui se trouve entre une fermeture et une ouverture (et pas dans l'autre sens, c'est important) sera envoyé tel-quel au navigateur. Ce qui se trouve entre l'ouverture et la fermeture sera exécuté du coté du serveur. Si tu mets du code qui n'est pas du PHP entre une ouverture et une fermeture, tu as ce type de message d'erreur.

En d'autres termes, tu as bien mis toutes les ouvertures et toutes les fermetures, mais une des fermeture n'est pas à sa place, elle est trop loin et du coup l'interpréteur PHP doit batailler avec du HTML au lieu de PHP : regarde encore, tu vas trouver.

Note : je ne te donne pas la réponse toute faite, c'est le type même d'erreur d'inattention que tu ne dois plus faire, en devant t'arracher quelque cheveux à trouver, tu vas le retenir d'autant plus et tu ne feras sûrement plus ce type de boulette ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 343 Messages

08 août 2011, 01:47

En gros, tu as ouvert une balise php, mis du php puis du html et tu as refermé ta balise php.
Tu dois donc déplacer ta balise de fermeture avant le html.

Là je ne peux pas être plus précis :lol:
Développeur web

Eléphant du PHP | 162 Messages

08 août 2011, 12:10

salut merci pour votre aide . hier j'avais mal au crane . je suis allé dormir .
j'ai déplace la balise php pour la mettre juste après la parenthèse .
l'autre erreur n’apparaît plus mais je reçois une autre erreur :

***************************************************************************************************************


Notice: Undefined variable: result1 in C:\wamp\www\Monsite\liste_4eme53.php on line 97

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

Mammouth du PHP | 19672 Messages

08 août 2011, 12:23

Logique, mais ça doit se produire uniquement au premier chargement avant de soumettre le formulaire.

Pose-toi la question suivante : quand est créée cette variable $result1 ? Là, tu as une erreur de logique et de la manière dont tu as organisé ton code, lors du chargement de la page, $result1 n'est pas définie du tout.

Et dis-toi que ce n'est pas la seule erreur qu'il reste dans ton code. Tu en as une autre ligne 4 et une autre encore ligne 107. La première est une erreur de logique, la seconde une faute d'inattention.

Pour avancer, essaye de décrire dans tes propres mots le déroulement de ton code : il se passe quoi à quel moment et pour quelle raison. C'est de l'algorithme et de la logique élémentaire. Si tu veux progresser, il va falloir être attentif et cohérent.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 162 Messages

08 août 2011, 12:27

ok merci plus d'erreur mais je comprend pas pourqoi mes resultat ( de la requète ) ne viennent l'un en bas de l'aute . ca me donne les resultat sur un meme ligne