IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Boucle interrogation de plusieurs lignes d'un formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut Boucle interrogation de plusieurs lignes d'un formulaire
    Bonjour,

    Je voudrais faire une boucle pour récupérer la valeurs de mes inputs sur plusieurs lignes (toujours les mêmes champs sur chaque ligne du formulaire).

    Le formulaire à 12 lignes donc je les créé dans mon body comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php 
                            $i = 1;
     
                            while ($i <= 12) {
                            ?>
                            <tr>
                            <td class="fond_formulaire" align="center">                  <div align="center">
                                  <input id="ref<?php echo $i; ?>" name="ref<?php echo $i; ?>" size="6" maxlength="6" />                
                                </div></td>
                                <td class="fond_formulaire">                  <div align="center">
                                  <input id="qte<?php echo $i; ?>" name="qte<?php echo $i; ?>" size="1" maxlength="1" value="1" onblur="verif_quantite(this.name,this.value);" />                
                                </div></td>
                                <td class="fond_formulaire">                    <div align="center">
                                  <input id="designation<?php echo $i; ?>" name="designation<?php echo $i; ?>" size="50" maxlength="255" />                  
                                </div></td>
                                <td class="fond_formulaire">                    <div align="center">
                                  <input id="ref_appareil<?php echo $i; ?>" name="ref_appareil<?php echo $i; ?>" size="10" maxlength="10" />                  
                                </div></td>
                                <td class="fond_formulaire">                    <div align="center">
                                  <input id="numero_fabrication<?php echo $i; ?>" name="numero_fabrication<?php echo $i; ?>" size="10" maxlength="10" />                  
                                </div></td></tr>
                            <?php
                            $i++;
                            }    
                        ?>
    Donc j'essaye de récupérer les valeurs envoyées en POST quand le formulaire est envoyé mais j'ai que des "array1, array2,..." :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for ($i=1;$i<12;$i++){
                if(isset($_POST['ref'.$i])){
                $ref[] = isset($_POST['ref'.$i]);
                $designation[] = isset($_POST['designation'.$i]);
                $ref_appareil[] = isset($_POST['ref_appareil'.$i]);
                $numero_fabrication[] = isset($_POST['numero_fabrication'.$i]);
                $qte[] = isset($_POST['qte'.$i]);
                echo $ref.$i;
                $result1 = mysql_query("INSERT INTO posts_commande (id_commande, ref_piece , quantite, designation, ref_appareil , num_fabric) VALUES ('$id_commande', '$ref$i', '$qte$i', '$designation$i', '$ref_appareil$i', '$numero_fabrication$i')", $dbprotect) or die(mysql_error());
                }
     
            }
    Il faut aussi prendre en compte que les lignes ne sont pas forcément remplises :-S Et donc je ne veux insérer dans ma table que celles dont au moins que le champ "désignation" soit remplit.
    Dans cet exemple j'ai mis dans le if la condition que la "ref" soit remplise pour prendre en compte la ligne dans la base.

    Merci pour votre aide
    A bientôt

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    remplise


    Juste par curiosité (ça doit marcher puisque tu le mets), il n'y a pas de "type" dans tes "input", ça donne quoi à l'affichage ?
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Salut



    ba avant l'envoi ça donne ça :



    Puis après l'envoi, ça me renvoi mon echo du code :
    Array1Array2Array3Array4Array5Array6Array7Array8Array9Array10Array11
    Puis dans ma base :


  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est normal $ref est un tableau, donc $ref . $i ça donne Array avec un nombre
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Je sais pas comment faire
    tu peux me dire comment je récupère les valeurs?
    Merci

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(isset($_POST['ref' . $i])
      $valeur = $_POST['ref' . $i];
    Enfin si la syntaxe de ton isset fonctionnait, ça marchera. Et après tu fais ce que tu veux avec $valeur.


    Ou sinon avec tes syntaxes remplace tous les trucs de la forme $res$i par $res[$i] mais tu vas tout récupérer dans ta table, même quand les valeurs sont pas définies (puisque tu mets dans tes tableaux les valeurs des isset, c'est à dire si les variables existent ou pas mais pas leur contenu.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Alors j'ai modifié mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //requète pour enregistrer les valeurs de "poste de la commande" du formulaire
            for ($i=1;$i<12;$i++){
                if(isset($_POST['ref'.$i])){
                $ref[$i] = $_POST['ref'.$i];
                $designation[$i] = $_POST['designation'.$i];
                $ref_appareil[$i] = $_POST['ref_appareil'.$i];
                $numero_fabrication[$i] = $_POST['numero_fabrication'.$i];
                $qte[$i] = $_POST['qte'.$i];
                echo $ref;
                $result1 = mysql_query("INSERT INTO posts_commande (id_commande, ref_piece , quantite, designation, ref_appareil , num_fabric) VALUES ('$id_commande', '$res[$i]', '$qte[$i]', '$designation[$i]', '$ref_appareil[$i]', '$numero_fabrication[$i]')", $dbprotect) or die(mysql_error());
                }
     
            }
    L'erreur retournée est qu'il ne reconnais pas le nom des valeurs dans la requète sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Array
    Notice: Undefined variable: res in e:\program  files\easyphp1-8\www\ci secu\formulaire_client.php on line 76
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result1 = mysql_query("INSERT INTO posts_commande (id_commande, ref_piece , quantite, designation, ref_appareil , num_fabric) VALUES ('$id_commande', '$res[$i]', '$qte[$i]', '$designation[$i]', '$ref_appareil[$i]', '$numero_fabrication[$i]')", $dbprotect) or die(mysql_error());
                }

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est normal c'est pas res mais ref, il faut pas recopier bêtement ce qu'on balance sans chercher à comprendre sinon ça sert à rien, bon courage.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  9. #9
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Super oui je viens de voir ça :-S

    j'ai réussi a merde les conditions aussi sur la ref et l'enregistrement ne prend que les lignes remplises

    Merci pour ton aide c'est super, deux jours que je galère en ne voyant pas la faute de frappe :-S

    voici le code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //requète pour enregistrer les valeurs de "poste de la commande" du formulaire
            for ($i=1;$i<12;$i++){
                if(isset($_POST['ref'.$i]) && $_POST['ref'.$i] != ""){
                $ref[$i] = $_POST['ref'.$i];
                $designation[$i] = $_POST['designation'.$i];
                $ref_appareil[$i] = $_POST['ref_appareil'.$i];
                $numero_fabrication[$i] = $_POST['numero_fabrication'.$i];
                $qte[$i] = $_POST['qte'.$i];
                $result1 = mysql_query("INSERT INTO posts_commande (id_commande, ref_piece , quantite, designation, ref_appareil , num_fabric) VALUES ('$id_commande', '$ref[$i]', '$qte[$i]', '$designation[$i]', '$ref_appareil[$i]', '$numero_fabrication[$i]')", $dbprotect) or die(mysql_error());
                }
     
            }

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Cooooooool


    Bon courage pour la suite.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/04/2013, 22h15
  2. Entrer plusieurs lignes en meme temps a partir d'un formulaire
    Par cleveland dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/05/2007, 14h03
  3. [MySQL] Remplir plusieurs lignes d'une seule table avec le même formulaire
    Par zehni dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/09/2006, 12h12
  4. Réponses: 4
    Dernier message: 07/09/2006, 12h12
  5. Réponses: 9
    Dernier message: 18/08/2005, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo