Page 1 sur 1

je ne comprends pas ce warning...

Posté : 25 avr. 2008, 20:05
par vivelephp
Bonjour,

je suis en train de créer une page web d'un site.

lors de l'éxecution de cette page web j'ai ce message :
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\page web\filmPolicier.php on line 42

Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\page web\filmPolicier.php on line 54


voici le code de cette page web:
http://www.web-ig.com/code/hqdayc-59


je n'arrive pas du tout (novice de service que je suis) à corriger mon erreur.En fait je ne sais même pas pourquoi j'ai une erreur..

Posté : 26 avr. 2008, 00:06
par Hywan
Hey :),

Au pif je dirais que la fonction mysqli_result retourne une ressource si elle peut exécuter le code (une requête ?) correctement, et false sinon, donc dans le cas d'une erreur.
Comme après, tu utilises le résultat de mysqli_result dans un mysqli_fetch_array puis mysqli_free_result et que ces fonctions ne prennent en paramètre qu'une ressource et qu'on donne un booléen, on a étrangement une erreur.
Il faut donc que tu gères les erreurs provenant de ta fonction mysqli_result. Une piste :
// Exemple classique.
$result = @mysqli_result( ... ) or die('Mon erreur');
while($row = mysqli_fetch_array($result))
    ...

// Exemple avec des erreurs plus propres en PHP 4.
if(false === $result = @mysqli_result( ... ))
    return trigger_error('Mon erreur', E_USER_ERROR);

while($row ...)

// Exemple avec des exceptions (solutions la plus optimale et la plus propre) en PHP 5.
if(false === $result = @mysqli_result( ... ))
    throw new Exception('Mon erreur.');

while($row ...)
Est-ce que tout ceci est du chinois ou est-ce que ça te parle ?

Tu noteras que je n'ai fais que traduire l'erreur que tu as. La fonction mysqli_fetch_array attend un paramètre qui doit être mysqli_result, et que tu as donné un booléen. Mais dans quel cas a-t-on un booléen ? Hmm, peut-être qu'un tour dans le manuel saura nous éclaircir non ? Et paf :
Valeurs de retour

Le contenu d'un champ depuis un jeu de résultats MySQL en cas de succès, ou FALSE si une erreur survient.

Posté : 26 avr. 2008, 16:22
par vivelephp
merci beaucoup pour cette précieuse pise , j'ai pu trouver solution à ce problème!!
C'est parfait!! voici donc le "code final" de cette page web:

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <link title="test" type="text/css" rel="stylesheet" href="mafeuille.css"/> <title>Musique,Lecture,Film et Jeux</title> </head> <body > <div id="conteneur"> <!-- le conteneur entoure tout le contenu de la page --> <div id="entete"> <!-- bandeau en haut de la page -->
<?php
		$jour=date("d");
		$nomjour=date("l");
		$mois=date("m");
		$nommois=date("M");
		$an=date("Y");
		$heure = date("H:i");
		?>
      <?php echo $nomjour.'-'.$jour.'-'.$nommois.'-'.$an.'-'.$heure ;?> 
		
		</div>  <!-- fin du div entete -->  
		<!-- menu apparaîssant à gauche de la page -->
		<div id="conteneurmenu"> 
			<a href='Bienvenue.php'>Retour à la page d'accueil</a><br/><br/>		
			<a href='Films.php'><b>Films</b></a><br />
			<a href='Livres.php'><b>Livres</b></a><br />
			<a href='Musiques.php'><b>Musiques</b></a><br />
			<a href='Sudoku.php'><b>Sudoku</b></a><br />
		</div> 
		<div id="contenu">  <!-- contenu de la page -->
			<div id="texte">
				<?php
				include ('connexion.php');
				$id_connexion= connexion_bd();
				if ($id_connexion) {
					?>
					<?php
					$requete = 'select titrefilm, realisateur, datesortiefilm, resumefilm, txtcritiquefilm, libgenre from films';
					$requete=$requete.' Inner join genre on films.idgenre=genre.idgenre';
					$requete=$requete.' Where films.idgenre=1;';
					//echo 'requete = '.$requete;
					$result=mysqli_query($id_connexion, $requete);
					if(false === $result = @mysqli_query($id_connexion, $requete))
					{ 
					//throw new Exception('aucun livre trouvé : ' . mysql_error()); 
					echo 'erreur';
					}
					else {
						if (mysqli_num_rows($result)>0) {
							while ($ligne=mysqli_fetch_array($result)) {
								echo '<br /><h2 class="titre">Détails du film policier : </h2><br />';
								echo '<table border=\'0\'>';
								echo '<td><tr><b>Titre du film:</b> '.$ligne['titrefilm'].'</tr><br />';
								echo '<tr><b>Réalisateur:</b> '.$ligne['realisateur'].'</tr><br />';
								echo '<tr><b>Date de sortie du film:</b> '.$ligne['datesortiefilm'].'</tr><br />';
								echo '<tr><b>Résumé:</b> '.$ligne['resumefilm'].'</tr><br />';	
								echo '<tr><b>Critique personnelle à propos du film:</b> '.$ligne['txtcritiquefilm'].'</tr><br /></td>';			
								echo '</table>';
							}
						}
						else {
							echo "Aucun film policier";
						}
					mysqli_free_result($result);
					}				
					?>
					<?php
				mysqli_close($id_connexion);
				}
				?>
</div>
</div> <!-- fin du div contenu -->
<p id='pied'></p>