Auteur Sujet: Erreur Php/mysql  (Lu 958 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne sayoc

  • Débutant
  • *
  • Messages: 40
Erreur Php/mysql
« le: 30 juillet 2004 à 17:41:00 »
Bonjour à tous,

Je bosse actuellement sur un script d'inscription/login qui se compose d'un fichier inscription.php, login.php, confirmation.php, modification.php (qui permet au client de modisfier les données de son compte).

Mon problème se situe au au niveau de la modification.

J'utilise un tableau de session pour mes variables de login que je récupère pour la modification, avec un premier fichier qui récapitule dans un tableau les informations du client avec un lien "modifier" devant chaque ligne qui bascule sur nue page dédié à une information unique comme par exemple le nom, pour cette fois modifier dans notre exemple le nom du client... sur cette page s'affiche un petit formulaire avec un champ texte pour saisir le nouveau nom, puis valider afin d'executer la requete d'update.

En fait tout va très bien, sauf que j'ai une erreur de ce type : "mysql_fetch_row(): supplied argument is not a valid MySQL result resource in..."
J'ai pourtant l'habitude(mais certainement pas assez ^^) d'utiliser ce type de fonction, mais là je ne vouis vraiment pas à quoi est dû le problème... peu être de mes variables de session ?

Je voudrai en faite savoir d'une manière purement théorique dans un premier temps dans quel cas ce genre d'erreurs apparaissent, ce qui m'aiderai je pense à résoudre mon problème.

Citer
Code de la page d'update

<?php

if($PHPSESSID){
   session_start($PHPSESSID);
   require_once("connection_client.php");
   //require("logvalider9.php");
   echo "session " . session_id() . " <br>";
}else{
   echo "session expirée ou invalide <br>";
   echo "<a href='logvalider9.php'>reconnexion</a><br>";
   exit();
}
$nom = $_POST['nom'];
$newnom = $_POST['newnom'];

$nom=$_SESSION['client']['nom'];
$email=$_SESSION['client']['email'];

$update = "UPDATE client SET NOM='$newnom' WHERE EMAIL='$email'";

$query = mysql_query($update) or die("erreur de requete de modification :" . mysql_error());

echo $update . "<br>";
echo $nom . "<br>";
echo $email . "<br>";


  if($i = $_SESSION['client'] && $result[$i] = $nom) {

     if(isset($_POST['VALIDER'])) {

    while($row=mysql_fetch_row($query)) {
       for($i=0;$i<count($row);$i++) {

       $_SESSION['client']['nom']=$row[$i];
       $nom == $newnom;

       echo $row[$i];
       echo $nom;
       echo $newnom;

       }
    }

     }


     echo "<table border='2'>";
     echo "<form action='modif_nom.php' method='POST'>";

    echo "<tr border='0'>";
      echo "<th border='1' width='90' align='center'>
         Nom actuel</th>";
      echo "<th border='1' width='90' align='center'>Nouveau nom</th>";
    echo "</tr>";

    echo "<tr border='0'>";
      echo "<td border='1' width='90' align='center'>$nom</td>";
      echo "<td border='1' width='90' align='right'><input type='text'
           name='NEWNOM' value='$newnom' size='30'></td>";
    echo "</tr>";

    echo "<tr border='0'>";
       echo "<td colspan='2' border='1' width='90' align='center'>
      <input type='submit' name='VALIDER' value='modifier' size='30'></td>";
    echo "</tr>";

     echo "</form>";
     echo "</table>";
  }



?>

Ps: J'utilise également des mysql_fetch_row dans le fichier modifier.php sans aucun problème... y aurait t'-il un conflit de variables de session avec la requete d'update ?

Merci beaucoup d'avance pour votre aide

Ps2: Si je met le if(isset($_POST['VALIDER'])) { avant le if($i = $_SESSION['client'] && $result[$i] = $nom) { ca ne change rien...

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Erreur Php/mysql
« Réponse #1 le: 30 juillet 2004 à 17:57:46 »
Euh , à mon avis, tu ne peux pas utiliser mysql_fetch_row pour une requete sql de type UPDATE ... SET , mais juste du type SELECT ... FROM ...

:D

Hors ligne sayoc

  • Débutant
  • *
  • Messages: 40
Erreur Php/mysql
« Réponse #2 le: 30 juillet 2004 à 18:04:46 »
Vi je viens de capter ca :),
mais du coup je voit pas comment faire pour que l'update se fasse quand le client valide le formulaire où il a saisit son nouveau nom...?

Hors ligne sayoc

  • Débutant
  • *
  • Messages: 40
Erreur Php/mysql
« Réponse #3 le: 30 juillet 2004 à 18:10:12 »
J'ai une 'tite idée...
Je fais un select à la place de l'update sur cette page de la vriable "$newnom" que je renvois sur une autre page où je fais un update auto de $newnom, avec message de confirmation disant que les changement ont bien été effectué...

Ca serait bon ca ?

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Erreur Php/mysql
« Réponse #4 le: 30 juillet 2004 à 18:13:37 »
if ($VALIDER) { $query = mysql_query($update) or die("erreur de requete de modification :" . mysql_error()); }

?

Hors ligne sayoc

  • Débutant
  • *
  • Messages: 40
Erreur Php/mysql
« Réponse #5 le: 30 juillet 2004 à 18:16:07 »
yes , j'essai ca.. merci ;)

Hors ligne sayoc

  • Débutant
  • *
  • Messages: 40
Erreur Php/mysql
« Réponse #6 le: 30 juillet 2004 à 18:49:01 »
donc...

J'ai fais comme ceci :
Citer
$nom = $_POST['nom'];
$newnom = $_POST['newnom'];

$nom=$_SESSION['client']['nom'];
$email=$_SESSION['client']['email'];

$update = "UPDATE client SET NOM='$newnom' WHERE EMAIL='$email'";


echo $update . "<br>";
echo $nom . "<br>";
echo $email . "<br>";


  if($i = $_SESSION['client'] && $result[$i] = $nom) {

  if(isset($_POST['VALIDER'])) {

    $query = mysql_query($update)
     or die("erreur de requete de modification :" . mysql_error());

      //$newnom=$_SESSION['client']['newnom'];

       $nom == $newnom;

       //echo $row[$i];
       echo $nom . "<br>";
       echo $newnom . "<br>";
       echo $update . "<br>";
     }


     echo "<table border='2'>";
     echo "<form action='modif_nom.php' method='POST'>";

    echo "<tr border='0'>";
      echo "<th border='1' width='90' align='center'>
         Nom actuel</th>";
      echo "<th border='1' width='90' align='center'>Nouveau nom</th>";
    echo "</tr>";

    echo "<tr border='0'>";
      echo "<td border='1' width='90' align='center'>$nom</td>";
      echo "<td border='1' width='90' align='right'><input type='text'
           name='NEWNOM' value='$newnom' size='30'></td>";
    echo "</tr>";

    echo "<tr border='0'>";
       echo "<td colspan='2' border='1' width='90' align='center'>
      <input type='submit' name='VALIDER' value='modifier' size='30'></td>";
    echo "</tr>";

     echo "</form>";
     echo "</table>";
  }

Mais ma variable "$newnom" n'est apparemment pas récupérée, et ne passe pas dans la requête, car rien ne change dans la table client, et le "echo $newnom;" n'affiche rien...  :huh:
« Modifié: 30 juillet 2004 à 18:54:49 par sayoc »

Hors ligne sayoc

  • Débutant
  • *
  • Messages: 40
Erreur Php/mysql
« Réponse #7 le: 30 juillet 2004 à 19:07:04 »
...et si je tape ma requête dans phpmyadmin sans les variable (forcément ^^), j'ai cette erreur qui s'affiche :
Erreur

requête SQL :

UPDATE CLIENT SET NOM = 'superman' WHERE EMAIL = 'toto@yahoo.fr'

MySQL a répondu:
#1146 - Table 'chapeaublanc.CLIENT' doesn't exist

Alors que ma table existe pourtant bien...

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Erreur Php/mysql
« Réponse #8 le: 30 juillet 2004 à 20:11:35 »
Citer
Mais ma variable "$newnom" n'est apparemment pas récupérée, et ne passe pas dans la requête, car rien ne change dans la table client, et le "echo $newnom;" n'affiche rien...  :huh:
Normal ... attention aux majuscules / minuscules
<input ... name="NEWNON"....>
et $newnom = $_POST['newnom'];

Peut etre le meme pb pour ta requete.
« Modifié: 30 juillet 2004 à 20:12:37 par Ice »