PHP Problème de réponse

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 : PHP Problème de réponse

Re: PHP Problème de réponse

par Spols » 10 oct. 2019, 18:26

si tu as ce message d'erreur c'est que ton code passe par son affichage. affiche aussi la requète et le résultat de celle ci pour comprendre.

la partie ajoutant le badge est avant ou après ?

PHP Problème de réponse

par Invite » 10 oct. 2019, 14:53

Bonjour,
je viens vers vous aujourd'hui car j'ai un soucis avec un de mes scripts PHP, j'ai fait une boutique de badges mais le problème est le message affiché lorsque l'utilisateur a correctement acheté un badge,
voici le code:
Page de badges:

Code : Tout sélectionner

$BadgeInfo = $bdd->prepare('SELECT * FROM cms_badges WHERE categorie = ? ORDER BY -id'); $BadgeInfo->execute(array($Categorie->id)); if ($BadgeInfo->rowCount() == 0) { echo "Pas de badge à vendre dans cette catégorie"; } else { while ($Badge = $BadgeInfo->fetch(PDO::FETCH_OBJ)) { if(isset($_SESSION['id'])) { $VerificationsBadgePossede = $bdd->prepare('SELECT user_id, badge_id FROM user_badges WHERE user_id = ? AND badge_id = ?'); $VerificationsBadgePossede->execute(array($Session->id, $Badge->id_badge)); } if (isset($_POST['acheter'])) { include('php/requetes/boutique/badges.php'); } ?> <div class="col-md-12 badge-badge-field"> <div class="col-md-1 col-xs-2 col-xl-1"><img src="<?= $SWF->c_images; ?>/album1584/<?= $Badge->id_badge; ?>.gif" class="badge-badge-image"></div> <div class="col-md-8 col-xs-6 badge-badge-info-field"><span class="badge-badge-title col-md-12 col-xs-12"><?= $Badge->titre_badge; ?></span> <span class="badge-badge-prix col-md-12 col-xs-12"><?php if($Badge->monnaie == 'jetons') { ?><?= $Badge->prix; ?> jetons<?php } elseif($Badge->monnaie == 'diamants') { ?><?= $Badge->prix; ?> diamants<?php } ?></span></div> <div class="col-md-3"><form method="post"><input type="hidden" value="<?= $Badge->id_badge; ?>" name="badge_code"><?php if(isset($_SESSION['id'])) { if($VerificationsBadgePossede->rowCount() == 1) { ?><input type="submit" value="Possédé" name="acheter" class="col-md-12 badge-badge-already-buy"><?php } else { ?><input type="submit" value="Acheter" name="acheter" class="col-md-12 badge-badge-buy"><?php }} else { ?><input type="submit" value="Acheter" name="acheter" class="col-md-12 badge-badge-buy"><?php } ?></form></div> </div> <?php }} ?> </div> <?php }} ?>
et voici le code de la requete:

Code : Tout sélectionner

if (isset($_SESSION['id'])) { $BadgeID = htmlspecialchars($_POST['badge_code']); $BadgeEnVente = $bdd->prepare('SELECT * FROM cms_badges WHERE id_badge = ?'); $BadgeEnVente->execute(array($BadgeID)); if($BadgeEnVente->rowCount() == 1) { $BadgeInfos = $BadgeEnVente->fetch(PDO::FETCH_OBJ); $BadgePossede = $bdd->prepare('SELECT user_id, badge_id FROM user_badges WHERE user_id = ? AND badge_id = ?'); $BadgePossede->execute(array($Session->id, $BadgeID)); if ($BadgePossede->rowCount() == 0) { if ($BadgeInfos->monnaie == 'jetons') { if ($Session->jetons >= $BadgeInfos->prix) { $NouveauBadge = $bdd->prepare('INSERT INTO user_badges (user_id, badge_id) VALUES (?, ?)'); $NouveauBadge->execute(array($Session->id, $BadgeID)); $UpdateJetons = $Session->jetons - $BadgeInfos->prix; $PaiementUtilisateur = $bdd->prepare('UPDATE users SET jetons = ? WHERE id = ?'); $PaiementUtilisateur->execute(array($UpdateJetons, $Session->id)); ?><script type="text/javascript">swal("Bravo !", "Tu as acheté un badge", "success")</script><?php } else { ?><script type="text/javascript">swal("Oups !", "Tu n'as pas assez de jetons", "error")</script><?php } } elseif ($BadgeInfos->monnaie == 'diamants') { if ($Session->vip_points >= $BadgeInfos->prix) { $NouveauBadge = $bdd->prepare('INSERT INTO user_badges (user_id, badge_id) VALUES (?, ?)'); $NouveauBadge->execute(array($Session->id, $BadgeID)); $UpdateDiamants = $Session->vip_points - $BadgeInfos->prix; $PaiementUtilisateur = $bdd->prepare('UPDATE users SET vip_points = ? WHERE id = ?'); $PaiementUtilisateur->execute(array($UpdateDiamants, $Session->id)); ?><script type="text/javascript">swal("Bravo !", "Tu as acheté un badge", "success")</script><?php } else { ?><script type="text/javascript">swal("Oups !", "Tu n'as pas assez de diamants", "error")</script><?php } } } else { ?><script type="text/javascript">swal("Oups !", "Tu possèdes déjà ce badge", "error")</script><?php } } else { ?><script type="text/javascript">swal("Oups !", "Ce badge n'est pas à vendre", "error")</script><?php } } else { header('Location: '. $Web->lien .'/index?message=invite'); } ?>
Le problème est tel que lorsque l'utilisateur achète un badge (et que sur la page affichée il y a un autre badge qu'il a déjà acheté) le message affiché est "Tu possèdes déjà ce badge" hors le badge s'achète correctement mais le message affiché est tel que c'est comme si la vérification se faisait au niveau des autres badges inclut ceux déjà achetés..