[Erreur] Mes amis les arrays...

Fermé
fredo78310 Messages postés 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 - 17 juin 2008 à 16:41
fredo78310 Messages postés 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 - 18 juin 2008 à 15:49
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 1395 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 18 septembre 2008 53
17 juin 2008 à 17:27
c'est peut etre juste avant cette ligne???
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
17 juin 2008 à 17:39
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 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 5
18 juin 2008 à 10:21
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 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89 > fredo78310 Messages postés 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009
18 juin 2008 à 13:34
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 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 5 > macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008
18 juin 2008 à 14:41
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 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 5 > fredo78310 Messages postés 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009
18 juin 2008 à 15:02
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 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89 > fredo78310 Messages postés 64 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 10 novembre 2009
18 juin 2008 à 15:20
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