Ma méthode construit un tableau a 2 dimsensionsJ'ai essayé ton système avec les array, mais j'ai pas tout compris, je n'arrive pas à affecter une variable à chaque catégories![]()
//le compteur de ligne commence a 2 puisque les 2 premières lignes ne correpondent pas aux résultats des matchs
$match[2][0] // ville 1
$match[2][1] // score 1
$match[2][3] // score 2
$match[2][4] // ville 2
Mais laisse cette méthode de coté puisque tu peut modifier les fichier et y ajouter des caractères de séparation.list($equipe1, $score, $equipe2) = explode("|", $ligne);
c'est ok si le caractère s'y trouve mais provoque ces erreurs sinon.if(substr_count($ligne, '|') >0 )
substr_count() compte le nombre d'occurences de ' | " si ce nombre est supperieur a 0 (donc on se trouve sur une ligne de résultats) alors on ajoute a la liste Code : Tout sélectionner
if(substr_count($ligne, '|') > 0 ) // si le caractère | est présent dans la ligne
{
list($equipe1, $score, $equipe2) = explode("|", $ligne); // défni chaque variable séparé par le symbole |
echo "
<tr>
<td>$equipe1</td>
<td>$score</td>
<td>$equipe2</td>
</tr>";
}
elseif (!empty($ligne)) // si la ligne n'est pas vide
{
echo "<tr><th colspan=\"3\">$ligne</th></tr>"; // inscrit la ligne
}
else
{
$ligne = "";
}
}
oui un retour a la ligne correspond a ceci => "\r\n". Tu dois donc remplacer ton test avec empty() parCela ne fonctionne pas, les lignes vides ne sont pas considérées vides, comment je dois lui dire ?
Un retour à la ligne est-il considéré comme un caractères ?
elseif ($ligne != "\r\n")
ah ben oui, pas besoin de tester pour savoir que ça va planter en boucle infinie, ton fichier ne l'est pas donc pourquoi faire une boucle qui est infinieEnsuite, j'ai essayé de mettre deux journées, donc en mettant tout le code dans une autre boucle infinie, j'ai fait planté mon navigateur à chaque fois
while (!feof($statfoot))
{
..
while ($compteur < 15
{
...
}
}
Tu est parti sur cette voie donc tu as 2 boucles, mais en mettant en condition la lecture de ligne tu aurai pu te contenter d'une boucle:
while ($ligne = fgets($statfoot))
a toi de voir ce que tu comprends le mieux.il va falloir que je divise la variable $score en deux autres variables(...) j'avais pensé à faire la même chose que précédemment en utilisant explode("-"),
$fichierFootD2 = 'resultatsD2.txt';
echo "<table id=\"resultats\">";
if (file_exists($fichierFootD2)) // si le fichier est accessible
{
$statfoot = fopen("resultatsD2.txt", "r"); // ouverture du fichier en lecture
while ($ligne = fgets($statfoot)) // tant qu'il y a des lignes à lire dans le fichier
{
if(substr_count($ligne, '|') > 0 ) // si le caractère | est présent dans la ligne
{
list($equipe1, $score, $equipe2) = explode("|", $ligne); // défni chaque variable séparé par le symbole |
echo "
<tr>
<td>$equipe1</td>
<td>$score</td>
<td>$equipe2</td>
</tr>";
}
elseif ($ligne != "\r\n") // si la ligne ne contient pas de retour à la ligne
{
echo "<tr><th colspan=\"3\">$ligne</th></tr>"; // inscrit la ligne
}
else // sinon $ligne ne vaut rien
{
$ligne = "";
}
}
fclose($statfoot); // fermeture du fichier
}
else
{ // sinon retourne cette erreur
echo "<tr><td>Erreur 10 (accès au fichier)</td></tr>";
}
echo "</table>";
Après, j'essaierais de me débrouiller tout seul ^^
Euh .. j'ai pas trop compris la1- Maintenant que mes tableaux fonctionnent, que je sais comment faire pour séparer une chaine de caractères, j'aurais besoin d'une piste afin de pouvoir affecter une variable à une autre, dans mon code cela voudrait dire que la variable $equipe1 recevra toujours comme variable $score1 qui représentera donc le 1er chiffre du score.
2- Comment faire une addition de chaque ligne pour la variable $score1 et $score2, qui représenteront le 1er et 2ème chiffre du score, faire une opération sur la même ligne, ça je saurais je pense le faire, mais sur plusieurs lignes ?
faudrait-il que je créé encore une nouvelle variable ?
list($score1, $score2) = explode("-", $score);
$score1+=$score2; // revient a faire $score1=$score1+$score2;
//tu aura le total dans $score1
non, c'est pas ce que tu voudrai ?En fait c'est pas vraiment une affectation, mais une correspondance, $equipe1 sera vérifier pour déterminer si c'est telle ou telle équipe (ça je saurais le faire), et ensuite après identification, récupérer donc la valeur de $score1 ou $score2 selon si elle dans la variable $equipe1 ou $equipe2.Euh .. j'ai pas trop compris la![]()
affecter le contenu d'un variable a une autre:
$equipe1=$score1 ou $equipe1.=$score1![]()
tu peut donner un exemple ou préciser ?
Oui, pour ça j'avais compris, mais ce que je voudrais, c'est récupérer la valeur de $score1 et $score2 de chaque lignes, et qu'une autre variable en récupère la valeur et ainsi en fasses l'addition, un tableau normal quoi, avec la somme des $score1 et $score2 pour avoir le nombre de but de chaque journée.Encore une fois je vois pas ou tu veut en venir... ajouter des scores![]()
Mais tu as une variable ($score) qui contient les 2 scores séparés par "-", tu peut donc faire un explode dessus comme tu l'avais dis dans le message d'avant.non, c'est pas ce que tu voudrai ?list($score1, $score2) = explode("-", $score); $score1+=$score2; // revient a faire $score1=$score1+$score2; //tu aura le total dans $score1
Je ne voit pas le probleme dans tous les cas $score1 contiendra le scrore de l'equipe 1 ($equipe1) respectivement $score2 et equipe 2.et ensuite après identification, récupérer donc la valeur de $score1 ou $score2 selon si elle dans la variable $equipe1 ou $equipe2.
La c'est plus clair(...) et ainsi en fasses l'addition, un tableau normal quoi, avec la somme des $score1 et $score2 pour avoir le nombre de but de chaque journée.
tu as certainement un ou des espaces sur ces lignes, pour que le teste fonctionne correctement il ne faut y avoir qu'un saut de ligne. Mais tu peut faire autrement avec trim() et ainsi remplacer:J'ai un nouveau souci, (...) et les lignes vides sont affichées dans des <th>, comment faire pour obtenir le même résultat qu'en local, et ainsi que les lignes vides ne soient pas affichées ?
elseif ($ligne != "\r\n")
par
elseif (trim($ligne) != "")Oui en fait j'étais parti sur quelquechose de compliqué, en faisant comme tu dis, c'est effectivement plus simple :pJe ne voit pas le probleme dans tous les cas $score1 contiendra le scrore de l'equipe 1 ($equipe1) respectivement $score2 et equipe 2.
J'ai essayé, mais je n'arrive pas à réinitialiser la variable à 0, et l'inscrire dans mon tableau à chaque fois qu'elle a atteint 10, qu'est ce que je fais de travers ?La c'est plus clair
Donc il faut que tu initialise une variable a 0 avant la boucle qui prend sur chaque ligne le total de but (avec le code montré précédemment, par exemple). Mais l'addition ne doit se faire que sur les 10 lignes de scores ensuite affiché et remis a 0 pour les journées suivantes.
<?php
$fichierFootD2 = 'resultatsD2.txt';
echo "<table id="resultats">";
if (file_exists($fichierFootD2)) // si le fichier est accessible
{
$statfoot = fopen("resultatsD2.txt", "r"); // ouverture du fichier en lecture
$totalScore1 = 0;
while ($ligne = fgets($statfoot)) // tant qu'il y a des lignes à lire dans le fichier
{
if(substr_count($ligne, '|') > 0 ) // si le caractère | est présent dans la ligne
{
list($equipe1, $score, $equipe2) = explode("|", $ligne); // défni chaque variable séparé par le symbole |
echo "
<tr>
<td >$equipe1</td>
<td>$score</td>
<td>$equipe2</td>
</tr>";
list($score1, $score2) = explode("-", $score); // separe les chiffres de $score en deux variables
$compteur = 1;
for ($compteur; $compteur <= 10; $compteur++) // compteur pour chaque journée
{
$totalScore1 = $totalScore1 + $score1; // additionne le nombre de $score1 de chaque ligne
if ($compteur = 10)
{
echo "<tr><td colspan="3">Total buts à domicile : $totalScore1</td></tr>";
$totalScore = 0;
}
}
}
elseif (trim($ligne)!= "") // si la ligne ne contient pas de retour à la ligne
{
echo "<tr><th colspan="3">$ligne</th></tr>"; // inscrit la ligne
}
else // sinon $ligne ne vaut rien
{
$ligne = "";
}
}
fclose($statfoot); // fermeture du fichier
}
else
{ // sinon retourne cette erreur
echo "<tr><td>Erreur 10 (accès au fichier)</td></tr>";
}
echo "</table>";
?>
Merci, ça fonctionne impectu as certainement un ou des espaces sur ces lignes, pour que le teste fonctionne correctement il ne faut y avoir qu'un saut de ligne. Mais tu peut faire autrement avec trim() et ainsi remplacer:
PHP:parelseif ($ligne != "\r\n")
PHP:elseif (trim($ligne) != "")