Bonjour à toutes et à tous!
Je vous sollicite aujourd'hui pour m'aider à débloquer une situation pour laquelle je fais des recherches depuis un certains temps maintenant. Je pense qu'il s'agit d'une question de logique qui me fait défaut, mais j'aimerai avoir votre avis et vos connaissances sur la question.
Voila, je travaille sur la création d'un formulaire de recherche qui pourra afficher une liste en fonction du critère recherché. Dans ce cas, il s'agit d'afficher une liste de Pokémon en fonction du type. Pour ce faire, je dois utilisé le langage Php.
Les données sont stockés dans 2 fichiers Json, l'un avec tous les Pokémon et leurs caractéristiques(dont le type pour chacun); et l'autre avec les différents types.
J'ai réussi à extraire les données json avec la fonction json_decode() et à isoler les types. L'idée étant de les comparer, et s'il y a une similitude alors afficher les Pokémon correspondant sous forme de tableau html bootstrap.
Ma logique ne me fait pas emprunter le bon chemin je pense ...
Voici mon code (P.S.: les commentaires sont des tentatives pour trouver une solution):
Un extrait du Json Pokedex (environ 150 id):
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157 <?php $typesJson = file_get_contents("types.json"); $tableauTypes = json_decode($typesJson, true); //var_dump($tableauTypes); $pokedexJson = file_get_contents("pokedex.json"); $tableauPokedex = json_decode($pokedexJson, true); //var_dump($tableauPokedex); foreach ($tableauPokedex as $key => $value) { //echo '<pre>'.print_r($value['type']).'</pre>'; foreach ($value['type'] as $key1 => $value1) { //echo '<pre>'.$key1.':'. ' '. $value1.'</pre>'; } } // $result = array_intersect($tableauTypes, $tableauPokedex); // echo '<pre'; // echo print_r($result); // echo '</pre>'; // $new_array = array(); // foreach ($tableauPokedex as $item) { // array_push($new_array, array('type' => $item['type'])); // } // var_dump($new_array); // foreach ($new_array as $key => $value) { // //echo $value; // foreach ($value as $key1 => $value1) { // //echo $value1; // foreach ($value1 as $key2 => $value2) { // echo $value2; // } // } // } // var_dump($tableauTypes); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Liste des pokémons grâce à un formulaire</title> <meta name="author" content=""> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap-reboot.min.css" integrity="sha512-YmRhY1UctqTkuyEizDjgJcnn0Knu5tdpv09KUI003L5tjfn2YGxhujqXEFE7fqFgRlqU/jeTI+K7fFurBnRAhg==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap-grid.min.css" integrity="sha512-QTQigm89ZvHzwoJ/NgJPghQPegLIwnXuOXWEdAjjOvpE9uaBGeI05+auj0RjYVr86gtMaBJRKi8hWZVsrVe/Ug==" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css" integrity="sha512-oc9+XSs1H243/FRN9Rw62Fn8EtxjEYWHXRvjS43YtueEewbS6ObfXcJNyohjHqVKFPoXXUxwc+q1K7Dee6vv9g==" crossorigin="anonymous" /> </head> <body> <div class="container"> <div class="row"> <div class="col-12"> <form method="POST" action=""> <div class="mb-3"> <select name="typesSelect" class="form-select form-control" aria-label="Default select example"> <?php foreach ($tableauTypes as $key => $value) { echo '<option name="toutLesTypes" value="' . $value['french'] . '">' . $value['french'] . '</option>'; } ?> </select> </div> <div> <input class="btn-outline-success btn btn-lg" type="submit" name="validate" value="Valider"> </div> </form> </div> </div> <?php if(isset($_POST['validate'])) { foreach ($tableauPokedex as $key => $value) { //echo '<pre>'.print_r($value['type']).'</pre>'; foreach ($value['type'] as $key1 => $value1) { //echo '<pre>' . $key1 . ':' . ' ' . $value1 . '</pre>'; } } $result = array_intersect($tableauTypes, $value['type']); echo '<pre'; echo $result; echo '</pre>'; if (isset($_POST['typesSelect']) == $value1 ) { echo '<div class="row"> <div class="col-12"> <table class="table"> <thead> <tr> <td>#</td> <td>Image</td> <td>Nom</td> <td>Types</td> </tr> </thead> <tbody>'; $num = 1; for ($i = 0; $i < count($tableauPokedex); $i++) { echo '<tr>'; echo '<td>' . $tableauPokedex[$i]['id'] . '</td>'; $image = sprintf("%'.03d\n", $num); echo '<td><img width="50" src="./thumbnails/' . $image . '.png"></td>'; $num++; echo '<td>' . $tableauPokedex[$i]['name']['french'] . '</td>'; echo '<td>'; echo '</td>'; echo '</tr>'; } '</tbody> </table> </div> </div>'; } } ?> </div> </body> </html>
Un extrait du json Types :
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 [{ "id": 1, "name": { "english": "Bulbasaur", "japanese": "フシギダネ", "chinese": "妙蛙种子", "french": "Bulbizarre" }, "type": [ "Plante", "Poison" ], "base": { "HP": 45, "Attack": 49, "Defense": 49, "Sp. Attack": 65, "Sp. Defense": 65, "Speed": 45 } }, { "id": 2, "name": { "english": "Ivysaur", "japanese": "フシギソウ", "chinese": "妙蛙草", "french": "Herbizarre" }, "type": [ "Plante", "Poison" ], "base": { "HP": 60, "Attack": 62, "Defense": 63, "Sp. Attack": 80, "Sp. Defense": 80, "Speed": 60 } },
Si vous aviez des pistes pour m'aider à débloquer la situation, je vous dirais milles merci.
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 [ { "english": "Normal", "chinese": "一般", "japanese": "ノーマル", "french": "Normal" }, { "english": "Fighting", "chinese": "格斗", "japanese": "かくとう", "french": "Combat" }, { "english": "Flying", "chinese": "飞行", "japanese": "ひこう", "french": "Vol" }, { "english": "Poison", "chinese": "毒", "japanese": "どく", "french": "Poison" },
Bonne journée à vous !







Répondre avec citation
Partager