Bonjour,
Voilà j'ai un gros souçis avec une requête, je suis actuellement en train de faire un petit RPG en HTML avec PHP et Mysql et dans la partie du jeu qui s'occupe de l'inventaire du personnage j'ai un souçis
Voilà mes deux tables:
Contenu de la table car_items:
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 CREATE TABLE IF NOT EXISTS `car_inventory` ( `inventoryItemId` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `inventoryItemCharacterId` int(5) NOT NULL, `inventoryItemItemId` int(5) NOT NULL, `inventoryItemQuantity` int(5) NOT NULL, `inventoryItemEquipped` int(2) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `car_items` ( `itemId` int(11) NOT NULL, `itemRaceId` int(11) NOT NULL, `itemPicture` text NOT NULL, `itemType` varchar(30) NOT NULL, `itemLevel` int(11) NOT NULL, `itemLevelRequired` int(11) NOT NULL, `itemName` varchar(30) NOT NULL, `itemDescription` text NOT NULL, `itemHpEffect` int(11) NOT NULL, `itemMpEffect` int(11) NOT NULL, `itemStrengthEffect` int(11) NOT NULL, `itemMagicEffect` int(11) NOT NULL, `itemAgilityEffect` int(11) NOT NULL, `itemDefenseEffect` int(11) NOT NULL, `itemDefenseMagicEffect` int(11) NOT NULL, `itemWisdomEffect` int(11) NOT NULL, `itemPurchasePrice` int(11) NOT NULL, `itemSalePrice` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Dans la table car_inventory il n'y a que cet enregistrement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 INSERT INTO `car_items` (`itemId`, `itemRaceId`, `itemPicture`, `itemType`, `itemLevel`, `itemLevelRequired`, `itemName`, `itemDescription`, `itemHpEffect`, `itemMpEffect`, `itemStrengthEffect`, `itemMagicEffect`, `itemAgilityEffect`, `itemDefenseEffect`, `itemDefenseMagicEffect`, `itemWisdomEffect`, `itemPurchasePrice`, `itemSalePrice`) VALUES (1, 0, 'http://localhost/item.png', 'Item', 1, 1, 'Potion', 'Cette petite fiole vous rendra 100 HP', 100, 0, 0, 0, 0, 0, 0, 0, 50, 10), (2, 0, 'http://localhost/item.png', 'Item', 1, 1, 'Ether', 'Cette petite fiole vous rendra 10 MP', 0, 10, 0, 0, 0, 0, 0, 0, 50, 10), (3, 0, 'http://localhost/item.png', 'Armor', 1, 1, 'Manteau de laine', 'Ce manteau vous ira a ravir.\r\nCet équipement est disponible pour toutes les classes', 10, 1, 1, 1, 1, 1, 0, 1, 100, 50), (4, 0, 'http://localhost/item.png', 'Boots', 1, 1, 'Botte de laine', 'Ses bottes de laine sont 100% moutons.\r\nCet équipement est disponible pour toutes les classes', 10, 1, 1, 1, 1, 1, 0, 1, 100, 50), (5, 0, 'http://localhost/item.png', 'Gloves', 1, 1, 'Gants de laine', 'Ses gants vous donneront vous protégerons des courants d\'air mais juste pour les mains.\r\nCet équipement est disponible pour toutes les classes', 10, 1, 1, 1, 1, 1, 0, 1, 100, 50), (6, 0, 'http://localhost/item.png', 'Helmet', 1, 1, 'Casque de laine', 'Ce casque vous protégera juste de la pluie.\r\nCet équipement est disponible pour toutes les classes', 10, 1, 1, 1, 1, 1, 0, 1, 100, 50), (7, 0, 'http://localhost/item.png', 'Weapon', 1, 1, 'Boule de laine', 'Cette boule de laine pourra être lancée sur vos ennemis en leur occasionnant peu de dégâts.\r\nCet équipement est disponible pour toutes les classes', 10, 1, 1, 1, 1, 1, 0, 1, 100, 50);
Et pourtant quand je fais cette requêtes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO `car_inventory` (`inventoryItemId`, `inventoryItemCharacterId`, `inventoryItemItemId`, `inventoryItemQuantity`, `inventoryItemEquipped`) VALUES (1, 1, 7, 1, 1);
Il me sort 4 objets... Alors que dans la table car_inventory le joueur n'en possède que un seul avec l'Id 7 soit l'arme boule de laine (drôle de nom je sais ^^)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT * FROM car_items, car_inventory WHERE itemId = inventoryItemItemId AND itemType = 'Armor' OR itemType = 'Boots' OR itemType = 'Gloves' OR itemType = 'Helmet' OR itemType = 'Weapon' AND inventoryItemCharacterId = ? ORDER BY itemType
Mais alors pourquoi est-ce que il me sort 4 objets supplémentaire...
Voici le resulat:
Merci beaucoup de votre aide car là je suis perdu.
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 127.0.0.1/caranille/car_inventory/ http://localhost/phpmyadmin/tbl_sql.php?db=caranille&table=car_inventory La sélection courante ne contient pas de colonne unique. Les grilles d'édition, les cases à cocher ainsi que les liens Éditer, Copier et Supprimer ne sont pas disponibles. Affichage des lignes 0 - 3 (total de 4, traité en 0,0000 seconde(s)) SELECT * FROM car_items, car_inventory WHERE itemId = inventoryItemItemId AND itemType = 'Armor' OR itemType = 'Boots' OR itemType = 'Gloves' OR itemType = 'Helmet' OR itemType = 'Weapon' AND inventoryItemCharacterId = 1 ORDER BY itemType itemId itemRaceId itemPicture itemType itemLevel itemLevelRequired itemName itemDescription itemHpEffect itemMpEffect itemStrengthEffect itemMagicEffect itemAgilityEffect itemDefenseEffect itemDefenseMagicEffect itemWisdomEffect itemPurchasePrice itemSalePrice inventoryItemId inventoryItemCharacterId inventoryItemItemId inventoryItemQuantity inventoryItemEquipped 4 0 http://localhost/item.png Boots 1 1 Botte de laine Ses bottes de laine sont 100% moutons. Cet équipe... 10 1 1 1 1 1 0 1 100 50 1 1 7 1 1 5 0 http://localhost/item.png Gloves 1 1 Gants de laine Ses gants vous donneront vous protégerons des cour... 10 1 1 1 1 1 0 1 100 50 1 1 7 1 1 6 0 http://localhost/item.png Helmet 1 1 Casque de laine Ce casque vous protégera juste de la pluie. Cet é... 10 1 1 1 1 1 0 1 100 50 1 1 7 1 1 7 0 http://localhost/item.png Weapon 1 1 Boule de laine Cette boule de laine pourra être lancée sur vos en... 10 1 1 1 1 1 0 1 100 50 1 1 7 1 1
En gros il faut que la requête recherche l'objet dans car_items avec l'enregistrement dans la table car_inventory Et il faut que l'objet soit de type soit Armor, Boots, Helmet, Gloves ou Weapon car il y a d'autre type d'objet comme des potions mais là je ne cherche à afficher que les objets de type équipement
Cordialement,
Partager