Page 1 sur 1

Enregistrements faussés

Posté : 02 janv. 2009, 23:16
par rolusseum
Bonsoir et bonne année à PHPFrance,

J'ai un problème d'enregistrement dans la bd. C'est à dire que j'ai des données tronquées qui sont enregistrées. Lorsqu'on "utilise" la page validation des données "normalement", cela se déroule très bien, en revanche, avec une "utilisation" un peu tordu, j'ai des données faussées. J'ai réussi à reproduire le phénomène.
Sur le site concerné, j'utilise les sessions et je les enregistre dans la base de données.
Avec un navigateur internet (Mozilla), je me connecte à mon site (via login et mot de passe).
Donc j'ouvre une session.

J'ouvre le formulaire d'un client pour saisir le menu de la semaine prochaine.
Je peux proposer plusieurs menu à la semaine à l'avance. Pour aller plus vite, j'ouvre une nouvelle fenêtre dans le navigateur (mozilla ctrl t) et un nouveau formulaire pour saisir le menu de la semaine (différente de la semaine prochaine), mais pour le même client.

Dans cette situation, je n'ouvre pas une nouvelle session (puisque, j'utilise le même navigateur et donc, la même session).

Je valide l'un après l'autre les données des formulaires dans la base de données et... un menu est en bien enregistré et l'autre, certaines données du tuple sont faussées.

Si je procède avec deux navigateur différent ça marche nickel.
Et là, j'ai deux sessions ouvertes.

Bref, je ne sais pas si la cause est liée à la session ou si c'est un problème lié à la base de donnée.
Pouvez m'aider ou m'expliquer ce qui se passe?
Merci.


Je reprend un post que j'avais mis dans le forum php débutant, car je ne sais pas si c'était le bon endroit pour poster. Voici le lien du post.
[url]http://www.phpfrance.com/forums/voir_sujet-245060.php[/url]

Posté : 03 janv. 2009, 15:29
par Aureusms
Qu'est ce que tu entend par faussées ? Ne sont-elles pas celles que tu as voulu entrées dans la BDD ?
Essaye de nous montrer la requète d'injection (INSERT INTO)

Posté : 04 janv. 2009, 02:04
par rolusseum
[quote]Je valide l'un après l'autre les données des formulaires dans la base de données et... un menu est bien enregistré et l'autre, certaines données du tuple sont faussées. [/quote]

Pour l'un des enregistrements, la colonne Id_user de la table est égale à 0 alors qu'il devrait y avoir un int correspondant au user (donc autre que 0). Les autres champs des colonnes sont ok. Il est arrivé aussi, que la colonne Id_user est ok, mais que la date soit fausse (une autre date ou nulle),...


Voici en gros la requête
[code]
//Recherche si le programme propose existe dans la table
$requeteMenuExiste = "SELECT Id_user,Date_menu_prop from menu_propose " .
"WHERE Date_menu_prop='$dateSelect' AND Id_user='$id_user_sess'";
$resultatRequeteMenuExiste = execute_requeteSQL($requeteMenuExiste);
$affected_rowsExist = mysql_num_rows($resultatRequeteMenuExiste);
if($affected_rowsExist==1){
//Modifier le menu
$sqlModif = "UPDATE menu_propose set ......
}
//sinon on le cree
else{
$sql = "INSERT INTO menu_propose(Id_menu_propose,Id_user," .
"Jour_semaine,Date_menu_prop,".
"VALUES('','$id_user_sess','$jourS','$dateJour')" ;

$resultat = mysql_query($sql);
[/code]

Je penche de plus en plus pour un problème de session.


Actualisation du post:
C'est effectivement un problème de session. les variables de sessions sont "écrasées" d'un enregistrement à l'autre. Désolé de vous avoir dérangé pour rien.