page en php interprété differement d'un client a l'autre

Eléphanteau du PHP | 38 Messages

07 juil. 2009, 16:17

Bonjour,
J'ai fait une page en php 4, que j'ai stocké sur mon serveur. Sur celui ci est installé easyphp 1.8.

Mon soucis est que suivant l'ordinateur avec lequel je regarde la page, ca fonctionne nickel ... ou pas du tout !

Le problème se voit surtout parce que sur 2 des ordinateurs, il me fait une erreur critique et pas sur l'autre.

Pour tout vous dire, là ou ca pose problème, c'est dans une boucle ou je remplis un tableau a partir de données qui viennent d'un BDD mysql.
$req="SELECT Date FROM prelevement WHERE prelevement.Idpointdo=".$Id."ORDER BY prelevement.Date";
		//echo $req;
		$rep=mysql_query($req) or die($req."<br />".mysql_error());
		while($res=mysql_fetch_array($rep)){
			$DatePrelevement[]=$res['Date'];
		}
L'erreur la voici :

Code : Tout sélectionner

Fatal error : [] operator not supported for strings in c:\....
Donc apparemment, il crois que $DatePrelevement est une chaine, hors c'est la première fois que je déclare cette variable dans la page. Pourquoi sur certains client cette variable est interprété par le serveur comme chaine et sur d'autre comme un tableau (comme attendu) ? Parceque oui au final, le serveur interprète différemment mon code suivant le pc qui consulte la page. C'est la seule certitude que j'ai par rapport a ce problème.

Tous les pcs qui accèdent a cette page sont sous firefox. Si quelqu'un peut venir en aide a une pauvre âme en peine ...
Modifié en dernier par RilaX le 10 juil. 2009, 12:29, modifié 3 fois.

Mammouth du PHP | 2937 Messages

07 juil. 2009, 16:27

Essaie de corriger ton code comme suit :
$req = "SELECT Date FROM prelevement WHERE prelevement.Idpointdo=".$Id."ORDER BY prelevement.Date";
$rep = mysql_query ($req) or die ($req.'<br />'.mysql_error ());
$DatePrelevement = array ();
while ($res = mysql_fetch_array ($rep))
{ 
  $DatePrelevement[] = $res['Date']; 
}
Autrement dit, déclare ta variable comme tableau, vide, avant la boucle.
J'ai fait une page en php 4
Soit dit en passant, PHP 4 est officiellement abandonné depuis le 8 août 2008. Il serait peut-être grand temps de se mettre à PHP 5. ;)
sur mon serveur. Sur celui ci est installé easyphp 1.8.
Soit dit en passant également, pourquoi n'utilises-tu pas Wampserver, qui te permet de jongler entre plusieurs versions d'Apache, de MySQL et de PHP, qui peuvent être installées grâce à des extensions ? ;)

Eléphanteau du PHP | 38 Messages

09 juil. 2009, 21:50

Bonjour,
D'abord, désolé d'avoir mis autant de temps a répondre alors que la solution m'a été donné si vite !

Donc effectivement en déclarant le tableau avant d'essayer de l'utiliser ca marche nickel. Je suis heureux de voir que j'ai posté mon problème dans la bonne section (débutant ^^) !

Sinon, pour répondre à l'aimable Victor, je développe quelques "applications" en php pour le travail, essentiellement pour rendre service (parce que ca me rend service a moi aussi). Quand j'ai commencé, c'était l'époque du php4 et de easyphp 1.8. J'ai appris un peu sur le tas, et quand php5 est sorti, je ne me suis pas penché dessus, par manque de temps. Manque de temps déjà pour faire les applications que j'ai a faire parce que ce n'est pas le cœur de mon métier, et parce qu'il faudrait que je reprenne ce que j'ai déjà fait. Donc, je n'exclue pas d'adapter le code en php5, mais en attendant, je continue en php4. Pour easyphp 1.8, il est installé sur un serveur applicatif, et moins j'y touche, mieux je me porte (j'y ai accès, mais en théorie je ne devrais pas).

Bref, je sais que c'est pas top, mais je fais ce que je peux avec les compétences et le temps que j'ai. Et puis on voit bien que même un peu plus de 3 ans après avoir commencé le php, j'ai encore des problèmes de débutant !

M'enfin voila, problème résolu, merci beaucoup a toi Victor, et merci phpfrance !