Bonjour,
Je suis désolé que le titre ne soit pas évocateur... mais moi même j'n'arrive pas à mettre un "mot" sur ce qui se passe.
J'ai 2 méthodes dans une classe.
L'une permet de me sortir les infos d'un Objet d'inventaire en fonction de l'ID
L'autre permet de déséquiper l'objet (s'il est équipé).
J'ai 3 tests avec 3 if... y en a un (le plus important j'dirais sur le coup) qui est "complètement ignoré"...
Il doit y avoir une erreur... mais "où" ? J'dois être trop fatigué ou trop concentré dessus pour la voir.
Voici les méthodes
Alors, dans la méthode DonnerInventaireInfos, j'ai bien vérifié que $this->Pj->Pe_Caracs->Pe_Id ne soit pas null... et il ne l'est pas donc le soucis ne vient pas de là. D'ailleurs pour $this->Pj->Pe_Caracs->Pe_XP, aucun soucis non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public function DonnerInventaireInfos($A_InId) { if(is_numeric($A_InId)) { $L_Requete = $this->db->query("SELECT * FROM Inventaire WHERE In_Id='{$A_InId}' AND Pe_Id='{$this->Pj->Pe_Caracs->Pe_Id}'"); if($L_Requete->num_rows <= 0) { $L_Requete->close(); return false; } else return $L_Requete->fetch_object(); } else { return false; } } public function DesequiperObjet($A_InId) { //on vérifie que le joueur a assez de PA if($this->Pj->Pe_Caracs->Pe_PA < 1) { header("location:inventaire.php?Alerte=PA insuffisants"); } //on vérifie qu'on a bien la place dans l'inventaire if(!$L_InventaireInfos = $this->DonnerInventaireInfos($A_InId)) { header("location:inventaire.php?Erreur=Vous ne possedez pas cet objet"); } //on vérifie que l'objet est bien équipé if($L_InventaireInfos->In_Equiper == 0) { header("location:inventaire.php?Alerte=Vous ne pouvez déséquiper cet objet"); } //on déséquipe ...
Si dans la méthode 2 $A_InId = 3 (une partie de l'équipement appartenant à Pe_Id), alors aucun soucis.
Par contre, si $A_InId = 75 (une partie qui n'existe pas)... il me dit "Vous ne pouvez déséquiper cet objet"... au lieu de "Vous ne possédez pas cet objet".
J'ai testé avec ma BDD, il n'y a pas résultat pour Pe_Id = 2 AND In_Id=75.
Donc logiquement, $L_InventaireInfos est à false (car la méthode 1 retourne false) et donc on entre dans le (if!...) et il est sensé retourner "Vous ne possédez pas cet objet".
Pour vérifier, j'ai fait un var_dump sur $L_InventaireInfos et il me dit bien bool(false).
Ca doit être une bête erreur d'inattention... mais ou est-elle :'(
Merci de votre aide








Répondre avec citation
Partager