Undefined offset:

Résolu
tintin -  
 Utilisateur anonyme -
Bonjour,




Bonjour,

Suite à une récupération d'un formulaire par le code ci-dessous
<?php
$Form = @$_POST['listOfItems'];
$tableau = explode(";", $Form);
$occurences = count($tableau);
for ($i = 0 ; $i < count($tableau); $i++)
{
$arrayChaine=explode("|",$tableau[$i]);
$quest[2*$i] = $arrayChaine[$i];
$rep[2*$i+1] = $arrayChaine[$i+1];
}

?>
J'obtiens le message d'erreur suivant
Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\Site\save.php on line 9
Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\Site\save.php on line 8
Notice: Undefined offset: 3 in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\Site\save.php on line 9
Notice: Undefined offset: 3 in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\Site\save.php on line 8
Notice: Undefined offset: 4 in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\Site\save.php on line 9
Notice: Undefined offset: 4 in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\Site\save.php on line 8

Je pense que mon erreur vient des 2 lignes suivantes mais je ne comprends pas pourquoi.
J'ajoute qu'un affichage de $Form me donne quest1|rep2;quest3|rep4;quest2|rep5;quest4|rep1

J'ajoute que je veux récupérer dans des variables les contenus de chaque question et de chaque réponse.

Merci d'avance aux contributeurs.
A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour

Ça me semble logique.
À chaque boucle, quand tu exploses $tableau[$i], tu récupères un tableau à deux éléments, d'indices 0 et 1.

Donc
$quest[2*$i] = $arrayChaine[0]; 
$rep[2*$i+1] = $arrayChaine[1]; 
0
tintin
 
Bonjour,

Etant assez débutant en php, je pensais que ma variable $i s'incrémentant, j'aurais
$quest0 = ma 1ère question,
$rep1 = ma 1ère réponse,

$quest2 = ma 2ème question,
$rep3 = ma 2ème réponse,

$quest4 = ma 3ème question,
$rep5 = ma 3ème réponse,

etc.


C'est en fait ce que je souhaiterais obtenir.
Mais dans ce cas, comment faire ?
Encore merci.
0
Utilisateur anonyme
 
C'est bien ce que tu obtiendras (sauf que tu as oublié les [] )
Mais par contre, à chaque boucle, tu fais $arrayChaine=explode("|",$tableau[$i]);.
$arrayChaine est donc re-créé à chaque fois. Comme il y a deux éléments, ces éléments ont les indices 0 et 1. Mais je ne parle ici que des indices de $arrayChaine ; pour $quest et $rep, ça se passe bien comme tu le dis. Et la correction, je te l'ai donnée dans mon message précédent.

Mais quel est l'intérêt de n'utiliser que les indices pairs dans $quest et les indices impairs dans $rep ?
Ça ne te semblerait pas plus logique d'avoir le même indice pour la question et la réponse qui va avec ?
Ça donnerait :
$quest=array();
$rep=array();
for ($i = 0 ; $i < count($tableau); $i++) 
{ 
  $arrayChaine=explode("|",$tableau[$i]); 
  $quest[] = $arrayChaine[0];  // sans indice, on ajoute à la fin du tableau
  $rep[] = $arrayChaine[1]; 
} 
0
tintin
 
Rebonjour,

Merci à tous les contributeurs et particulièrement à le père.
Ca fonctionne.
0
Utilisateur anonyme
 
Merci, mais je ne suis pas contributeur au sens que ce mot a dans CCM ;-)
0