[Résolu] Problème avec YiiDebug

Bonjour à tous !

J’ai un problème avec yii qui dépasse ma compréhension.

Impossible d’afficher un tableau sans que yii se mette à trouver une erreur dans mon code.

J’ai un tableau $film qui contient plusieurs informations sur des films.

Lorsque je fais un simple :

[PHP]<?php

echo &#036;films[&quot;0&quot;]['titre'];

?>[/PHP]

Il m’affiche le titre du film sans aucun problème. Comme je dispose de plusieurs entrée je fais soit un foreach soit un while pour afficher tout le tableau, mais la il m’affiche une belle erreur 500 :confused:

[PHP]<?php

while ($i < $NbResult)

{

echo &#036;films[&#036;i]['titre'];





&#036;i++;

}

?>[/PHP]

[COLOR="Red"][B]PHP Error

Undefined index: titre [/B][/COLOR]

Pourquoi est-ce que $film[“1”][‘titre’] fonctionne et pas $film[$i][‘titre’] ? Car la je ne vois vraiment pas d’où est-ce que cela pourrait venir …

Par contre si je rajoute un foreach ($film[$i] as $info) et que je fais echo $info il m’affiche tout sans problème.

[PHP]<?php

while ($i < $NbResult)

{

echo &#036;films[&#036;i]['titre'];


foreach (&#036;films[&#036;i] as &#036;info)


{


    echo &#036;info;


}


&#036;i++;

}

?>[/PHP]

Salut co-k-ine

de ce que je vois, il ne s’agit pas d’un problème Yii, juste un problème de PHP, de tableau et d’index non ? Tu peux essayer d’afficher ton tableau films en faisant :


echo CVarDumper::dumpsAsString($films);

… ça te donnera un aperçu du contenu exact de ton tableau, parce que là, à part te dire ‘ya un problème dans la structure/index’, je vois pas trop.

ciao

B)

Bonjour,

Toujours aussi réactif raoul, sa fait plaisir.

Lorsque je fais :


echo CVarDumper::dumpsAsString($films);

j’obtiens une erreur :

Par contre je ne comprend pas pourquoi lorsque je fais :


<?php

echo $film["1"]['titre'] ;

?>

le titre s’affiche, alors que lorsque je fais :


<?php

$NbResult=count($films);


while ($i < $NbResult)

{

    echo $films[$i]['titre'];

    

    $i++;

}?>



J’obtiens l’erreur : “Undefined index”. J’ai juste remplacer $films[“1”], $films[“2”] par $i qui prend exactement les même valeurs … J’avoue ne pas comprendre d’où viens cette erreur …

humm … étrange.

Essayes de mettre des guillemets autour de $i pour voir …




<?php

$NbResult=count($films);


while ($i < $NbResult)

{

	echo $films["$i"]['titre'];

	

	$i++;

}?>



Et c’est bizarre aussi queCVarDumper::dumpAsString() ne fonctionne pas … tu es bien dans un webapp Yii n’est-ce pas ? ;)

Malheureusement sa ne fonctionne pas non plus, et oui je suis bien dans mon wabapp. Je ne comprend vraiment pas …

euh … un truc bête: le nom du tableau c’est bien $film (au singulier) ? Non je dis ça parce que dans ton second message tu écris que ce qui ne marche pas c’est :


echo $films[$i]['titre];

…au pluriel.

A part ça je vois pas …

B)

Bonsoir,

Non ce n’est pas un problème de pluriel, par contre à force de bidouiller je me suis aperçu que j’écris :

[CODE]<?php

$i = "0";

echo $films[$i][‘titre’];

?>[/code]

cela fonctionne correctement, quelque soit la valeur de $i.

Par contre si je fais :

[CODE]<?php

while ($i < $NbResult)

{

echo &#036;films[&#036;i]['titre'];


&#036;i++;       

}?>[/CODE]

cela ne fonctionne pas, et ce qui est étonnant que


echo $films[$i]['titre']; 

fonctionne en dehors d’un while, mais une fois qu’il est dans la boucle, j’obtiens une erreur …

Tu dis que ca fonctionne quelque soit la valeur de $i, mais il y a bien un moment ou $i est trop grand et $films[$i] n’est pas alloué non ?

Combien d’éléments tu as dans ton tableau ?

Sinon essaye ça :




foreach( $films as $i => $value){

	echo "i = $i - titre = ".$value['titre']; 	

   // tu peux aussi afficher carrément le contenu	

   // de value. Il devrait y avoir un index 'titre' et	

   // peut être d'autres ...

   var_dump($value); 

}

C’est peut-être simplement un dépassement de capacité de ton index …

8)

Bonjour,

C’est exactement cela, bien jouer ! Je n’avais tester $i qu’avec de petites valeurs, mais dès que j’entre des grosses valeurs j’obtiens une erreur.

Enfaite en faisant un print_r($films); je me suis rendu compte que tout les tableaux ne disposait pas de la case [‘titre’].

voici le résultat d’un print_r :

[CODE]

Array

(

[0] =&gt; Array


    (


        [id] =&gt; 19776


        [titre-original] =&gt; The Matrix


        [titre] =&gt; Matrix


        [annee-production] =&gt; 1999


        [casting] =&gt; Larry Wachowski, Andy Wachowski, Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, Hugo Weaving, Joe Pantoliano


        [poster] =&gt; http://images.allocine.fr/medias/04/34/49/043449_af.jpg


    )





[1] =&gt; Array


    (


        [id] =&gt; 28546


        [titre-original] =&gt; The Matrix Revolutions


        [titre] =&gt; Matrix Revolutions


        [annee-production] =&gt; 2002


        [casting] =&gt; Andy Wachowski, Larry Wachowski, Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, Hugo Weaving, Jada Pinkett Smith


        [poster] =&gt; http://images.allocine.fr/medias/nmedia/18/35/14/64/18364977.jpg


    )





[2] =&gt; Array


    (


        [id] =&gt; 28540


        [titre-original] =&gt; The Matrix Reloaded


        [titre] =&gt; Matrix Reloaded


        [annee-production] =&gt; 2002


        [casting] =&gt; Andy Wachowski, Larry Wachowski, Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, David Roberts, Hugo Weaving


        [poster] =&gt; http://images.allocine.fr/medias/nmedia/00/02/53/34/affiche.jpg


    )





[3] =&gt; Array


    (


        [id] =&gt; 174412


        [titre-original] =&gt; The Matrix New Generation


        [titre] =&gt; Matrix NG


        [annee-production] =&gt; 2005


        [casting] =&gt; Yannik Ladegaillerie, Arno Minetti, Jean-Baptiste Bregeon, Jean-Baptiste Robin, Lamine Sylla, Pierre Marty


        [poster] =&gt; http://images.allocine.fr/medias/nmedia/18/73/06/67/19188764.jpg


    )





[4] =&gt; Array


    (


        [id] =&gt; 180459


        [titre-original] =&gt; Sex and the Matrix


        [annee-production] =&gt; 2000


        [casting] =&gt; Joel Gallen, Sarah Jessica Parker, Kim Cattrall, Kristin Davis, Cynthia Nixon, Jimmy Fallon


    )





[5] =&gt; Array


    (


        [id] =&gt; 177011


        [titre-original] =&gt; Matrix III


        [annee-production] =&gt; 1972


    )





[6] =&gt; Array


    (


        [id] =&gt; 30763


        [titre-original] =&gt; Commando


        [annee-production] =&gt; 1985


        [casting] =&gt; Mark L. Lester, Arnold Schwarzenegger, Rae Dawn Chong, Dan Hedaya, Vernon Wells, Alyssa Milano


        [poster] =&gt; http://images.allocine.fr/medias/nmedia/18/36/14/93/18455837.jpg


    )

)[/CODE]

du coup un simple :


<?php

foreach ($films as $film)

{

    if (isset($film['titre']))

    {

        echo $film['titre'] ;

    }

}?>

résous le problème.

Merci de ton aide, je me demande pourquoi est-ce que je n’y ai pas pensé avant !! En tout cas je te remercie énormément !

no problemo … parfois moi aussi je bloque sur des trucs à priori évident ;)

Bonne continuation

8)