Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2970 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Array et formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Array et formulaire

n°1474194
piedbleu
Posté le 12-11-2006 à 17:44:22  profilanswer
 

Bonjour,
 
Je cherche à réaliser un formulaire avec un champ de saisie unique et un bouton "Ajouter".
A la validation - appui sur "Ajouter" -  je veux réafficher le formulaire avec la ligne précédemment saisie et une nouvelle ligne vide de saisie.
Et ainsi de suite.
 
Je passe par un tableau indexé de dimension 1 pour récupérer les saisies.
Le but est par la suite d'étendre cette application à une ligne de formulaire composée de plusieurs champs et traitée avec un tableau associatif multidimensionnel.
 
Pour l'instant seule est prise en compte la dernière ligne saisie, les autres variables postées ne sont pas reconnues. Elles sont écrasées, en cause sans doute la syntaxe de l'attribut name ( saisie_article ), et peut être bien la boucle aussi.  
 
Ci - dessous mon code.
 
Auriez - vous une idée? Merci!
 
Commencer par appeler dev3.php :
dev3.php:
<?php
         
         
 
 
        // initialise les variables
 
        $article = array();   // vide, destiné à recevoir les saisies
 
        $nb_art = 0;         // compteur sur nombre de saisie
         
        // Récup variables formulaire
 
        $ajout_art = $_REQUEST['ajout_art']; // recup nom bouton de validation
         
 
 
        switch ($ajout_art){                // si validation
 
                case "Ajout":  // Réferencer article supplémentaire
 
                                 if (isset($_REQUEST['saisie_article'])){
                                     
                                           for($i=0;$i<=$nb_art;$i++){
                                                 
                                                // recopie saisie dans tableau
                                                $article[$i]= $_REQUEST['saisie_article'];
                                                 
                                                }
                                 
                                           foreach ($article as $valeur){   // test affichage saisies formulaire
                                 
                                                   echo $valeur.'<br>';
 
                                                   }
                                 }
 
                                 $nb_art = $_REQUEST['nb_art'];
                                 
                                 $nb_art++; // incrémentation compteur nombre de saisie
 
 
                          break;
 
                                 default:
 
        }
 
 
        // Afficher formulaire
 
        include('affich3.php');
 
        echo $nb_art;  // test affichage compteur
 
?>
 
 
affich3.php:
 
<table>
 
                    <form name="devis_modif" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 
                           <tr>
 
                               <td>Article :</td>
 
                            </tr>
 
                 
                <?php      for($i=0;$i<=$nb_art;$i++){    ?>
 
                           <tr>
 
                               <td><input type="text" name="saisie_article" value="<?php echo $article[$i]; ?>" size="30" maxlength="35"></td>
 
                           </tr>
 
                <?php }   ?>
 
 
                           <tr>
 
                               <td>Ajouter un article</td>
 
 
                                   <!-- Référencer un autre article -->
 
                               <td>
                     <input type="hidden" name="nb_art" value="<?php echo $nb_art; ?>">
 
                                   <input type="submit" name="ajout_art" value="Ajout">
                               </td>
 
                           </tr>
                           
                           
                </form>
 
</table>
 
 
               

mood
Publicité
Posté le 12-11-2006 à 17:44:22  profilanswer
 

n°1474203
flo850
moi je
Posté le 12-11-2006 à 18:45:21  profilanswer
 

tu devrai utiliser un tableau de variable :  
tu appelle ta variable saisie_article[] au lieu de saisie_article
 
et quand tu traite les resultats, tu aura bien u ntableau

n°1474215
piedbleu
Posté le 12-11-2006 à 19:17:07  profilanswer
 

J'ai renommé les saisie_article en saisie_article[] :
les variables passent, comme auparavent - je les vois dans l'url en les passant en get - mais aucune n'est reconnue : réaffichage du formulaire vide, avec le bon nombre de lignes.
 
idem avec  saisie_article[$i] .
Par rapport à mon code ci - dessus, initialiser $saisie_article = array(); afin que cette variable soit bien reconnue comme étant un tableau ne change rien à l'affaire.
 
La boucle est - elle OK, dans le traitement?  

n°1474225
flo850
moi je
Posté le 12-11-2006 à 19:35:22  profilanswer
 

Page de saisie du formulaire

Code :
  1. <form method="POST">
  2. <!-- affichage des articles saisi ->
  3.    <?
  4.    foreach($saisie_article  $article){
  5.           echo '<input name="saisie_article[]" value="'.$article.'"><br>';
  6.     }
  7.   ?>
  8. <!-- saisie d un nouvel article-->
  9. <input name="saisie_article[]" value="">
  10. <input type="submit" value
  11. </form>


 
traitement des variable
 

Code :
  1. foreach($_POST['saisiearticle'] as $article)'
  2. echo ' tu as commandé '.$article.'<br>';
  3. }


Message édité par flo850 le 12-11-2006 à 19:35:33
n°1474839
piedbleu
Posté le 13-11-2006 à 19:49:11  profilanswer
 

Merci ! Sur le principe ça roule.
 
Une ou deux bricoles à régler mais je devrais m'en sortir :
 
au premier affichage, saisie_article[] est vide et le foreach - ds formulaire - il aime pââs - warning ...  
 
Conditionner le foreach au fait que cette variable existe et soit non vide enlève le warning mais du coup le bouton d'ajout n'est plus précédé d'une ligne de saisie vide.
 
Ajouter ensuite ds traitement en initialisation "" $saisie_article[] = ""; " m'affiche une première page nickel, à savoir champ vide à saisir suivi du bouton d'ajout, mais en validant ce dernier j'ajoute deux nouvelles lignes vides et non pas une seule.
 
Des broutilles quoi :-) ...

n°1474994
piedbleu
Posté le 14-11-2006 à 00:48:57  profilanswer
 

Pbm. résolu :-).
 
Sans rentrer ds les détails code ci - dessous pour ceux intéressés, suite à qques modifs et la contribution essentielle de flo850.
 
Rappel :  
Formulaire - affichage d'un champ de saisie avec après validation affichage du formulaire avec champs précédemment remplis et ligne supplémentaire vide pour nouvelle saisie.
Affichage pour tests de la valeur et du nombre des saisies effectuées.
 
dev4.php:
 
<?php
         
         // initialise les variables
 
        $article = array();         // vide, destiné à recevoir les saisies
         
        $saisie_article[] = "";   // saisies postées via formulaire
 
        $nb_art = 0;              // compteur sur nombre de saisie
         
         
        // Récup variables formulaire
 
        $ajout_art = $_REQUEST['ajout_art']; // recup nom bouton de validation
         
 
 
        switch ($ajout_art){                // si validation
 
                case "Ajout":  // Réferencer article supplémentaire
 
 
                                            // test affichage variables postées
 
                                            foreach ($_POST['saisie_article'] as $article){
                                             
                                            echo 'ajout de '.$article.'<br><br>';
 
                                            }
 
 
                                 $nb_art = $_REQUEST['nb_art'];
 
                                 $nb_art++; // incrémentation compteur nombre de saisie
 
 
                          break;
 
                                 default:
 
        }
 
 
        // Afficher formulaire
 
        include('affich4.php');
 
        echo $nb_art;  // test affichage compteur
 
?>
----------------------------------
affich4.php:
 
<table>
 
                    <form name="devis_modif" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 
                           <tr>
 
                               <td>Article :</td>
 
                            </tr>
 
                 
 
                 
                <?php        if (isset($saisie_article)& !empty($saisie_article)){
                             
                             foreach($saisie_article as $article){  ?>
 
                           <tr>
 
                                   <td><input type="text" name="saisie_article[]" value="<?php echo $article; ?>" size="30" maxlength="35"></td>
 
                           </tr>
 
                <?php           }
                                 
                           }  ?>
 
 
                           <tr>
 
                               <td>Ajouter un article</td>
 
 
                                   <!-- Référencer un autre article -->
 
                               <td>
                     <input type="hidden" name="nb_art" value="<?php echo $nb_art; ?>">
 
                                   <input type="submit" name="ajout_art" value="Ajout">
                              </td>
 
                           </tr>
                           
                           
                </form>
 
</table>
 
 
 
   
 
 
 
 
 
 
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 
 
 
 
 
 
   


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Array et formulaire

 

Sujets relatifs
Formulaire | champ en surbrillance si erreur de saisie[Access][VBA] Redimensionner une page Web dans un formulaire
eviter effacement formulaire en page precedentePb d'accent lors de l'envoi de mon formulaire
[Resolu]Mon formulaire de contact...Remplir le champ d'un formulaire par une variable
Contrôle formulaire côté serveur / retour sur erreur?Probème Fetch Array + While
[VBA] Formulaire / sous formulaire et les requêtes.[PHP] passer un array dans l'URL pour inclure des pages en pseudo-fram
Plus de sujets relatifs à : Array et formulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR