[RESOLU] double condition foreach

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] double condition foreach

Re: double condition foreach

par Saian » 14 mai 2015, 16:23

Je t'en prie. J'espère que tu as bien compris d'où venaient tes erreurs. ;)

PS : tu peux t'épargner les parenthèses sur les echo.
echo '<table>';
foreach ($fixtures->fixtures as $game) {
  if($game->status == 'FINISHED') {
    echo '<tr>';
    echo '<td>'.$game->homeTeamName.'</td>';
    echo '<td>'.$game->result->goalsAwayTeam.'</a></td>';
    echo '<td>'.$game->date.'</td>';
    echo '<td>'.$game->awayTeamName.'</td>';
    echo '<td>'.$game->result->goalsAwayTeam.'</td>';
    echo '</tr>';
  }
}
echo '</table>';

Re: double condition foreach

par banania » 14 mai 2015, 16:19

CA MARCHE tes un dieu <3
Merci beaucoup de m'avoir aidé :)

Re: double condition foreach

par Saian » 14 mai 2015, 16:17

Testes le code édité, à moins que je n'ai pas compris, ça devrait bien fonctionner.

Re: double condition foreach

par banania » 14 mai 2015, 16:17

http://api.football-data.org/alpha/socc ... 5/fixtures
voici le lien ou est pris les données
je ne sait plus comment j'ai fait pour que les données soient triées sur la page net

Re: double condition foreach

par banania » 14 mai 2015, 16:12

ba du coup ca n'affiche rien en fait ^^
il n'y a pas d'erreur lorsque je remplace les $value par $fixtures, mais ca n'affiche plus rien.

EDIT
là, on a un unique match qui est répété plusieurs fois x) (il n'y a qu'un seul match en tout et pour tout)

Re: double condition foreach

par Saian » 14 mai 2015, 15:56

Ca veut dire que tu essaies d'accéder à une propriété non définie sur l'objet.

D'après le code ça serait plutôt :
if ($value->status == 'FINISHED')
Et dans ce cas, $key n'étant jamais utilisé, j'écrirais plutôt :
foreach ($fixtures->fixtures as $game){
  if($game->status == 'FINISHED') {
et remplacerais tous les $value par $game, le code n'en serait que plus lisible :
echo '<table>';
foreach ($fixtures->fixtures as $game) {
  if($game->status == 'FINISHED') {
    echo('<tr>');
    echo('<td>'.$game->homeTeamName.'</td>');
    echo('<td>'.$game->result->goalsAwayTeam.'</a></td>');
    echo('<td>'.$game->date.'</td>');
    echo('<td>'.$game->awayTeamName.'</td>');
    echo('<td>'.$game->result->goalsAwayTeam.'</td>');
    echo('</tr>');
  }
}
echo('</table>');
EDIT
Petite modification de code.

Re: double condition foreach

par banania » 14 mai 2015, 15:52

j'ai fait ce que tu m'a proposé : le probleme n'est plus sur finished mais ca donne ca:
udefined property stdClass::$status
que veut dire udefined property?
Merci de votre aide

Re: double condition foreach

par banania » 14 mai 2015, 15:49

ben je pense que vous avez raison parce que l'erreur est :use of undefined constant FINISHED
mais comment faire autrement?
Par exemple, sur l'api, j'ai la liste de tous les match de foot de ligue1 et je veut séparer tous les match finis des match pas encore joués, (comme si je voulais avoir tous les match ou il y eu 1 but)
Sur l'api, j'ai ca pour chaque match de ligue1 :
"date": "2014-08-08T18:30:00Z",
"status": "FINISHED",
"matchday": 1,
"homeTeamName": "Stade Reims",
"awayTeamName": "Paris SG",
"result": {
"goalsHomeTeam": 2,
"goalsAwayTeam": 2

Re: double condition foreach

par Saian » 14 mai 2015, 15:48

Oui donc il semblerait bien que ce ne soit pas une constante.

Dans ce cas la ligne devrait être :
if ($fixtures->status == 'FINISHED')
Quand tu mets FINISHED sans guillemets ou apostrophes autour, il s'agit d'une constante qui en l’occurrence n'est certainement pas définie.

Et comme le suggère tof73 tu devrais probablement encapsuler tout le <tr></tr> dans des accolades du if.

Re: double condition foreach

par banania » 14 mai 2015, 15:44

FINISHED c'est une valeur que prend status sur l'API,; c'est entre autre une valeur que l'on peut résupérer, disant si le match de foot et finit ou bien pas encore joué
(par exemple comme 'nombre de match joués par l'equipe' qui prend une valeur)

Re: double condition foreach

par Saian » 14 mai 2015, 15:42

Probablement tof73 mais pour l'erreur je pense que FINISHED n'est pas une constante et que c'est ce qui provoque l'erreur.

Re: double condition foreach

par tof73 » 14 mai 2015, 15:34

il doit manquer le { à la fin de la ligne if
et le }

Re: double condition foreach

par Saian » 14 mai 2015, 15:29

Salut, FINISHED c'est quoi ? une constante ?

double condition foreach

par banania » 14 mai 2015, 15:24

Bonjour,
J'ai un probleme : je n'arrive pas a mettre une double condition sur le foreach
En fait je récupere des données sur une API, et je tente de les trier (mais je n'y arrive pas x)
Je veut récuperer tous les match dont le status est FINISHED : c'est la ligne avec if (et c'est la le probleme)
sans cette ligne, j'obtient tous les match, et avec cela ne fonctionne plus ( erreur unspected -> à la ligne du if)
avez vous une solution ou des idées pour corriger cela?
(n'hésitez pas a demander des précisions, je ne savait pas trop comment décrire mon probleme)

Voici le code:
foreach ($fixtures->fixtures as $key => $value){
		if ($fixtures->status==FINISHED) 
     echo('<tr>');
            echo('<td>'.$value->homeTeamName.'</td>');
			echo('<td>'.$value->result->goalsAwayTeam.'</a></td>');
            echo('<td>'.$value->date.'</td>');
			echo('<td>'.$value->awayTeamName.'</td>');
			echo('<td>'.$value->result->goalsAwayTeam.'</td>');
        echo('</tr>');
		
    }
    
	echo('</table>');