Bonjour,
J'ai un problème (certainement basique et tout bête) mais je n'arrive pas a le solutionner.
Je travaille sur une API foot.
Cette API me donne les classements des championnats (Nom de l'équipe, Points, Matchs joués, Matchs nuls, Matchs perdu, Nombre de buts marqués, Nombre de buts encaissés et Différence de buts).
Elle ne donne pas la position dans le classement (tout bêtement une numérotation de 1 à n (selon le nombre d'équipes dans le championnat).
Pour afficher des données Json de l'API absolument aucun souci. Tout fonctionne nickel.
Mon souci c'est la numérotation de 1 à n
Je numérote bien en fonction du nombre d'équipe mais je n'arrive pas a placer le rang a coté d'une et une seule equipe.
Mes données sont affichées a l'aide d'une boucle foreach() et chacune d'entre-elles sont dans un tableau 'classique' (table - tr - td ...).
Pour le rang j'ai essayé ma condition dans une boucle for, une boucle while et une boucle do while. la numérotation de 1 à n se fait pour chaque équipe. J'ai mis la boucle dans dans le foreach, à l'extérieur du foreach il n y a rien qui va.
Voici les conditions que j'ai essayé (pour un championnat à 18 équipes)
// ma boucle do... while
$rang = 1;
do
{
echo '<td>'.$rang . '</td><br />';
$rang++;
}
while( $rang <=18 );
// ma boucle while
$rang = 1;
while( $rang <=18 ){
echo '<td>'.$rang++. '</td><br />';
}
// ma boucle for
for($rang=1;$rang<=18;$rang++){
echo '<td>'.$rang. '</td><br />';
}
j'ai placé ces 3 boucles a l'intérieur du foreach (a l'emplacement ou je souhaite afficher le rang)
Voici le code du tableau
$table = file_get_contents("adresse donnée par l'API qui fonctionne puisque j'ai toutes les données affichées");
$parsedTable = json_decode($table,true);
foreach ($parsedTable['table'] as $classements) {
echo '<table>';
echo '<tbody>';
echo '<tr>';
echo "J'ai placé mes boucles avec le $rang à cet endroit";
echo '<td>';
include '../library/equipes_classements.php'; //ici c'est un fichier externe contenant un switch case traduisant le noms des équipes
echo '</td>';
echo '<td>'.$classements['total']. '</td>';
echo '<td>'.$classements['played']. '</td>';
echo '<td>'.$classements['win']. '</td>';
echo '<td>'.$classements['draw']. '</td>';
echo '<td>'.$classements['loss']. '</td>';
echo '<td>'.$classements['goalsfor']. '</td>';
echo '<td>'.$classements['goalsagainst']. '</td>';
echo '<td>'.$classements['goalsdifference']. '</td>';
echo '</tr>';
echo '</tbody>';
echo '</table>';
}
Et mon problème c'est que la numérotation de 1 à 18, je l'obtiens pour chacune des équipes
donc
1 2 3 ... 18 NOM DE L'EQUIPE 1
1 2 3 ... 18 NOM DE L'EQUIPE 2
1 2 3 ... 18 NOM DE L'EQUIPE 3
etc.. jusque l'équipe 18
Merci si quelqu'un peut m'aider (je ne sais pas si j'ai merdé dans les boucles ou si je ne les ai pas incluses au bon endroit dans mon code)
non, non, non
seul le foreach suffit
$rang = 1;
foreach ($parsedTable['table'] as $classements) {
// code
echo $rang;
// code
$rang++;
}
Bonsoir,
il faut te serviir de la boucle foreach avec à l'intérieur un compteur, comme tu l'as fait pour les boucles while et do/while
foreach {
echo $rang;
// tes affichages
$rang++;
}
dans la boucle foreach déjà existente ? ou inclure une boucle foreach dans la boucle foreach ?
oui ou juste après l'avoir affiché.
tout dépant de combien de fois tu l'affiches par ligne
Mais il faut que je passe par une boucle while ? (2 jours que je me prends le chou la dessus). un truc du genre
foreach(...){
while{
}
mes echo;
$rang++;
}
Effectivement ça fonctionne ... Moi qui me cassait a essayer des créer des boucles ... quel idiot :-(
Merci, j'ai le résultat que je souhatais avoir