Mauvaise syntaxe php

Eléphant du PHP | 186 Messages

03 juil. 2007, 16:26

Bonjour à tous,

J'éprouve quelques difficultés à trouver mon bonheur.
Je m'explique:
J'ai fait un espace personnel accessible via un login, qui correspond au mail d'une personne et via un mot de passe.
Une fois sur son son espace personnel, la personne a la possibilité de modifier ses données personnelles (coordonnées) et a aussi accès à l'ensemble des fiches qu'elle a mis en ligne.
Prenons le cas d'une personne qui disposerait d'un camping, elle retrouverait sur son espace perso ses propres coordonnées personnelles et la fiche de son camping.
D'un point de vue technique, dans la base de données, la table de son établissement est rattachée à la table de la personne avec comme clef étrangère: le mail de la personne.
Ainsi, le mail conditionne d'une part son entrée sur son espace personnel et d'autre part le rattachement de la fiche de son établissement afin de pouvoir en modifier les données.

Néanmoins, je souhaiterais que cette personne ait la possibilité de modifier son adresse mail pour X raisons. Conséquences:
- il faut que l'adresse mail se mette à jour sur la table client mais aussi sur la table des etablissements au niveau de l'enregistrement appartenant à cette personne.

Comment faire pour que les deux tables se mettent à jour?

A l'heure actuelle, voici mon code:
//requête permettant de déterminer l'ancien mail de la personne
$query_rs_login='SELECT login, id_client FROM tbl_client WHERE id_client='.$_GET['client'];
$rs_login = mysql_query($query_rs_login);
$row_rs_login = mysql_fetch_assoc($rs_login);

mysql_select_db($database_conn_develop, $conn_develop);
//requête mettant à jour toutes les autres informations personnelles de la personne (autre que le mail)
$query_modifier_utilisateur = "UPDATE tbl_client SET
nom_client='".mysql_real_escape_string($_POST['nom_client'])."',
prenom_client='".mysql_real_escape_string($_POST['prenom_client'])."',
adresse_client='".mysql_real_escape_string($_POST['adresse_client'])."',
cp_client='".mysql_real_escape_string($_POST['cp_client'])."',
ville_client='".mysql_real_escape_string($_POST['ville'])."',
tel_client='".mysql_real_escape_string($_POST['tel_client'])."',
fax_client='".mysql_real_escape_string($_POST['fax_client'])."'
 WHERE id_client = ".$_GET['client'];
$modifier_utilisateur = mysql_query($query_modifier_utilisateur);

//requête visant à modifier le mail, à la fois sur la table du client et sur la table des etablissements
if ((isset($_POST['login_client'])) && (trim($_POST['login_client']) != $row_rs_login['login'])) {
	//modifier le login du client sur la table etab
	$query_modifier_login1 = "UPDATE tbl_etab SET
	login_client='".mysql_real_escape_string($_POST['login_client'])."'
 	WHERE login_client = ".$row_rs_login['login'];
	$modifier_login1 = mysql_query($query_modifier_login1);
	//modifier le login sur la table client
	$query_modifier_login = "UPDATE tbl_client SET
	login='".mysql_real_escape_string($_POST['login_client'])."'
 	WHERE id_client = ".$_GET['client'];
	$modifier_login = mysql_query($query_modifier_login);
}
Actuellement, le changement s'opère bien sur la table du client mais pas sur celle des etablissements.

Qui plus est, je suppose que le changement du mail qui correspond aussi au login risque d'entrainer l'expulsion de la personne de son espace personnel.

Merci par avance de toute l'aide que vous pourrez m'apporter.

Mammouth du PHP | 959 Messages

03 juil. 2007, 20:03

ben je vois que tu connait la requète UPDATE pour mysql, pour cela, il faut bien sûr utiliser mysql_query()
pourquoi tu n'en fais pas 2 qui vont sur les 2 tables ?
j'ai jamais essayé, mais sa devrais marcher.. :)

Mammouth du PHP | 693 Messages

03 juil. 2007, 20:48

mmh, c'est ce qu'il fait déjà...

Essaye de faire tes requete sur PHPmyAdmin pour voir si elle font les résultat escompté et teste tes variables, pour l'instant, c'est tout ce que je vois. id_client est bien de type INT ?

Au passage
   $query_modifier_login = "UPDATE tbl_client SET 
    login='".mysql_real_escape_string($_POST['login_client'])."' 
     WHERE id_client = ".$_GET['client']; 
    $modifier_login = mysql_query($query_modifier_login); 
Tu devrais echapper $_GET['client'] comme tu l'as fait $_POST['login_client'].

Eléphant du PHP | 186 Messages

04 juil. 2007, 09:15

Merci pour vos réponses.

Je viens de trouver d'où venait le problème. Quelquefois les problèmes de codes ne tiennent pas à grand chose:

Je mets la solution parce que ce qui peut m'enerver quelquefois de la part de certains, c'est de voir "résolu" à un problème qui m'intéresse et de lire "c'est bon j'ai trouvé. a plus" sans aucune explication de ce qui a permis de résoudre le problème. Donc même si ca vient d'une erreur de rien
du tout ou même d'inattention, c'est pas grave et mettre la solution est toujours utile.

Voilà, c'était mon petit coup de gueule du matin.

Pour l'explication:

Le code en erreur:
$query_modifier_login1 = "UPDATE tbl_etab SET 
login_client='".mysql_real_escape_string($_POST['login_client'])."' 
WHERE login_client = ".$row_rs_login['login'];
et le bon code:
$query_modifier_login1 = "UPDATE tbl_etab SET
login_client='".mysql_real_escape_string($_POST['login_client'])."'
WHERE login_client ='".$row_rs_login['login']."'";
Vous voyez la différence à la fin. C'était ça le problème.

Merci encore pour vos réponses qui m'ont amené à trouver la solution.

A plus et bonne continuation.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 juil. 2007, 09:56

Je mets la solution parce que ce qui peut m'enerver quelquefois de la part de certains, c'est de voir "résolu" à un problème qui m'intéresse et de lire "c'est bon j'ai trouvé. a plus" sans aucune explication de ce qui a permis de résoudre le problème. Donc même si ca vient d'une erreur de rien du tout ou même d'inattention, c'est pas grave et mettre la solution est toujours utile.
C'est que tu as compris l'esprit d'un forum et que tu es ouvert au partage.
Tu ne fait pas parti de ces gens qui attendent leur solution à leur problème, sans avoir cherché si la solution existait déjà et qui veulent qu'on les aides par MSN ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer