Page 1 sur 2

MAJ base de donnée

Posté : 20 nov. 2005, 14:00
par 3LpH4Ri0N
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

Re: MAJ base de donnée

Posté : 20 nov. 2005, 14:11
par mario
//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 ; !!!!

Posté : 23 nov. 2005, 22:22
par 3LpH4Ri0N
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 :?

Posté : 23 nov. 2005, 22:53
par Truc
as tu une ligne de données qui correspond avec la clause WHERE ?

Posté : 24 nov. 2005, 00:00
par mario
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...

Posté : 24 nov. 2005, 00:15
par Truc
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

Posté : 24 nov. 2005, 00:20
par mario
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 ](*,)

Posté : 26 nov. 2005, 11:31
par 3LpH4Ri0N
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?

Posté : 26 nov. 2005, 12:20
par Cyrano
Fais afficher la requête générée et essaye là directement dans phpMyAdmin, tu verras bien.

Posté : 26 nov. 2005, 12:26
par 3LpH4Ri0N
et comment affiche ton une requête générée s'il te plait?

Posté : 26 nov. 2005, 12:27
par jeff
avec echo

Posté : 26 nov. 2005, 12:37
par jobherzt
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.

Posté : 09 déc. 2005, 17:05
par 3LpH4Ri0N
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

Posté : 09 déc. 2005, 17:20
par Tiger
//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.

Posté : 09 déc. 2005, 18:17
par pjl
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 ?