Undefined offset: 17

Résolu/Fermé
pix - 30 juin 2010 à 09:00
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 - 1 juil. 2010 à 14:07
bonjour, voila lorsque je valide mon formulaire, j'ai ce message d'erreur qui s'affiche :


Notice: Undefined offset: 17 in C:\Program Files (x86)\EasyPHP-5.3.2i\www\stage EST\plan_chargement.php on line 21

Notice: Undefined offset: 17 in C:\Program Files (x86)\EasyPHP-5.3.2i\www\stage EST\plan_chargement.php on line 25

quelqu'un pourrait m'aider?


function tasser($tab)
{
$longueur = count($tab);
$i = 0;
$j = 0;
while ($i < $longueur)
{
(ligne 21)
while ($tab[$i]== null && $i < $longueur)

{
$i++;
}
(ligne 25)
$tabF[$j] = $tab[$i];

$j++;
$i++;

}
return $tabF;
}

9 réponses

LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
30 juin 2010 à 11:03
Si j'ai bien compris, ton but est de vider ton tableau des cases vides. Dans ce cas, essaie ceci :
function tasser($tab)
{
   $longueur = count($tab);
   $i = 0;
   $j = 0;
   while ($i < $longueur)
   {
      if ($tab[$i]!= null)
      {
         $tabF[$j] = $tab[$i];
         $j++;
      }
      $i++;
   }
   return $tabF;
}
1
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
30 juin 2010 à 11:16
Apparement, c'est cela.
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
30 juin 2010 à 11:44
Voilà, c'est bien ce qu'il me semblait.

SELECT * FROM palette where ref_produit='$produit'
ne peut pas fonctionner car ref_produit contient la définition de ton tableau $produit.

Il faut lui passer les valeurs :
$produit=$_POST['produit'];
// dans le tableau de produits (checkbox), il n'y a pas de valeurs nulles. Elles sont éliminées automatiquement.
$quantite = tasser ($_POST['quantite']);
// dans le tableau de quantite(input text), il y a des valeurs nulles. Du coup, les 2 tableaux ne sont pas de le même taille. Il faut donc enlever les valeurs nulles grâce à la fonction tasser.
$connexion = mysql_connect('127.0.0.1','root','');
mysql_select_db ('stocking',$connexion);
for($i=0;$i<count($produits);$i++)
{
$req1="SELECT * FROM palette where ref_produit='".$produit[$i]."';";
if($res1=mysql_query($req1))
{
	while($cols=mysql_fetch_array($res1))
	{
	echo"<tr><td>". $cols['ref_palette']."</td><td>".$cols['emplacement']."</td></tr>";
	}
}
}
1
merci sa marche .

saurai tu pourquoi lorsque j'affiche ma requête ça me met ceci?

SELECT * FROM palette where ref_produit='Array'
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
30 juin 2010 à 11:27
Serait-il possible d'avoir un fragment de code un peu plus complet?

On dirait que tu essaie de faire une requète en donnant à ref_produit la valeur du nom de ton tableau et non pas une valeur du tableau
0
$produit=$_POST['produit'];
// dans le tableau de produits (checkbox), il n'y a pas de valeurs nulles. Elles sont éliminées automatiquement.
$quantite = tasser ($_POST['quantite']);
// dans le tableau de quantite(input text), il y a des valeurs nulles. Du coup, les 2 tableaux ne sont pas de le même taille. Il faut donc enlever les valeurs nulles grâce à la fonction tasser.
$connexion = mysql_connect('127.0.0.1','root','');
mysql_select_db ('stocking',$connexion);
$req1="SELECT * FROM palette where ref_produit='$produit'";
if($res1=mysql_query($req1))
{
	while($cols=mysql_fetch_array($res1))
	{
	echo"<tr><td>". $cols['ref_palette']."</td><td>".$cols['emplacement']."</td></tr>";
	}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
excuse moi encore LDMBatman mais j'ai ajouter la fonction limit a ma requête et sa ne m'affiche pas la quantite pourtant quand j'affiche la requête elle foction correctement et sa me l'affiche en double

SELECT * FROM palette where ref_produit='BcL' limit '2'order by ref_palette;
SELECT * FROM palette where ref_produit='BcL' limit '2'order by ref_palette;
SELECT * FROM palette where ref_produit='br' limit '2'order by ref_palette;
SELECT * FROM palette where ref_produit='br' limit '2'order by ref_palette;


voici le code:
for($i=0;$i<count($produit);$i++)
{
for ($j =0;$j<count($quantite);$j++)
{
$req1="SELECT * FROM palette where ref_produit='".$produit[$i]."' limit '".$quantite[$j]."'order by ref_palette;";
echo"$req1";
if($res1=mysql_query($req1))
{
while($cols=mysql_fetch_array($res1))
{
echo"<tr><td>". $cols['ref_palette']."</td><td>".$cols['emplacement']."</td></tr>";
}
}
}
}
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
1 juil. 2010 à 09:10
Désoloé j'ai été absent tout l'après-midi hier. Je vais jetter un coup d'oeil à ton prog
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
1 juil. 2010 à 09:18
A partir du moment où tes tableaux 'produits' et 'quantite' ont le même nombre de cases, il ne sert à rien de faire 2 boucles "for".

Je suppose que tes tableaux ne doivent contenir que 2 cases ce qui explique pourquoi tes requ^tes sont affichées deux fois.

Essaie ceci :
for($i=0;$i<count($produit);$i++)
{
   $req1="SELECT * FROM palette where ref_produit='".$produit[$i]."' limit '".$quantite[$i]."'order by ref_palette;";
   echo"$req1";
   if($res1=mysql_query($req1))
   {
      while($cols=mysql_fetch_array($res1))
      {
         echo"<tr><td>". $cols['ref_palette']."</td><td>".$cols['emplacement']."</td></tr>";
      }
   }
}
0
merci ,
j'ai essayer se que tu ma donné, et voila l'affichage que ça me donne.

SELECT * FROM palette where ref_produit='BcL' limit ''order by ref_palette;
SELECT * FROM palette where ref_produit='br' limit ''order by ref_palette;

le problème c'est dans la récupération de quantité
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
1 juil. 2010 à 12:04
Ta quantité dépend du produit et de l'emplacement? Si tel est le cas, serait-il possible d'avoir accès à la structure de la base de données?
0
C'est bon j'ai réussit je te remercie pour ton aide
0
LDMBatman Messages postés 95 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 10 avril 2014 39
1 juil. 2010 à 14:07
D'accord. Bonne journée
0