Array intempestif

egol Messages postés 6 Date d'inscription vendredi 12 mai 2006 Statut Membre Dernière intervention 21 mai 2006 - 20 mai 2006 à 21:27
egol Messages postés 6 Date d'inscription vendredi 12 mai 2006 Statut Membre Dernière intervention 21 mai 2006 - 21 mai 2006 à 13:06
bonsoir !


je sèche sur un bête problème de tableau...


Depuis un formulaire, je récupère des valeurs à partir de cases à
cocher qui, lorsqu'elle s'affichent dans mon backoffice ont la facheuse
tendance à mettre systématiquement le mot "array" en début de liste.


C normal paraît-il... mais comment je peux faire pour que cela ne se produise pas ?


Si qq pouvait m'expliquer ce phénomène avec un exemple à l'appui ça serait très sympa.


Merci d'avance !


voilà un extrait de mon code


Dans le form:



Et dans le backoffice:

$bike=$_POST['bike'];


if(isset($_POST['bike'])) {

    for ($i=0, $j=count($_POST['bike']); $i<$j; $i++) {

$bike.=$_POST['bike'][$i];

 }

}


mysql_query("UPDATE tab_moto SET bike='$bike'");

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 mai 2006 à 10:33
hello,

$bike=$_POST['bike'];

=> ici tu assignes un tableau ($_POST['bike'] est un tableau, puisque ce sont plusieurs cases à cocher) à une variable $bike.

for ($i=0, $j=count($_POST['bike']); $i<$j; $i++) {
$bike.=$_POST['bike'][$i];
}
=> ici, tu concatènes un tableau $bike à une chaîne qui est une valeur de ton tableau $_POST['bike'].
On ne concatène pas une chaîne à un tableau! On concatène 2 chaînes, ça oui. Mais un tableau ne se concatène pas.

Donc ce qui t'arrive est normal. Par contre, je ne comprends pas où tu veux en venir avec ce code.

Sinon, en vrac : évite les fonctions dans l'expression d'une boucle for. L'expression est réévaluée à chaque itération. Bref, ici, tu comptes plein de fois ton tableau alors que tu pourrais ne le compter qu'une seule fois:
for ($i=0, $j=count($_POST['bike']); $i<$j; $i++)
=>
$iCpt = count ($_POST['bike']);
for ($i=0; $i<$iCpt; $i++)
0
egol Messages postés 6 Date d'inscription vendredi 12 mai 2006 Statut Membre Dernière intervention 21 mai 2006
21 mai 2006 à 12:46
Hi,


1) merci Malalam

2) ce qui m'arrive est normal: je le savais

3) j'ai modifié ma boucle selon ton conseil

4) les cases cochées me permettent d'émettre une liste qui s'affiche côté client.


Ce que j'obtenais déjà. Mais ce foutu "array" est toujours là, en tête de liste .
0
egol Messages postés 6 Date d'inscription vendredi 12 mai 2006 Statut Membre Dernière intervention 21 mai 2006
21 mai 2006 à 13:06
Re bonjour et FIN !


J'ai finalement trouvé une réponse à mon erreur


J'avais initialement  dans le backoffice:

$bike=$_POST['bike'];

...puis....

if(isset($_POST['bike']))

etc


En enlevant la globale POST je résoud mon problème d'afichage du mot ARRAY

J'ai maintenant

$bike=""; (une valeur vide(0 par défaut) et non plus le tableau bike)


if(isset etc....


Et hop, plus de "array".


May this help !
0
Rejoignez-nous