mysql_fetch_array() expects parameter 1 to be resource

Eléphanteau du PHP | 17 Messages

09 juin 2014, 12:05

Bonjour, je suis un débutant en php et j'ai un un projet.
S'il vous plait j'ai besoin de votre aide: j'ai un problème dans mon code php, code de modification on m'affiche une erreur et je ne sais ou est l'erreur, voila le code :
modifier1.php
<?php
include('connect.inc');
 $numero = $_GET["numero"] ;
 
  //requête SQL:
  $sql = "SELECT *
            FROM immobilisation
	    WHERE numero = ".$numero ;
 
  //exécution de la requête:
  $requete = mysql_query( $sql) ;
 
  //affichage des données:
  if( $row = mysql_fetch_array( $requete ) )
  {
  ?>
<form name="insertion" action="modification.php" method="POST">
  <input type="hidden" name="numero" value="<?php echo($numero) ;?>">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>Numéro locomotive</td>
      <td><input type="text" name="numeroloco" value="<?php echo($row->numeroloco) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Date de réforme</td>
      <td><input type="text" name="datedereforme" value="<?php echo($row->datedereforme) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Lieu</td>
      <td><input type="text" name="lieu" value="<?php echo($row->lieu) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Date d'entrée</td>
      <td><input type="text" name="cdatedentree" value="<?php echo($row->datedentree) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Motif</td>
      <td><input type="text" name="motif" value="<?php echo($row->motif) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Opération</td>
      <td><input type="text" name="operation" value="<?php echo($row->operation) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Situation</td>
      <td><input type="text" name="situation" value="<?php echo($row->situation) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Date prévision</td>
      <td><input type="text" name="dateprevision" value="<?php echo($row->dateprevision) ;?>"></td>
    </tr>
	<tr align="center">
      <td>Date de sortie</td>
      <td><input type="text" name="datedesortie" value="<?php echo($row->datedesortie) ;?>"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
</form>
  <?php
  }//fin if 
  ?>
modification.php
<?php
include('connect.inc');
  $numeroloco     = $_POST["numeroloco"] ;
  //prenom:
  $datedereforme = $_POST["datedereforme"] ;
  //adresse:
  $lieu = $_POST["lieu"] ;
  //code postal:
  $datedentree       = $_POST["datedentree"] ;
  //numéro de téléphone:
  $motif = $_POST["motif"] ;
  $operation = $_POST["operation"] ;
  $situation = $_POST["situation"] ;
  $dateprevision = $_POST["dateprevision"] ;
 $datedesortie = $_POST["datedesortie"] ;
  //récupération de l'identifiant de la personne:
  $numero    = $_POST["numero"] ;
 
  //création de la requête SQL:
  $sql = "UPDATE immobilisation
            SET numeroloco     = '$numeroloco', 
	          datedereforme    = '$datedereforme',
		  lieu  = '$lieu',
		  datedentree = '$datedentree',
		  motif = '$motif'
		  operation = '$operation'
		  situation = '$situation'
		  dateprevision = '$dateprevision'
		  datedesortie = '$datedesortie'
           WHERE numero = '$numero' " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql) or die( mysql_error() ) ;
 
 
  //affichage des résultats, pour savoir si la modification a marchée:
  if($requete)
  {
    echo("La modification à été correctement effectuée") ;
  }
  else
  {
    echo("La modification à échouée") ;
  }
?>
Voila l'erreur qu'on affiche :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Project\modifier1.php on line 16
Merci pour votre aide :)
Modifié en dernier par Ryle le 09 juin 2014, 19:19, modifié 1 fois.
Raison : Mise en forme php + titre explicite

Mammouth du PHP | 1339 Messages

09 juin 2014, 13:23

On va afficher la raison de l'erreur ca sera plus simple :
//requête SQL:
$sql = "SELECT * FROM immobilisation WHERE numero = '".$numero."'" ; // Je serais toi, je mettrai la variable entre ' et '

//exécution de la requête:
$requete = mysql_query($sql) or die('Erreur MySQL : '.mysql_error()); // 
On en saura plus !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 17 Messages

09 juin 2014, 13:58

Merci d'abord pour votre aide :)
J'ai exécuté la requête mais ça m'affiché une page blanche dans le navigateur, vous avez une idée pourquoi ?

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

09 juin 2014, 19:28

Le message d'erreur indique que tu passes le mauvais format de variable à la fonction mysql_fetch_array() dans ton script modifier1.php.

La fonction attends une ressource sql, alors qu'il reçoit un booléen. Cela veut dire que $requete contient un booléen au lieu du résultat de la requête. D'après la doc, cela se produit quand une erreur survient.

Tu peux afficher la requête exécutée avec un simple echo $sql; tu verras alors si elle est bien construite, tu pourras même l'exécuter dans phpMyAdmin pour voir ce qui cloche. Tu peux aussi ajouter un mysql_error() après l'exécution de la requête pour savoir ce qui ne va pas dans ta requête SQL.

Est-ce que $_GET['numero'] contient bien un nombre ? (est-ce que la variable numero est bien passée dans l'url quand tu ouvre cette page ?


@Elie : les apostrophes servent à délimiter les chaines de caractères en SQL, il ne faut pas les utiliser pour délimiter des valeur numériques (int, tinyint, float, ...). Certains SGBD tolèrent les apostrophes autour des nombres (comme MySQL), mais ce n'est pas le cas de tous. Alors autant adopter les bonnes pratiques dès le début, cela évite de passer du temps à comprendre pourquoi ça ne fonctionne plus le jour ou tu dois travailler sur un autre SGBD ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...