Erreur dans une variable
Résolu
jobouille
Messages postés
286
Date d'inscription
Statut
Membre
Dernière intervention
-
Yuh12 Messages postés 184 Date d'inscription Statut Membre Dernière intervention -
Yuh12 Messages postés 184 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Sur mon site j'ai fait un petit système de marché virtuel.
Ici, lorsqu'on achète du Blé ($Ble), celui-ci coûte 3 pièces d'or ($piecedor) et on est limité à 20 articles ($articles) toutes les 12h.
Tout fonctionne parfaitement sauf la variable $articles :
je m'explique, si on achète 3 blé par exemple alors $articles = $articles + 3 blé. $articles ne doit jamais dépasser 20 et quand il est à 20 alors le membre doit attendre 12h.
Cette variable $articles fonctionne une fois sur deux ce qui est assez gênant.
Le code est assez long mais j'espère que vous saurez me dire quoi changer :
Merci et bonne journée
Sur mon site j'ai fait un petit système de marché virtuel.
Ici, lorsqu'on achète du Blé ($Ble), celui-ci coûte 3 pièces d'or ($piecedor) et on est limité à 20 articles ($articles) toutes les 12h.
Tout fonctionne parfaitement sauf la variable $articles :
je m'explique, si on achète 3 blé par exemple alors $articles = $articles + 3 blé. $articles ne doit jamais dépasser 20 et quand il est à 20 alors le membre doit attendre 12h.
Cette variable $articles fonctionne une fois sur deux ce qui est assez gênant.
Le code est assez long mais j'espère que vous saurez me dire quoi changer :
$erreur =""; $datetime1 = strtotime($user['articlesT']); $now = date('Y-m-d H:i:s'); $datetime2 = strtotime($now); $interval = abs($datetime2 - $datetime1); $hours= round($interval / 3600); $id = isset($_SESSION['id'])?$_SESSION['id']:NULL; $articles = $user['articles']; $achat = $user['achat']; if(isset($_SESSION['id'])) { if($user['mission'] <= 4) { header ('Location: ma_ferme.php'); } //DEBUT CODE ACHAT BLE if(isset($_POST['achatBle'])) { if(htmlspecialchars($_POST['qttBle'])) { $qttBle = htmlspecialchars($_POST['qttBle']); if(ctype_digit($qttBle) === true) { $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?"); $requser->execute(array($_SESSION['id'])); $user = $requser->fetch(); $Ble = $user['Ble']; $piecedor = $user['piecedor']; if($achat != 1) { if($piecedor >= $qttBle * 3) { $articles = $user['articles']; if($articles + $qttBle <= 20) { $Ble = $Ble + $qttBle; $piecedor = $piecedor - (3 * $qttBle); $pieceObtenue = 3 * $qttBle; $articles = $articles + $qttBle; $reqoper = $bdd->prepare("UPDATE membres SET Ble = ?, piecedor = ?, articles = ? WHERE id = ?"); $reqoper->execute(array($Ble, $piecedor, $articles, $_SESSION['id'])); $erreur ='Vous avez acheté '.$qttBle.' épis de Blé contre '.$pieceObtenue.' pièces d\'Or !'; header ('Refresh: 2; marche.php'); if($user['mission'] == 5) { $missionok = $bdd->exec('UPDATE membres SET missionOK = 5 WHERE id = '.$_SESSION['id']); } } else { $erreur ='Vous ne pouvez pas acheter plus de 20 articles par jour.'; header ('Refresh: 2; marche.php'); } } else { $erreur = "Vous n'avez pas assez de pièces d'Or."; } } else { $erreur ="Vous devez attendre 12h avant de pouvoir acheter."; } } else { $erreur ='Veuillez saisir un nombre.'; } } } //FIN CODE ACHAT BLE if($articles >= 20 AND $achat != 1) { $sql = "UPDATE membres SET articlesT = '$now' WHERE id = '$id' "; $articlesT = $bdd->exec($sql) or die(print_r($db->errorInfo(), true)); $achat = $bdd->exec('UPDATE membres SET achat = 1 WHERE id = '.$_SESSION['id']); } if($hours > 12 AND $achat != 0) { $achat = $bdd->exec('UPDATE membres SET achat = 0 WHERE id = '.$_SESSION['id']); $articles = $bdd->exec('UPDATE membres SET articles = 0 WHERE id = '.$_SESSION['id']); header ('Location: marche.php'); }
Merci et bonne journée
A voir également:
- Erreur dans une variable
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Une erreur s'est produite instagram ✓ - Forum Instagram
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
1 réponse
Il faut que tu cherche le problème en faisant des
Cela te permettra de voir à quoi il est égal à chaque passage de boucle et certainement d'identifier la source du problème.
La comme ça sans la base, sans tester, cela me parait difficile de te répondre plus précisément (pour ma part).
echo $articles;entre tout tes if.
Cela te permettra de voir à quoi il est égal à chaque passage de boucle et certainement d'identifier la source du problème.
La comme ça sans la base, sans tester, cela me parait difficile de te répondre plus précisément (pour ma part).
Je ne l'ai pas mis entre tous les if car il est constamment affiché.
Faut-il que je mette le "echo $articles" entre tous les if en plus ?
Merci de votre réponse :)
Si tu fais ce genre de test
echo "Test 1 : ".$articles" // dans le 1er if
echo "Test 2 : ".$articles" // dans le 2eme if
etc...
Tu verras ce qu'il vaudra à chaque instant T dans ton code, si le problème c'est qu'à la fin, il ne vaut pas la valeur que tu veux, alors oui affiche le pour savoir quand est-ce qu'il rate le tir.