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 me fait emprunter le mauvais chemin je pense ...

Voici mon code (P.S.: les commentaires sont des tentatives pour trouver une solution):

<?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 Pokedex (environ 150 id):

[{
    "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
    }
  },

Un extrait du json Types :

[
  {
    "english": "Normal",
    "chinese": "一般",
    "japanese": "ノーマル",
    "french": "Normal"
  },
  {
    "english": "Fighting",
    "chinese": "格斗",
    "japanese": "かくとう",
    "french": "Combat"
  },
  {
    "english": "Flying",
    "chinese": "飞行",
    "japanese": "ひこう",
    "french": "Vol"
  },
  {
    "english": "Poison",
    "chinese": "毒",
    "japanese": "どく",
    "french": "Poison"
  },

Si vous aviez des pistes pour m'aider à débloquer la situation, je vous dirais milles merci.

Bonne journée à vous !

Aucune réponse