requête mysql...

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 15:03

bonjour à tous, ma question pourrait se trouver dans la partie mysql, mais je me sert de php pour faire ma requête alors je pose la question içi:
J'ai une page où je propose aux utilisateurs de changer leurs données et options, la voici, ça ça marche, j'envoi ensuite les données du formulaire à modif_action.php que voici (en simplifié, y a plusieurs champs modifiés mais bon...
<?php
session_start();
if (isset($_SESSION['user'])!=TRUE){
	echo "<p align=\"center\"><font size=\"6\" color=\"red\"><blink>Vous n'êtes pas authentifié!!!</blink></font></p>";
	echo "<p align=\"center\"><font size=\"4\">Vous ne pouvez donc pas accéder à cette page</font></p>";
	echo "<a href=\"concerts_benevoles.php\">Retour</a>";
} else {
	$connexion=mysql_connect("localhost","root","");
	$db=mysql_query("CREATE DATABASE bobine");
	$db=mysql_select_db("bobine",$connexion);
	$nom=$_POST['chnom'];
	if ( $nom!=$_SESSION['nom']){
		$insertion=mysql_query("UPDATE user SET 'nom='.$nom.' WHERE nom= '.$_SESSION['nom'].'");
		$_SESSION['nom']=$nom;
	}
	mysql_close();
	header('Location: user.php');
}
?>
je sais que le problème ne viens pas du passage de donnée avec la mérhode POST, puisque ma variable SESSION est bien mise à jour comme il faut, mais pas la bdd...
si vous pourviez me réécrire ma requête?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:07

Tu as un tit mélange de " et ' qui posent souci. Essaies ça :
$insertion=mysql_query("UPDATE user SET nom='".$nom."' WHERE nom='".$_SESSION['nom']."'");

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 15:11

je viens de faire un test, ça marche à une chose près, si j'ai deux personnes qui ont le même nom de famille, ça remplace les deux, alors comment je peut faire pour faire un update en précisant l'id?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:19

Pas testé, mais ça marche si après le WHERE tu rajoutes un AND id=X ?

Sinon pourquoi ne pas te baser sur l'ID qui est unique pour faire ton update ? à la place de la session ?

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 15:30

j'ai essayer plusieurs chose avec ta piste, rien ne marche...voici ce que j'ai fait:
$miseajour=mysql_query("UPDATE user SET nom='".$nom."' WHERE nom='".$_SESSION['nom']."' AND id=".$_SESSION['id']."");
$miseajour=mysql_query("UPDATE user SET nom='".$nom."' WHERE nom='".$_SESSION['nom']."' AND id='".$_SESSION['id']."'");
$miseajour=mysql_query("UPDATE user SET nom='".$nom."' WHERE  id='".$_SESSION['id']."'");
$miseajour=mysql_query("UPDATE user SET nom='".$nom."' WHERE  id='.$_SESSION['id'].'");
Que faire...? :cry:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:33

Assures toi déjà que $_SESSION['id'] existe et te donne une valeur. Si c'est le cas, la bonne syntaxe est :
$miseajour=mysql_query("UPDATE user SET nom='".$nom."' WHERE id=".$_SESSION['id']."");

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 15:40

lorsque je fait un echo $_SESSION['id'], le résultat est : 0, ce qui est normal puisque je modifi le premier membre de la liste...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:42

Bé en fait là tout dépend de ce que tu veux modifier. Il faut que tu te bases sur l'ID, le champ de la base pour pointer dessus.

Dans ton formulaire, passe en champ HIDDEN l'ID en question et tu récupères avec WHERE id=".$_POST['id']."

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 15:45

je suis prit d'un doute, le nom='"..."', ce nom correspond bien au nom da ma colonne, si je veu changer le prenom, je fait
$miseajour=mysql_query("UPDATE user SET prenom='".$mavariable."' WHERE id=".$_SESSION['id']."");

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:47

Oui c'est bien ça ;)

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 15:48

l'id je la récupère lors de l'identification de l'utilisateur: voici mon code:
<?php      /*pass.php*/
session_start();
$util=$_POST['utilisateur'];
$motpass=$_POST['pass'];
//requête MySql
$connexion=mysql_connect("localhost","root","");
$db=mysql_select_db("bobine",$connexion);
$resultat=mysql_query("select * from user",$connexion);
$nb=mysql_num_rows($resultat);
for ($i=0;$i<$nb;$i++){
	$pseudo=mysql_result($resultat,$i,"pseudo");
	if ($pseudo==$util){
		$pass=mysql_result($resultat,$i,"password");
		if ($pass==$motpass){
			$_SESSION['id']=$i;
			$_SESSION['user']=$util;
			$_SESSION['password']=$pass;
			$_SESSION['nom']=mysql_result($resultat,$i,"nom");
			$_SESSION['prenom']=mysql_result($resultat,$i,"prenom");
			$_SESSION['email']=mysql_result($resultat,$i,"email");
			$_SESSION['tel']=mysql_result($resultat,$i,"tel");
			$_SESSION['quartier']=mysql_result($resultat,$i,"quartier");
			$_SESSION['ville']=mysql_result($resultat,$i,"ville");
			$_SESSION['codepostal']=mysql_result($resultat,$i,"codepostal");
			$_SESSION['montrer_email']=mysql_result($resultat,$i,"montrer_email");
			$_SESSION['montrer_tel']=mysql_result($resultat,$i,"montrer_tel");
			$_SESSION['montrer_adresse']=mysql_result($resultat,$i,"montrer_adresse");
			$_SESSION['droit_voirdate']=mysql_result($resultat,$i,"droit_voirdate");
			$_SESSION['droit_sinscrire']=mysql_result($resultat,$i,"droit_sinscrire");
			$_SESSION['droit_ajoutdate']=mysql_result($resultat,$i,"droit_ajoutdate");
			$_SESSION['droit_ajoututil']=mysql_result($resultat,$i,"droit_ajoututil");
			$_SESSION['droit_ajoutcrenaux']=mysql_result($resultat,$i,"droit_ajoutcrenaux");
			mysql_close();
			if (isset($_SESSION['erreur'])==TRUE){
				unset($_SESSION['erreur']);
			}
			break;
		} else {
			$_SESSION['erreur']="Le mot de passe que vous avez saisi est incorrect";
			if (isset($_SESSION['user'])==TRUE){
				unset($_SESSION['user']);
			}
			if (isset($_SESSION['id'])==TRUE){
				unset($_SESSION['id']);
			}
		}
	} else {
		$_SESSION['erreur']="le nom d'utilisateur n'éxiste pas";
		if (isset($_SESSION['user'])==TRUE){
			unset($_SESSION['user']);
		}
		if (isset($_SESSION['id'])==TRUE){
				unset($_SESSION['id']);
		}
	}
}
header('Location: concerts_benevoles.php');
?>
donc l'id est bien là dans ma variable $_SESSIOn['id'] (je vois pas pourquoi une de mes variables session amrcherai pas alors que les autres oui)...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:56

Si tu as bien la valeur de l'ID récupéré alors tu peux faire :
$miseajour=mysql_query("UPDATE user SET prenom='".$mavariable."' WHERE id=".$_SESSION['id']."");
Pour tester avant de faire le UPDATE, affiche juste la session ID pour plusieurs choix pour voir si ça change ou pas.

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 16:02

décidément, quand ça veut pas.... :evil:
je viens de vérifier avec la deuxième personne inscrite, et l'id devient 1, je suppose donc que de se côter là tout va bien...
et sinon je pourrait pas faire ave REPLACE? (je croit que j'ai déja vu ça quelque part)...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 16:37

Déjà pour tester si ta requête fonctionne, fait là directement dans phpMyAdmin pour voir si la modification est prise en compte.

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 16:46

Bon t'avais raison, ça vient de la requête, quand je test dans mysql:
l'erreur est qu'il ne connait pas le champ id:

Code : Tout sélectionner

UPDATE user SET nom='dupond' WHERE ID=1
est-ce que quelqun connait la requête sql exacte pour spécifier en fonction de l'id et non pas remplacer tout les champs qui ont telle valeur?