Probleme avec unset sur un tableau ...

Répondre
seb
le 25/11/2003 à 08:38
seb
salut tt le monde,

j'ai un léger souci avec la fonction unset() de php sur un tableau :
j'ai une liste d'email dans un tableau , que j'affiche avec un foreach($tab as $index=> $tmp) pour avoir les index qui pointent sur une fonction del(index) en javascript.

cette dernière attribue la valeur de l'index à un champ caché "moins".
en testant $moins en php, je vois s'il est nul ou non. Si non , je fais un unset sur mon tableau de email...

Le problème, c'est que le tableau est construit via un explode sur la chaine de caractère "email1,email2,email3" passée en champ caché "email". lorsque je fais le unset sur un index autre que le dernier élément du tableau, les autres index ne correspondent plus aux mails initiaux et tout plante ( genre, il faut que je supprime 2 fois un mail : la 1ere il passe de l'index 1 à 0, puis il est vraiment effacé du tableau.... )

en plus, je fais mon foreach APRES le unset et les clés et les valeurs du tableau ne correspondent pas !!!

une idée ???

merci d'avance !

les extraits de mon code :

JAVASCRIPT :

<script>
function del(i)
{
document.form1.moins.value=i;
}
</script>

PHP:
if($moins != "")
{
$tab = explode(",",$email);
unset($tab[$moins]);
}

après je fais l'affichage :
foreach ($tab as $index => $temp )
{
echo $temp;
echo "<a href=\"javascript:del(".$index.")\">supprimer</a>";
}

mon champ caché email :

<INPUT type=hidden name=email value="<? echo join(",",$tab); ?>">
fonKySeB from Hyperion <br>::Si quelque chose peut mal tourner, alors ça tournera mal::
LA GLOBULE
le 25/11/2003 à 11:39
LA GLOBULE
A priori, le probleme vient du fait que tu melanges du php avec du javascript.

D'apres ce que j'ai lu, ton javascript doit "jouer" (si c'est bien cela) sur des valeurs traitées par php, or cela est impossible.
seb
le 27/11/2003 à 10:41
seb
nan....
j'ai trouvé où ça coinçait : il y avait un décalage entre mes index de tableaux et les valeurs des clés que j'attribuait :

j'avais :
foreach($tab as $cle=>$tmp){
blabla javascript:del($cle);
}

et quand je faisais un unset avec la clé 0 (par ex):
index | clé | valeur => unset(0] | clé | valeur
0 | 0 | email0 | 1 | email1
1 | 1 | email1 | 2 | email2
2 | 2 | email2 | null | null

donc, après le unset(0), j'ai l'index 0 du tableau qui correspond à ma clé 1 ( et donc email1) et ainsi de suite. Ce qui faisait que lorsque j'appelais ma fonction JS del() sur la clé 2, je pointais en réalité sur l'index 2 du tableau ( donc null )...

j'ai résolu ce problème tt bêtement en faisant :
$i=0;
foreach($tab as $tmp){
blabla javascript:del($i);
$i++;
}

c'était bête mais très chiant !!! ;)
++
seb
fonKySeB from Hyperion <br>::Si quelque chose peut mal tourner, alors ça tournera mal::
seb
le 27/11/2003 à 12:05
seb
merci , merci ! :)

++
seb
fonKySeB from Hyperion <br>::Si quelque chose peut mal tourner, alors ça tournera mal::
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours