Undefined offset: 17

Résolu
pix -  
LDMBatman Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   39
 
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   Statut Membre Dernière intervention   39
 
Apparement, c'est cela.
0
LDMBatman Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   39
 
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
pix
 
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   Statut Membre Dernière intervention   39
 
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
pix
 
$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
pix
 
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   Statut Membre Dernière intervention   39
 
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   Statut Membre Dernière intervention   39
 
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
pix
 
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   Statut Membre Dernière intervention   39
 
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
pix
 
C'est bon j'ai réussit je te remercie pour ton aide
0
LDMBatman Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   39
 
D'accord. Bonne journée
0