[Erreur] Mes amis les arrays...

fredo78310 Messages postés 69 Statut Membre -  
fredo78310 Messages postés 69 Statut Membre -
Bonjour,
J'ai lu des cours PHP et cherché sur le forum en vain, je ne comprends toujours pas cette erreur :

Warning: Cannot use a scalar value as an array in c:\program files\easyphp\www\appro\parser.php on line 247

Voici la 247e ligne de mon code :

$_SESSION['invest'][$indice]=trim($liste[13]);

Le soucis, c'est que j'écris plusieurs autres fois dans un $_SESSION['quelque chose'][$indice] avec un trim($liste[quelque chose]) et que je n'ai aucun bug... Juste cette ligne-là en fait... Quelque chose doit m'échapper mais je ne vois pas quoi...

2 réponses

sophieeeeee Messages postés 1396 Date d'inscription   Statut Membre Dernière intervention   53
 
c'est peut etre juste avant cette ligne???
0
macgawel Messages postés 676 Statut Membre 89
 
Bonjour.

Sans le reste du code, on ne peut pas savoir d'où provient l'erreur...

Un truc que tu peux essayer, c'est :
echo $_SESSION['invest'].'<br />'.$liste;
$_SESSION['invest'][$indice]=trim($liste[13]); 


Vu qu'a priori, tu as une de tes deux variables qui n'est pas un Array, tu verras laquelle à l'affichage.
Ensuite, il "suffit" de remonter dans ton code pour voir à quel moment il y a une affectation foireuse...
0
fredo78310 Messages postés 69 Statut Membre 5
 
J'ai fait ce que tu m'as dit et ça m'a affiché 1 pour $_SESSION['invest'] et Array pour $liste



Voici mon code avant la ligne :



while (!feof($fp2)) // On parcourt le fichier
{


//récupération d'un ligne de fichier
$ligne=fgets($fp2, 4096);

// chaque champ séparé par une tabulation est placé dans une case de $liste[]
$liste=explode($separateurTab, $ligne);

//Compte le nombre d'éléments sur une ligne
$result=count($liste);

if ($cpt> $numeroLigneDeb && $cpt <$numeroLigneMax)
{

if (trim($liste[1]) !="")
{

$nbline=$indice + 1 + 1;

$var=trim($liste[1]);

/* on récupère la position éventuelle d'un caractère '"' dans la chaine */
$pos=strpos($var, "\"");

/* s'il n'y a pas de guillemets dans le libellé on le prend tel quel */
if ($pos===false)
{
$nomProduit[$indice]=$var;
}

/* sinon on fait un traitement pour remplacer les guillemets
* par 2 simples côtes:('')
*/
else
{
$var=substr($var, 1);
$var=substr($var, 0, (strlen($var) - 1));
$var=str_replace("\"\"", "''", $var);
$nomProduit[$indice]=$var;
}

$_SESSION['codeProdF'][$indice]=trim($liste[2]);
$_SESSION['immo'][$indice]=trim($liste[16]);
$_SESSION['invest'][$indice]=trim($liste[13]);


/*D'autres $_SESSION sont affectés et fonctionnent

[...]

*/


$indice++;
}
}
}
0
macgawel Messages postés 676 Statut Membre 89 > fredo78310 Messages postés 69 Statut Membre
 
J'ai fait ce que tu m'as dit et ça m'a affiché 1 pour $_SESSION['invest'] et Array pour $liste
Ca veut dire que $_SESSION['invest'] n'est pas un Array, mais qu'il a la valeur 1.

=> Le problème vient de là.
Il faudrait voir dans ton code (au moment où tu affectes $_SESSION['invest'][$indice]) ce qui cloche...
0
fredo78310 Messages postés 69 Statut Membre 5 > macgawel Messages postés 676 Statut Membre
 
Très grosse incompréhension, j'ai installé Firefox 3.0 tout fraîchement sortie d'hier et la, plus de Warning, il ne voit plus le problème... Alors que je n'avais pas modifié le code bien entendu...
Il n'a même plus vu une erreur SQL que j'avais plus bas... Rien compris...

Je vais tester sur l'ordi d'un pote si ça passe sous Firefox 2.0.0.14 pour voir si ce n'est pas mon ordi qui déconne...
0
fredo78310 Messages postés 69 Statut Membre 5 > fredo78310 Messages postés 69 Statut Membre
 
Fausse alerte, j'ai recharger ma page et le Warning est revenu mais par contre, mon erreur SQL est bien partie... Toujours incompréhensible ce truc-là...

Je ne déclare pas le $_SESSION en tant qu'Array peut être que c'est de la que vient le problème...
Mais tu vois, dans le code, j'ai d'autres affectations avec $_SESSION et ça marche nickel... C'est ça que je ne pige pas...
T'en penses quoi ??
0
macgawel Messages postés 676 Statut Membre 89 > fredo78310 Messages postés 69 Statut Membre
 
Le $_SESSION est un Array.
Le problème vient plutôt de $_SESSION['invest'] :
C'est sensé être un Array, mais c'est une variable (valeur 1).

Recherche dans ton code l'endroit où tu es sensé remplir le $_SESSION['invest'], l'erreur peut provenir de là...
0