Probleme de variable vide methode Post

Mysolo
Invité n'ayant pas de compte PHPfrance

24 févr. 2006, 02:36

Bonsoir
Voila je galere sur une connerie surement

j'ai un formulaire multi enregistrement (eviter de charger 1 a 1 les donné)
voila le code simple
$nb =5;
for ($i =0; $i < $nb;$i++)
{
echo "<tr>"; 
    echo "<td height='16' bgcolor='#FF9900'><input type =\"text\" class=\"tableau\" name=\"ref_produit[]\" value=\"\" ></div></td>";

    echo "<td bgcolor='#FF9900'><input type =\"text\" class=\"tableau\" name=\"date_creation[]\" value=\"\" ></div></td>";
Pas de probleme j'ai bien un tableau multiple

de la j'envois toutes les données en $HTTP_POST_VARS pour le traitement du resultat
et la j'ai un probleme

si je reseigne pas l'ensemble tu formulaire c'est a dire que je desir ajouter que 3 enregistrements sur 5 possible a la table mysql
il ajoute 2 ligne vide a la table mysql

j'essais de filtrer les données pour eviter les vide mais probleme
voila le code
	for ($i =0 ; $i < $nb; $i++)
		{
 			echo "
 			la ref produit est : $ref_produit[$i] <br>
 			la date de creation est  :$date_creation[$i] <br>
 			";
		}
j'ai bien essayé avec
if(empty($ref_produit))
ou
$nb=(count($ref_produit !=''));

pour determiner la variable $nb

Voila si quelqu un a la solution je suis preneur

Merci :)

Eléphant du PHP | 353 Messages

24 févr. 2006, 08:58

tu dois vérifier la valeur dans l'array et pas l'array complet comme tu le faisais !
for ($i =0 ; $i < $nb; $i++) 
        {
         if($ref_produit[$i] != "")//verfie si la reference produit est vide
            {
            echo " 
            la ref produit est : $ref_produit[$i] <br> 
            la date de creation est  :$date_creation[$i] <br> 
            "; 
            }
        } 
tu fais la meme condition pour enregistrer dans la bdd
for ($i =0 ; $i < $nb; $i++) 
        {
         if($ref_produit[$i] != "")//verfie si la reference produit est vide
            {
             $qry_produit=mysql_query("INSERT ...") or die (mysql_error());
            }
      else{
             echo "Pas de valeur entrée dans le champ".$i+1;
            }         
        } 

Eléphant du PHP | 353 Messages

24 févr. 2006, 09:09

je viens regarder => http://php.belnet.be/manual/fr/ref.array.php

la fonction array_filter() doit etre utilisable pour enlever les valeurs vide.
// Exemple 2. array_filter() sans callback => voir doc php array_filter


$new_array = (array_filter($ref_produit));
j'ai pas testé regarde un peu ce que ca donne et dis moi quoi ;)

Mammouth du PHP | 19672 Messages

24 févr. 2006, 11:29

Non, je crois que la solution est beaucoup plus simple que ça:

D'abord, $HTTP_POST_VARS est une formulation obsolète : il faut remplacer par $_POST;

Ensuite il faut commencer par initialiser les variables avant de les utiliser: donc lors de la récupération, il faut commencer par:
$ref_produit = (isset($_POST['ref_produit'])) ? $_POST['ref_produit'] : null;
Ensuite seulement tu pourras utiliser $ref_produit.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mysolo
Invité n'ayant pas de compte PHPfrance

24 févr. 2006, 16:21

Re :D

Grand Merci a TITAC et Cyrano pour vos reponses

TITAC j'ai utiliser ta premier version et ca marche nickel voila


:)