Double enregistrement pour 1 requette...
Résolu/Fermé
A voir également:
- Double enregistrement pour 1 requette...
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double appel - Guide
- Double authentification google - Guide
- Enregistrement vidéo écran - Guide
14 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 déc. 2008 à 20:48
30 déc. 2008 à 20:48
je ne sais pas si ça vient de là mais tu as 2 fois session_start()
et au moins 3 fois include ("inc/dbconnect.php");
et au moins 3 fois include ("inc/dbconnect.php");
Merci de ta réponse Alain, mais non ce n'est pas à cause de ça.
J'avais déjà essayé sans les include mais erreur connexion mysql
et sans les sessions mais ça fait toujours le même problème :=(
J'avais déjà essayé sans les include mais erreur connexion mysql
et sans les sessions mais ça fait toujours le même problème :=(
Utilisateur anonyme
30 déc. 2008 à 21:12
30 déc. 2008 à 21:12
<?php //Ticket à gratter session_start(); include ("inc/dbconnect.php"); $date_jour = date ("d/m/Y"); $ip = $_SERVER['REMOTE_ADDR']; //On verifie $sql = "SELECT count(*) FROM cf_grattage WHERE id_membre='".$_SESSION['idmembre']."' AND date = '".$date_jour."'"; $req = query_or_die($sql); if (mysql_num_rows($req)>3) { die ("Désolé mais vous n'avez plus de tickets pour aujourd'hui.<br><br><a href='compte.php'>Cliquez-ici</a> pour retourner à votre compte !"); exit(); } elseif (isset($_POST['participation']) && $_POST['participation'] == "oui") { //Dès le chargement de la page on enregistre la participation $sql = "INSERT INTO cf_grattage (id_membre, date, gain, ip) VALUES ('".$_SESSION['idmembre']."', '".$date_jour."', '', '".$ip."')"; $req = query_or_die($sql); //On met à jour ! $sql = "UPDATE cf_grattage SET gain = '".$_POST['gain']."' WHERE id_membre='".$_POST['idmembre']."'"; $req = query_or_die($sql); //Mise à jour solde membre $sql = "UPDATE cf_solde_membre SET solde = solde + '".$_POST['gain']."' WHERE id_membre = '".$_POST['idmembre']."'"; $req = query_or_die($sql); //Ajout table historique rémunération $sql = "INSERT INTO cf_historique_remuneration (id_membre, programme, date, gain, etat) VALUES ('".$_POST['idmembre']."', 'Ticket à gratter', '".$_POST['date']."', '".$_POST['gain']."', 'Validé')"; $req = query_or_die($sql); $message = $_POST['gain']." ont été crédités sur votre compte !"; } function query_or_die($sql) { return mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); } ?>
c'est pas mieux comme ca ?
n'utilise les variables $_POST directement dans tes requetes sans en avoir controlé le contenu !
utilise impérativement la fonction addslashes()
Merci desg pour ton code, cependant j'avais fait ce code au début avant que mon problème arrive.
Oui tout marche comme mon script de départ
Mais tu remarques que la participation s'enregistrera uniquement que si le membre valide le formulaire de participation
si il gratte, vois que c'est perdant et ne valide pas le formulaire mais recharge la page, bah il pourra gagner autant qu'il veut, puisqu'il choisira les tickets à valider et ceux à ne pas valider...
Oui tout marche comme mon script de départ
Mais tu remarques que la participation s'enregistrera uniquement que si le membre valide le formulaire de participation
si il gratte, vois que c'est perdant et ne valide pas le formulaire mais recharge la page, bah il pourra gagner autant qu'il veut, puisqu'il choisira les tickets à valider et ceux à ne pas valider...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
PS :
Je précise que c'est un ticket à gratter des plus basic écrit en javascript et pas en flash... donc pas pareille :s
Je précise que c'est un ticket à gratter des plus basic écrit en javascript et pas en flash... donc pas pareille :s
Utilisateur anonyme
30 déc. 2008 à 21:32
30 déc. 2008 à 21:32
ok je n'avais pas vu cela comme ca
ta requete
$sql = "UPDATE cf_grattage SET gain = '".$_POST['gain']."' WHERE id_membre='".$_POST['idmembre']."'";
met a jour tout les gain du meme joueur !!
donc cela pose probleme :)
il te faut savoir quelle ligne de la table mettre a jour :)
ta requete
$sql = "UPDATE cf_grattage SET gain = '".$_POST['gain']."' WHERE id_membre='".$_POST['idmembre']."'";
met a jour tout les gain du meme joueur !!
donc cela pose probleme :)
il te faut savoir quelle ligne de la table mettre a jour :)
[...] elseif (isset($_POST['participation']) && $_POST['participation'] == "oui") { //Dès le chargement de la page on enregistre la participation $sql = "INSERT INTO cf_grattage (id_membre, date, gain, ip) VALUES ('".$_SESSION['idmembre']."', '".$date_jour."', '', '".$ip."')"; $req = query_or_die($sql); $idgrattage = mysql_insert_id(); //<< j'ai récupéré l'id du dernier enregistrement et je le retrouve //On met à jour ! $sql = "UPDATE cf_grattage SET gain = '".$_POST['gain']."' WHERE id_membre='".$_POST['idmembre']."' AND idgrattage='".$idgrattage."'"; //<< ici pour savoir ce que je met à jour ! $req = query_or_die($sql); [...]
voilà j'ai changé un peu, je vais tester pour voir
par contre pas compris par rapport à $_POST, comment on peut mettre ce qu'on veut :-/
Utilisateur anonyme
30 déc. 2008 à 21:53
30 déc. 2008 à 21:53
les données sont envoyées par le naviguateur donc modifiable par l'utilisateur, on trouve des addons par exemple pour modifier les données envoyées via les formulaires sur firefox.
ca peut aussi aider à tester ses scripts ;)
ca peut aussi aider à tester ses scripts ;)
Ah ok et euh faut que je les envoi comment alors mes données ? Oo
stock ca dans la sessions, c'est stocké coté serveur et presque transparent
essaye ca:
dans un fichier session_1.php
session_start();
$_SESSION['pwet]='coucout';
dans un fichier session_2.php
session_start();
echo $_SESSION['pwet];
tu devrais voir un jolie coucou !
la variable est transmise sans passer par le navigateur ;)
ca marche avec un identifiant de session transmis avec les cookies ou passer dans l'url, le serveur s'occupe de tout tu as juste à utiliser le code comme ca ;)
essaye ca:
dans un fichier session_1.php
session_start();
$_SESSION['pwet]='coucout';
dans un fichier session_2.php
session_start();
echo $_SESSION['pwet];
tu devrais voir un jolie coucou !
la variable est transmise sans passer par le navigateur ;)
ca marche avec un identifiant de session transmis avec les cookies ou passer dans l'url, le serveur s'occupe de tout tu as juste à utiliser le code comme ca ;)
Ok je vais faire comme ça alors, merci
Cependant mon problème de départ ne bouge pas xD enfin bon
mais quant à la sécurité je vais m'y mettre ;-)
Cependant mon problème de départ ne bouge pas xD enfin bon
mais quant à la sécurité je vais m'y mettre ;-)
Utilisateur anonyme
30 déc. 2008 à 22:17
30 déc. 2008 à 22:17
regarde si tu ne charge pas la page 2 fois sans t'en rendre compte, avec une redirection ou quelques chose comme ca
met un die() a la fin de ton code pour le stoper, et et regarde combien de participation que tu as
met un die() a la fin de ton code pour le stoper, et et regarde combien de participation que tu as
oui enfin dès le chargement de la page
dès que j'enlève ce code ou que je le met dans la condition elseif... soumission du formulaire
bah plus rien s'enregistre dans la base
donc le problème viens de ce bout de code, mais il me semble correct...
moi je veux enregistrer la participation au chargement de la page, pour que le membre ne puisse pas choisir les ticket à valider, puis ensuite après validation, mettre à jour la base !
//Dès le chargement de la page on enregistre la participation $sql = "INSERT INTO cf_grattage (id_membre, date, gain, ip) VALUES ('".$_SESSION['idmembre']."', '".$date_jour."', '0', '".$ip."')"; $req = query_or_die($sql);
dès que j'enlève ce code ou que je le met dans la condition elseif... soumission du formulaire
bah plus rien s'enregistre dans la base
donc le problème viens de ce bout de code, mais il me semble correct...
moi je veux enregistrer la participation au chargement de la page, pour que le membre ne puisse pas choisir les ticket à valider, puis ensuite après validation, mettre à jour la base !
Je viens de faire un exit(); juste après
$sql = "INSERT INTO cf_grattage (id_membre, date, gain, ip) VALUES ('".$_SESSION['idmembre']."', '".$date_jour."', '0', '".$ip."')";
$req = query_or_die($sql);
et là miracle la page reste blanche et dans ma base qu'un seul enregistrement :-D, mais d'où cela peut il venir ??
c'est à dire que ma page se charge deux fois ??
$sql = "INSERT INTO cf_grattage (id_membre, date, gain, ip) VALUES ('".$_SESSION['idmembre']."', '".$date_jour."', '0', '".$ip."')";
$req = query_or_die($sql);
et là miracle la page reste blanche et dans ma base qu'un seul enregistrement :-D, mais d'où cela peut il venir ??
c'est à dire que ma page se charge deux fois ??
Après plusieurs heures passé sur ce script, j'ai enfin trouvé
dans ma page footer.php
après la balise html, j'avais un include d'une page externe pour compter mes stats... c'est cette include qui fouter le caca pour être poli =)
en tout cas merci de m'avoir aider à chercher et surtout sur l'astuce avec les sessions plutôt que les $_post
dans ma page footer.php
après la balise html, j'avais un include d'une page externe pour compter mes stats... c'est cette include qui fouter le caca pour être poli =)
en tout cas merci de m'avoir aider à chercher et surtout sur l'astuce avec les sessions plutôt que les $_post