MAJ base de donnée

Eléphant du PHP | 86 Messages

20 nov. 2005, 14:00

Bonjour,
Je souhaiterais que mes membres mettent à jour leurs données.

Voici le code de la page qui modifie les données (celle qui plante) :
<?
require ('config.php');


//requête
$sql = "UPDATE 'lao_membre' SET pseudo='$pseudo', pass='$pass', email='$email', jour='$jour', mois='$mois', annee='$annee', prenom='$prenom', nom='$nom', rue='$rue', num='$num', ville='$ville', code='$code', pays='$pays' WHERE id=$_SESSION['id']"

//Effectuer la requête
$res = mysql_query($sql) or die (mysql_error()); 

//on ferme la connexion
mysql_close();

//on redirige le visiteur sur la page d'accueil, là ou s'afficheront les messages
header('location: ../../index.php');
?>
Voici l'erreur :
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home.2/ngame/www/_files/_db/modifier.php on line 6
Si quelqu'un peut m'aider, d'avance merci

Mammouth du PHP | 768 Messages

20 nov. 2005, 14:11

//requête
$sql = "UPDATE 'lao_membre' SET pseudo='$pseudo', pass='$pass', email='$email', jour='$jour', mois='$mois', annee='$annee', prenom='$prenom', nom='$nom', rue='$rue', num='$num', ville='$ville', code='$code', pays='$pays' WHERE id=$_SESSION['id']"
$sql = "UPDATE lao_membre SET pseudo = '".$pseudo."', pass='".$pass."', email='".$email."', jour='".$jour."', mois='".$mois."',
annee='".$annee."', prenom='".$prenom."', nom='".$nom."', rue='".$rue."',
num='".$num."', ville='".$ville."', code='".$code."', pays='".$pays."'
WHERE id = '".$_SESSION['id']."'"; // n'oublie pas le ; !!!!
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 86 Messages

23 nov. 2005, 22:22

je t'accorde que le code fonctionne parfaitement (merci d'ailleur) MAIS comment se fait il que ma base ne se mette pas à jour? Je n'ai aucun message d'erreur par ailleur :?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 nov. 2005, 22:53

as tu une ligne de données qui correspond avec la clause WHERE ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 768 Messages

24 nov. 2005, 00:00

je t'accorde que le code fonctionne parfaitement (merci d'ailleur) MAIS comment se fait il que ma base ne se mette pas à jour? Je n'ai aucun message d'erreur par ailleur :?
Si tu ne lui demandes pas de t'afficher une éventuelle erreur, il ne l'affichera pas.

tu dois avoir
<?php
$sql = "[...]"; // Je ne reviens pas sur la requête
// et 
$req = mysql_query($sql);
// remplace $req par
$req = mysql_query($sql) or die(mysql_error()); // mysql_error() --> si il y a un msg d'erreur, te l'affiche.
?>
voici le manuel pour mysql_error() : http://www.php.net/mysql_error

ça te donnera une idée du problème...
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 nov. 2005, 00:15

juste comme ça, il y a deja cette ligne dans son code :wink:
$res = mysql_query($sql) or die (mysql_error()); 
s'il n'y a pas de message d'rreur je ne voit que l'idée de la clause qui n'est pas satisfaite

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 768 Messages

24 nov. 2005, 00:20

s'il n'y a pas de message d'rreur je ne voit que l'idée de la clause qui n'est pas satisfaite
Essaye peut etre la fonction mysql_affected_rows() après la requête
:?: http://fr2.php.net/mysql_affected_rows

pas de message :-k
je ne comprend pas ](*,)
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 86 Messages

26 nov. 2005, 11:31

Bon alors voilà, j'ai essayé tout ce que l'on m'a dit, recommencé ma requête de a à z et rien n'y fait...
Aucune erreur ne s'affiche mais ma base n'est pas modifiée :(

quelqu'un a encore une idée?

Mammouth du PHP | 19672 Messages

26 nov. 2005, 12:20

Fais afficher la requête générée et essaye là directement dans phpMyAdmin, tu verras bien.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 86 Messages

26 nov. 2005, 12:26

et comment affiche ton une requête générée s'il te plait?

Mammouth du PHP | 1311 Messages

26 nov. 2005, 12:27

avec echo

Eléphant du PHP | 383 Messages

26 nov. 2005, 12:37

est tu sur que ta variable de session "id" est correctement définie ? si ce n'est pas le cas, la requete ne retournera pas d'erreur mais ne modifiera rien, puisque elle ne trouvera pas d'entree avec l'id correspondant.

Eléphant du PHP | 86 Messages

09 déc. 2005, 17:05

me revoilà, j'ai bien essayé tout un tas de truc mais rien n'y fait :(
donc voilà le code de ma page d'authentification :
<?php
require ('../_db/config.php');
// On démarre la session
session_start();
$pseudoOK = false;  // cf Astuce

// On n'effectue les traitement qu'à la condition que 
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['pass'])) ) {

  extract($_POST);  // je vous renvoie à la doc de cette fonction

  // On va chercher le mot de passe afférent à ce pseudo
  $sql = "SELECT id,pseudo,pass,email,sex,jour,mois,annee,prenom,nom,rue,num,ville,code,pays,newsletter,team FROM lao_membre WHERE pseudo = '".addslashes($pseudo)."'";
  $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
  
  // On vérifie que l'utilisateur existe bien
  if (mysql_num_rows($req) > 0) {
     $data = mysql_fetch_assoc($req);
    
    // On vérifie que son mot de passe est correct
    if ($pass == $data['pass']) {
      $pseudoOK = true;
    }
  }
}

// Si le pseudo a été validé on met les données en sessions
if ($pseudoOK) {
  $_SESSION['id'] = $data['id'];
  $_SESSION['pseudo'] = $data['pseudo'];
  $_SESSION['pass'] = $data['pass'];
  $_SESSION['email'] = $data['email'];
  $_SESSION['sex'] = $data['sex'];
  $_SESSION['jour'] = $data['jour'];
  $_SESSION['mois'] = $data['mois'];
  $_SESSION['annee'] = $data['annee'];
  $_SESSION['prenom'] = $data['prenom'];
  $_SESSION['nom'] = $data['nom'];
  $_SESSION['rue'] = $data['rue'];
  $_SESSION['num'] = $data['num'];
  $_SESSION['ville'] = $data['ville'];
  $_SESSION['code'] = $data['code'];
  $_SESSION['pays'] = $data['pays'];
  $_SESSION['newsletter'] = $data['newsletter'];
  $_SESSION['team'] = $data['team'];

	$reponse = header("Location: ../../index.php");
	echo $reponse; 
	
}
else {
  echo 'Une erreur est survenue, veuillez réessayer !'; 
}
?>
Voilà le code de la modification :
<?
require ('config.php');


//Requête
$sql = "UPDATE lao_membre SET pseudo = '".$pseudo."', pass='".$pass."', email='".$email."', jour='".$jour."', mois='".$mois."', 
annee='".$annee."', prenom='".$prenom."', nom='".$nom."', rue='".$rue."', 
num='".$num."', ville='".$ville."', code='".$code."', pays='".$pays."' 
WHERE id = '".$_SESSION['id']."'";

//Effectuer la requête
$req = mysql_query($sql); 
// remplace $req par 
$req = mysql_query($sql) or die(mysql_error());
//on ferme la connexion
mysql_close();

//on redirige le visiteur sur la page d'accueil, là ou s'afficheront les messages
header('location: ../../index.php');
?>
Si vous voyez une incohérence.... Merci

Eléphant du PHP | 65 Messages

09 déc. 2005, 17:20

//Effectuer la requête
$req = mysql_query($sql);
// remplace $req par
$req = mysql_query($sql) or die(mysql_error());
//on ferme la connexion
mysql_close();

//on redirige le visiteur sur la page d'accueil, là ou s'afficheront les messages
header('location: ../../index.php');
Pour ta requête tu as un doublon, tu pourrais utilisé simplement $req = mysql_query($sql) or die(mysql_error());

tu pourrais aussi essayer
if($req)
{
    echo "ça passe";
}
else
{
   echo "ça ne passe pas":
}
Comme ça tu pourrais voir si au moins il essaie d'envoyer la requete, tu peux également mettre des echo un peut partout pour voir jusqu'à quelle ligne il se rend.

Et dernière chose, ton header va bloquer car il doit passer en premier de la page, moi j'utilise toujours un include quand je suis rendu aussi loin dans mon code.

Je ne suis pas un expert, donc si quelqu'un propose mieux ça serait bien.
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

ViPHP
pjl
ViPHP | 2119 Messages

09 déc. 2005, 18:17

me revoilà, j'ai bien essayé tout un tas de truc mais rien n'y fait :(
As tu essayé ceci ?
Fais afficher la requête générée et essaye là directement dans phpMyAdmin, tu verras bien.
Quelle est la tête de la requête une fois affichée ?