Yii Framework Forum: [Résolu] Problème avec YiiDebug - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Résolu] Problème avec YiiDebug Rate Topic: -----

#1 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 12 June 2011 - 04:08 PM

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

    echo $films["0"]['titre'];
   
?>


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 :/


<?php
while ($i < $NbResult)
{
    echo $films[$i]['titre'];

    $i++;
}


?>



PHP Error

Undefined index: titre



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
while ($i < $NbResult)
{
    echo $films[$i]['titre'];
    foreach ($films[$i] as $info)
    {
        echo $info;
    }
    $i++;
}


?>

0

#2 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 647
  • Joined: 29-November 08
  • Location:Paris, France

Posted 13 June 2011 - 03:03 AM

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)
0

#3 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 13 June 2011 - 04:11 AM

Bonjour,

Toujours aussi réactif raoul, sa fait plaisir.

Lorsque je fais :

echo CVarDumper::dumpsAsString($films);


j'obtiens une erreur :

Quote

Fatal error: Call to undefined method CVarDumper::dumpsAsString() in /var/www/yii-1.1.7/openmind/protected/views/films/create.php on line 34



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 ...
0

#4 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 647
  • Joined: 29-November 08
  • Location:Paris, France

Posted 13 June 2011 - 06:50 AM

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 ? ;)
0

#5 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 13 June 2011 - 10:35 AM

View PostRaoul, on 13 June 2011 - 06:50 AM, said:

humm ... étrange.
Essayes de mettre des guillemets autour de $i pour voir ...

<?php
$NbResult=count($films);

while ($i < $NbResult)
{
	echo $films["$i"]['titre'];
	
	$i++;
}?>

vr
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 ...
0

#6 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 647
  • Joined: 29-November 08
  • Location:Paris, France

Posted 13 June 2011 - 01:29 PM

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)
0

#7 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 13 June 2011 - 02:21 PM

Bonsoir,

Non ce n'est pas un problème de pluriel, par contre à force de bidouiller je me suis aperçu que j'écris :
<?php 
$i = "0";
echo $films[$i]['titre'];
?>


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

Par contre si je fais :
<?php
while ($i < $NbResult)
{
    echo $films[$i]['titre'];
    $i++;       
}?>

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 ...
0

#8 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 647
  • Joined: 29-November 08
  • Location:Paris, France

Posted 14 June 2011 - 02:25 AM

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)
1

#9 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 14 June 2011 - 03:02 AM

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 :
Array
(
    [0] => Array
        (
            [id] => 19776
            [titre-original] => The Matrix
            [titre] => Matrix
            [annee-production] => 1999
            [casting] => Larry Wachowski, Andy Wachowski, Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, Hugo Weaving, Joe Pantoliano
            [poster] => http://images.allocine.fr/medias/04/34/49/043449_af.jpg
        )

    [1] => Array
        (
            [id] => 28546
            [titre-original] => The Matrix Revolutions
            [titre] => Matrix Revolutions
            [annee-production] => 2002
            [casting] => Andy Wachowski, Larry Wachowski, Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, Hugo Weaving, Jada Pinkett Smith
            [poster] => http://images.allocine.fr/medias/nmedia/18/35/14/64/18364977.jpg
        )

    [2] => Array
        (
            [id] => 28540
            [titre-original] => The Matrix Reloaded
            [titre] => Matrix Reloaded
            [annee-production] => 2002
            [casting] => Andy Wachowski, Larry Wachowski, Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, David Roberts, Hugo Weaving
            [poster] => http://images.allocine.fr/medias/nmedia/00/02/53/34/affiche.jpg
        )

    [3] => Array
        (
            [id] => 174412
            [titre-original] => The Matrix New Generation
            [titre] => Matrix NG
            [annee-production] => 2005
            [casting] => Yannik Ladegaillerie, Arno Minetti, Jean-Baptiste Bregeon, Jean-Baptiste Robin, Lamine Sylla, Pierre Marty
            [poster] => http://images.allocine.fr/medias/nmedia/18/73/06/67/19188764.jpg
        )

    [4] => Array
        (
            [id] => 180459
            [titre-original] => Sex and the Matrix
            [annee-production] => 2000
            [casting] => Joel Gallen, Sarah Jessica Parker, Kim Cattrall, Kristin Davis, Cynthia Nixon, Jimmy Fallon
        )

    [5] => Array
        (
            [id] => 177011
            [titre-original] => Matrix III
            [annee-production] => 1972
        )

    [6] => Array
        (
            [id] => 30763
            [titre-original] => Commando
            [annee-production] => 1985
            [casting] => Mark L. Lester, Arnold Schwarzenegger, Rae Dawn Chong, Dan Hedaya, Vernon Wells, Alyssa Milano
            [poster] => http://images.allocine.fr/medias/nmedia/18/36/14/93/18455837.jpg
        )

)


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 !
0

#10 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 647
  • Joined: 29-November 08
  • Location:Paris, France

Posted 14 June 2011 - 04:38 AM

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

8)
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users