Couler du contenu dans un Array (parse error)

Petit nouveau ! | 7 Messages

30 mai 2009, 17:59

Hello,

voici la situation:

je dois afficher des données dans un graph google, un type a dev une classe qui permet d'utiliser php pour couler les donnes d'une bdd dans le graph (à la base tout est en js). J'ai donc fait une requette mysql + quelques traitements de dates afin de sortir des lignes de ce type :
array(0, 0, 'new Date(2009, 05 ,22)'), array(0, 1, 1),
array(1, 0, 'new Date(2009, 05 ,23)'), array(1, 1, 1),
array(2, 0, 'new Date(2009, 05 ,24)'), array(2, 1, 2077),
array(3, 0, 'new Date(2009, 05 ,25)'), array(3, 1, 9),
(ce que vous voyez au dessus est le résultat de cet echo :
echo "array($i, 0, 'new Date($annee, ".$arr["translatemonth"]["$mois"]." ,$jour)'),
          array($i, 1, $resultat2[0]),</br>";
Mon but est que les lignes resultantes de cet echo se placent dans le bout de code suivant:
->setValues(
			 array(
A PLACER ICI
)
		);
Le problème c'est que echo "$contenu"; (une variable qui contient mon code) me renvoie un parse error que voici Parse error: parse error, expecting `')'' in test.php on line 35

J'ai essayé avec des var dump, print_r et ça bug tout le temps. Pour finir, ça marche nickel si je copie colle mon texte
array(0, 0, 'new Date(2009, 05 ,22)'), array(0, 1, 1),
array(1, 0, 'new Date(2009, 05 ,23)'), array(1, 1, 1),
array(2, 0, 'new Date(2009, 05 ,24)'), array(2, 1, 2077),
array(3, 0, 'new Date(2009, 05 ,25)'), array(3, 1, 9),
à la place de "A PLACER ICI"

Quelqu'un aurait une idée?? :)

merci de votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2009, 19:27

Tu demandes à php d'afficher du texte en plein milieu d'une déclaration de tableau... Si php permet de générer du code javascript qui sera ensuite interprété par le navigateur, il peut difficilement faire réinterpréter au serveur le code qu'il est en train d'envoyer au navigateur...

Génère ton tableau normalement en php, et spécifies le ensuite en paramètre de ta méthode :
$monTableau = array(); // on déclare le tableau
while (...) { // on rempli le tableau
  $monTableau[] = array($i, 0, "'new Date(".$annee.", ".$arr["translatemonth"]["$mois"]." ,".$jour.")'"); 
  $monTableau[] = array($i, 1, $resultat2[0]),
}
...
->setValues( $monTableau ); // on utilise le tableau
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

31 mai 2009, 10:55

Hello Ryle,

merci beaucoup pour ta réponse,


J'ai essayé ton code et ça coince encore et j'ai des questions à son sujet :)

Pour ce qui est du retour d'erreur, voici ce que j'ai:



$verif = 2;
$monTableau = array(); // on déclare le tableau
if ($verif = 2) { // on rempli le tableau
echo "ohé";
$monTableau[] = array($i, 0, "'new Date(".$annee.", ".$arr["translatemonth"]["$mois"]." ,".$jour.")'"); 
  $monTableau[] = array($i, 1, $resultat2[0]), 
  }

ça me retourne un parse error pour la ligne
  $monTableau[] = array($i, 1, $resultat2[0]), 
J'ai essayé divers variante mais ça coince toujours...je dois avoir raté une étape!

En ce qui concerne mes questions pour apprendre un peu :) pourquoi y a t il un ";" et pas de "," à la fin de cette ligne?
  $monTableau[] = array($i, 0, "'new Date(".$annee.", ".$arr["translatemonth"]["$mois"]." ,".$jour.")'");  
et l'inverse pour la deuxième ligne?
 $monTableau[] = array($i, 1, $resultat2[0]), 

merci pour votre aide,

bon dimanche

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mai 2009, 16:55

pourquoi y a t il un ";" et pas de "," à la fin de cette ligne?
... et l'inverse pour la deuxième ligne?
Ben c'est justement là qu'est le soucis et l'erreur signalée par php. En fait j'ai décomposé l'ajout des données dans le tableau en 2 instructions, et chacune d'elle devrait se terminer par un point-virgule... (et comme j'ai fait un copier/coller j'ai pas fait attention que ce n'était qu'une virgule ;))
  $monTableau[] = array($i, 0, "'new Date(".$annee.", ".$arr["translatemonth"]["$mois"]." ,".$jour.")'");  
  $monTableau[] = array($i, 1, $resultat2[0]);  
Par contre tu as une soucis à cette ligne :
if ($verif = 2) { // on rempli le tableau
L'opérateur de comparaison en php est "==" et pas "=" qui sert à l'affectation. En gros, ton test affecte la valeur 2 à la variable $verif au lieu de les comparer :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...