Création
d'entreprise
Posez votre question Signaler

Undefined offset: 17 [Résolu]

pix - Dernière réponse le 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;
}
Lire la suite 

Undefined offset: 17 »

13 réponses
Réponse
+1
moins plus
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;
}
LDMBatman- 30 juin 2010 à 11:16
Apparement, c'est cela.
Ajouter un commentaire
Réponse
+1
moins plus
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>";
	}
}
}
Ajouter un commentaire
Réponse
+0
moins plus
merci sa marche .

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

SELECT * FROM palette where ref_produit='Array'
LDMBatman- 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
Ajouter un commentaire
Réponse
+0
moins plus
$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>";
	}
}
Ajouter un commentaire
Réponse
+0
moins plus
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>";
}
}
}
}
LDMBatman- 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
Ajouter un commentaire
Réponse
+0
moins plus
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>";
      }
   }
}
Ajouter un commentaire
Réponse
+0
moins plus
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é
LDMBatman- 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?
Ajouter un commentaire
Réponse
+0
moins plus
C'est bon j'ai réussit je te remercie pour ton aide
Ajouter un commentaire
Réponse
+0
moins plus
D'accord. Bonne journée
Ajouter un commentaire
Ce document intitulé « Undefined offset: 17 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?