Page 1 sur 1

problème de modification sur base mysql

Posté : 22 juil. 2008, 15:51
par donhatem
bonjour,
j'ai un petit problème dans un fichier php qui m'aide à modifier des informations sur une table 'phone'
pour résumer : j'ai 3 fichiers modification1.php, modification2.php et modification3.php
le 1er fichier c'est pour lister les données de la table 'phone' en ajoutant un lien 'modifier' devant chaque element de cette table : voilà sont code :
<html>
  <head>
    <title>modification de donnees </title>
  </head>
<body>
  <?php
    //connection au serveur:
    $cnx = mysql_connect( "localhost" ) ;
    //sélection de la base de données:
    $db = mysql_select_db( "mysql" ) ;

    //requete SQL:
    $sql = "SELECT *
              FROM phone
              ORDER BY nom" ;

    //execution de la requete:
    $requete = mysql_query( $sql, $cnx ) ;

    //affichage des donnees:
  while ( $result = mysql_fetch_object( $requete ) )
    {
           echo("<div align=\"center\">".$result->nom." ".$result->prenom." <a href=\"modification2.php?idPersonne=".$result->id_personne."\">modifier</a><br>\n") ;
    }
  ?>
</body>
</html>

comme ça montre le code, ça me redirige vers le fichier modification2.php, voilà son code :

<html>
  <head>
    <title>modification de données en PHP :: partie2</title>
  </head>
<body>
  <?php
  //connection au serveur:
  $cnx = mysql_connect( "localhost") ;
  
  //sélection de la base de données:
  $db = mysql_select_db( "mysql" ) ;
  
  //récupération de la variable d'URL,
  //qui va nous permettre de savoir quel enregistrement modifier
  $id  = $_GET["idPersonne"] ;
  
  //requête SQL:
  $sql = "SELECT *
            FROM phone
	    WHERE id_personne = ".$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>tel</td>
      <td><input type="text" name="tel" value="<?php echo($result->tel) ;?>"></td>
    </tr>
    <tr align="center">
      <td>portable</td>
      <td><input type="text" name="portable" value="<?php echo($result->portable) ;?>"></td>
    </tr>
    <tr align="center">
      <td>mail</td>
      <td><input type="text" name="mail" value="<?php echo($result->mail) ;?>"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
</form>
  <?php
  }//fin if 
  ?>
</body>
</html>
je reçois une erreur :

Code : Tout sélectionner

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/phone/modification2.php on line 26
je ne vois aucune erreur dans la ligne 26 !!!
vous pouvez m'aider svp. Merci

Posté : 22 juil. 2008, 18:06
par Patriboom
Plutôt que de déboguer ton code, je te propose d'apprendre à le réviser.

Avant chaque mysql_query(), tu peux ajouter une ligne qui t'affichera la commande à faire traiter:
echo "Voici la commande 1: ".$requete."<br>";
Tu prends ce qui est affiché là ( séletionner + Ctlr-C (copier)) et tu le colles dans ton PhpMyAdmin, taquet SQL

Lis bien les instructions. En commençant par la première commande, tu débogues ainsi jusqu'à ce que toutes tes commandes soient bien acceptées par PhpMyAdmin.

Évidemment, tu rapportes les modif dans ton code, sans quoi l'exercice est inutile.


Petite remarque: les cases PHP et Code, sont là pour la clarté des messages, utilise-les, elles sont là pour toi aussi.

Posté : 22 juil. 2008, 18:06
par Patriboom
Plutôt que de déboguer ton code, je te propose d'apprendre à le réviser.

Avant chaque mysql_query(), tu peux ajouter une ligne qui t'affichera la commande à faire traiter:
echo "Voici la commande 1: ".$requete."<br>";
Tu prends ce qui est affiché là ( séletionner + Ctlr-C (copier)) et tu le colles dans ton PhpMyAdmin, taquet SQL

Lis bien les instructions. En commençant par la première commande, tu débogues ainsi jusqu'à ce que toutes tes commandes soient bien acceptées par PhpMyAdmin.

Évidemment, tu rapportes les modif dans ton code, sans quoi l'exercice est inutile.


Petite remarque pour tes messages sur le présent forum: les cases PHP et Code, sont là pour la clarté des messages, utilise-les, elles sont là pour toi aussi.

Posté : 22 juil. 2008, 18:43
par zeus
Modération :
donhatem, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 22 juil. 2008, 19:12
par sadeq
Ajoute un capteur d'erreur après les fonctions mysql pour savoir ce qui se passe côté Mysql.

Exemple :
$requete = mysql_query( $sql, $cnx ) or die (mysql_error());