Probleme script don de point

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme script don de point

Re: Probleme script don de point

par leboti » 25 juin 2012, 18:03

J'ai réussi ! Merci beaucoup pour votre aide.

Resolu !

Re: Probleme script don de point

par xTG » 25 juin 2012, 17:22

Tu as ton session_start() en haut de script.
Donc tu n'as plus qu'à accéder aux informations stockées en session qui sont dans la variable $_SESSION qui est un array (tableau).

Re: Probleme script don de point

par leboti » 25 juin 2012, 16:29

Oui je faire ça, mais comme c'est mit ça me permet de modifier plus rapidement le nombre de point à donner si je souhaite.

Mais comment faire pour appeller une session sur mon script ?

Re: Probleme script don de point

par Mazarini » 25 juin 2012, 15:25

$sqlupdate = "UPDATE account_data SET dp = dp + 10 WHERE id='$id'";
Ca permet d'ajouter 10 points sans lire les points avant.

Re: Probleme script don de point

par leboti » 25 juin 2012, 14:59

Voici mon nouveau code

Code : Tout sélectionner

<?php session_start(); $points = 10; // NOMBRE DE POINT(S) AJOUTE(S) $host = "localhost"; // HOTE SQL $user = "MYLOGIN"; // NOM D'UTILISATEUR DE LA DB $pass = "MYPSD"; // MOT DE PASSE $db = "auth"; // NOM DE LA DB $dbsite = "site"; //Nom de la db site $name = "Don de point"; // NOM DE LA PAGE ?> <title><?php echo $name; ?></title> <form action="" method="POST"> <h3>Nom de compte :</h3><input type="text" name="username"/> <input type="submit" value="Continuer" name="submit" /> </form> <?php if (isset($_POST['submit'])) { $username = mysql_real_escape_string(trim($_POST['username'])); if ($username == "") { echo "Veuillez saisir votre nom de compte."; } else { $cnx = mysql_connect($host, $user, $pass) OR DIE (mysql_error()); // Je me connecte à ma DB mysql_select_db($db) OR DIE (mysql_error()); // Je selectionne ma db $query = "SELECT count(*) as nb, id FROM account WHERE username = '$username'";// Je creer ma requete pour verifier si l'user existe et prendre son ID $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error()); while($row = mysql_fetch_row($result)){ //je recupere les resultats $nb = $row[0]; $id = $row[1];} if ($nb == 0) { echo "Ce compte n'existe pas."; // Si c'est faux, on affiche ca } else // Sinon on continue { mysql_select_db($dbsite) OR DIE (mysql_error()); // je change de db $nbrdp = "SELECT dp FROM account_data WHERE id='$id'"; // je creer ma requete pour allez chercher le nombre de db que le comptre username a $reqdp = mysql_query($nbrdp, $cnx) or die('Erreur SQL !<br />'.$nbrdp.'<br />'.mysql_error()); // j'execute $repdp = mysql_fetch_array ($reqdp); // je recupere le resultat $dp = $repdp['dp']; $newdp = $dp + $points; // je calcule le nouveau nombre de DP $sqlupdate = "UPDATE account_data SET dp ='$newdp' WHERE id='$id'"; // je cree ma requete pour modifier la valeur de dp du compte username mysql_query($sqlupdate) OR DIE ('Erreur SQL !<br />'.$sqlupdate.'<br />'.mysql_error()); // j'execute $verifdp = "SELECT dp FROM account_data WHERE id='$id'"; $reqverif = mysql_query($verifdp, $cnx) or die('Erreur SQL !<br />'.$verifdp.'<br />'.mysql_error()); $actdp = mysql_fetch_array ($reqverif); mysql_close ();// je ferme ma connexion if ($actdp == $dp) { echo "Votre compte n'a pas &eacute;t&eacute; cr&eacute;dit&eacute;. Veuillez r&eacute:essayer !"; } else { echo htmlentities($points." point(s) ajouté(s) sur le compte : ".$username); // j'affiche que les points ont été ajouté } } } } ?>
J'ai fusionné les deux requêtes pour verifier si l'username est bon, et prendre l'ID et ajouter la vérification à la fin.

Mon script marche enfin ! Apres du bidouillage, j'ai modifier la manière dont on récupérait le nombre de DP pour pouvoir faire le calcul ensuite.

Est ce que je peux encore optimiser mon script selon vous ?

Dernière chose, j'aimerais que dès lors qu'on appuye sur continuer, on soit renvoyer vers une autre page dans laquel ce déroulerai le script. Cela pour empêcher la répétition illimité de l'ajout de point. Comment faire ?

Ou alors, autre possibilité, comment utiliser la session de connexion que l'user utilise pour accèder à la page d'ajout de point via mon site lorsqu'il est connecté ?

Merci

Re: Probleme script don de point

par Mazarini » 25 juin 2012, 14:46

Pour afficher le code sql, il suffit de faire un echo de la variable qui contient le code sql.

Autrement, la fonction mysql_affected_rows() permet de savoir combien de ligne sont modifiées après un update.

Re: Probleme script don de point

par leboti » 25 juin 2012, 13:55

Merci pour votre réponse.

Alors pour la question des bases de données, j'ai une base de donnée avec les comptes joueurs existant sur mon serveur, puis une autre base de donnée pour mon site. Je devrais fusionner les deux et enfaire qu'une ?

Je vais essayer fusionner mes requêtes. Mais je ne comprend pas ce que vous voulez dire par "Tente d'afficher toutes tes requètes afin de vérifier quelles soit bien écrite" ?

Re: Probleme script don de point

par Spols » 25 juin 2012, 00:36

Tente d'afficher toutes tes requètes afin de vérifier quelles soit bien écrite,

Bizarre que tu ai besoin de 2 base de données avec des liens entres elles. Ne serait il pas plus judicieux d'avoir plusieurs tables plutot que plusieurs base de donnée ?

Pour t'assure que les points ont bien été ajouté, je pense à une nouvelle requète du nombre de point du user, et comparaison avec le nombre précédent.

Encore une chose, tu peux fusionner ta raquète qui vérifie si il y a un user avec le bon username et la récupération de l'id de ce username. Voir même si tu veux progresser tenter (si toutes tes tables sont dans la même base de donnée) de fusionner les 3 requètes grace à des jointures

PS une dernière chose
Dans tes 2 dernière requète, tu les écris dans une variable autre que $sql (pas de problème tu peux le faire) mais en cas d'erreur tu demande l'affichage de la variable $sql plutot que la variable utilisé pour écrire les requètes

Probleme script don de point

par leboti » 24 juin 2012, 22:04

Bonjour !
Je me permet de vous demander votre aide car je suis sur un script php qui bug depuis 5h, et je n'arrive pas à trouver mon erreur..

J'essaie de faire un script qui donne un nombre de points $points, à un compte demander à l'utilisateur.

Le voici :

Code : Tout sélectionner

<?php session_start(); $points = 10; // NOMBRE DE POINT(S) AJOUTE(S) $host = "localhost"; // HOTE SQL $user = "MYLOGIN"; // NOM D'UTILISATEUR DE LA DB $pass = "MYMDP"; // MOT DE PASSE $db = "auth"; // NOM DE LA DB $dbsite = "site"; //Nom de la db site $name = "Don de point"; // NOM DE LA PAGE ?> <title><?php echo $name; ?></title> <form action="" method="POST"> <h3>Nom de compte :</h3><input type="text" name="username"/> <input type="submit" value="Continuer" name="submit" /> </form> <?php if (isset($_POST['submit'])) { $username = mysql_real_escape_string(trim($_POST['username'])); if ($username == "") { echo "Veuillez saisir votre nom de compte."; } else { $cnx = mysql_connect($host, $user, $pass) OR DIE (mysql_error()); // Je me connecte à ma DB mysql_select_db($db) OR DIE (mysql_error()); // Je selectionne ma db $requete = "SELECT count(*) as nb FROM account WHERE username = '$username'"; // Je creer ma requete pour verifier si l'user existe $req_exec = mysql_query($requete, $cnx); // Je l'execute $resultat = mysql_fetch_assoc($req_exec); // Je recupere la reponse if ($resultat['nb'] == 0) { echo "Ce compte n'existe pas."; // Si c'est faux, on affiche ca } else // Sinon on continue { $sql = "SELECT id FROM account WHERE username='$username'"; // Je creer ma requete pour allez chercher l'id du compte de username $req = mysql_query($sql, $cnx) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // j'execute $id = mysql_fetch_array ($req); // je récupère le résultat mysql_select_db($dbsite) OR DIE (mysql_error()); // je change de db $nbrdp = "SELECT dp FROM account_data WHERE id='$id'"; // je creer ma requete pour allez chercher le nombre de db que le comptre username a $reqdp = mysql_query($nbrdp, $cnx) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // j'execute $dp = mysql_fetch_array ($reqdp); // je recupere le resultat $newdp = $dp+$points; // je calcule le nouveau nombre de DP $sqlupdate = "UPDATE account_data SET dp ='$newdp' WHERE id='$id'"; // je creer ma requete pour modifier la valeur de dp du compte username mysql_query($sqlupdate) OR DIE ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // j'execute mysql_close (); // je ferme ma connexion echo htmlentities($points." point(s) ajouté(s) sur le compte : ".$username); // j'affiche que les points ont été ajouté } } } ?>
Récupérer le code



Alors deux choses :

- Tout ce passe bien, je remplis le nom du compte, il exécute jusqu'à la fin, m'annonce l'ajout des points, mais aucun point n'est ajouter dans la DB.

- Deuxième chose, il affiche le message de réussite alors que les points ne se sont pas rajouter, comment faire pour modifier ça ?


je suis débutant, je connais les bases, et j'apprends en essayant, et en recherchant.. D'habitude je trouve, mais la j'ai beau essayer différentes méthodes d'approche, ça ne marche tjrs pas...

Un conseil à m'apporter ?

Merci