Warning: mysql_fetch_object()

Eléphanteau du PHP | 30 Messages

14 juin 2009, 16:52

Voici l'erreur:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/site1864/web/regie/modification2.php on line 40

<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: modification2.php');
	exit();
}
?>

<?
include('haut.php')
?>
<TR> 
    <TD background="images/n16_25.png" COLSPAN=18 class="padall"><span class="h2">modification des données</span><br>
<html>
  <head>
    <title>modification des données</title>
  </head>
<body>
<a href="membre.php">Accueil Membre</a><br />
  <?php
  //connection au serveur:
  $cnx = mysql_connect( "localhost", "xxxx", "xxxxx" ) ;
  
  //sélection de la base de données:
  $db = mysql_select_db( "regie" ) ;
  
  //récupération de la variable d'URL,
  //qui va nous permettre de savoir quel enregistrement modifier
  $id  = $_GET["login"] ;
  
  //requête SQL:
  $sql = "SELECT *
            FROM membre
	    WHERE login = ".$id ;
	    
  //exécution de la requête:
  $requete = mysql_query( $sql, $cnx ) ;
  
  //affichage des données:
  if( $result = mysql_fetch_object( $requete ) )
  {
  ?>
  <form name="insertion" action="modification3.php" method="POST">
  <input type="hidden" name="id" value="<?php echo($id) ;?>">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>nom</td>
      <td><input type="text" name="nom" value="<?php echo($result->nom) ;?>"></td>
    </tr>
    <tr align="center">
      <td>prenom</td>
      <td><input type="text" name="prenom" value="<?php echo($result->prenom) ;?>"></td>
    </tr>
    <tr align="center">
      <td>adresse</td>
      <td><input type="text" name="adresse" value="<?php echo($result->adresse) ;?>"></td>
    </tr>
    <tr align="center">
      <td>code postal</td>
      <td><input type="text" name="codePostal" value="<?php echo($result->cp) ;?>"></td>
    </tr>
    <tr align="center">
      <td>numéro de téléphone</td>
      <td><input type="text" name="telephone" value="<?php echo($result->tel) ;?>"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
</form>
  <?php
  }//fin if 
  ?>
</body>
</html>
</TD>
	</TR>
	<?
	include('bas.php')
	?>
je ne comprend pas pourquoi il me met cette erreur car a mes yeux certe peu expert tout est bon

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

14 juin 2009, 18:27

Si php te dit que l'argument que tu passes à la fonction n'est pas valide, y a de grande chance que l'argument en question ne soit pas valide... Il te faut donc trouver ce qui pose problème :)

L'argument en question c'est $requete. Cette variable contient le résultat du mysql_query(). Tu peux par exemple en regardant cette variable si la requête a été exécutée avec succès ou pas. Tu peux également vérifier avec la fonction mysql_error() qui t'indiquera le cas échéant l'erreur survenue :)

Après, faut procéder par étape... est-ce que tu as réussi à te connecter à la base (identifiant et mdp corrects), est-ce que tu as bien une base de données nommée regie. Est-ce que dans cette base tu as une table membre ? Est ce que cette table contient un champ login ? Est-ce que ce champ est de type numérique ou alphanumérique ? Et s'il contient une chaine, ton $id devrait peut être entouré d'apostrophes pour que mysql le considère également comme une chaine :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

14 juin 2009, 18:41

alors login ces des lettres et ce n'est pas une chaine

j'ai suivi tes pistes: et j'ai modifier ceci:
  //qui va nous permettre de savoir quel enregistrement modifier
  $id = $_SESSION['login'];
  
  //requête SQL:
  $sql = "SELECT * FROM membre WHERE login = '$id'" ;
et maintenant sa marche

Merci