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 :

Envoi d'un nombre non défini d'enregistrements dans mySql


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Envoi d'un nombre non défini d'enregistrements dans mySql
    Bonjour à toutes et tous,

    J'ai un formulaire html simple avec une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <form><table><tr><td>inputElem[0]</td><td>inputElem1[0]</td><td>inputElem2[0]</td><td>inputElem3[0]</td></tr></table></form>
    auquel j'ai adjoins un javascript qui ajoute une ligne par clic du visiteur.

    ===> Je ne peux pas connaître à l'avance le nombre de lignes qui vont être ajoutées. < ===

    Je me retrouve avec un nombre 0,n de jeux d'enregistrements bien rangés dans leur $_POST et prêts à être enregistrés en base.

    Ma question est : comment faire maintenant pour créer la boucle qui va les enregistrer un par un ?

    Dois je créer un compteur sur le formulaire pour connaître le nombre d'enregistrements à insérer (si oui comment ?) puis faire une boucle for.. sur le traitement ?

    Je vous remercie par avance de votre aide et de vos idées,

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux commencer par faire un var_dump($_POST) pour voir à quoi ressemblent réellement les données envoyées par le formulaire.
    Parce que là, je dois avouer que "inputElem[0]", ça m'évoque pas grand chose. C'est un raccourci pour un champ du genre <input type="text" name="inputElem[0]"/> ? A quoi ressemble une ligne ajoutée ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Celira Voir le message
    Tu peux commencer par faire un var_dump($_POST) pour voir à quoi ressemblent réellement les données envoyées par le formulaire.
    Parce que là, je dois avouer que "inputElem[0]", ça m'évoque pas grand chose. C'est un raccourci pour un champ du genre <input type="text" name="inputElem[0]"/> ? A quoi ressemble une ligne ajoutée ?
    Oui c'est ça. je te poste ci-dessous le code original. (Merci de ton aide ;-)
    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
    26
     
    <tr>
    <td class="col-sm-1"><input type="text" class="form-control" name="inputOrdre[0]" value="" /></td>
    <td><input type="text" class="form-control" name="inputNom[0]" value="" /></td>
    <td><input type="text" class="form-control" name="InputPoste[0]" value="" /></td>
    <td class="col-sm-3">
    	<div class="input-group">
    	<span class="input-group-addon">&euro;</span>
    	<input type="text" class="form-control" name="InputSAB[0]" value="" />
    	<span class="input-group-addon">.00 /an</span>
    	</div><!-- #input-group -->
    </td>
    <td class="col-sm-1"><input type="text" class="form-control" name="InputContrat[0]" value="" /></td>
    </tr>
    <script type="text/javascript">
    $(document).ready(function(){
    var compteur = 1;
    $(".addCF").click(function(){
    $("#customFields").append('<tr><td class="col-sm-1"><input type="text" class="form-control" id="customFieldName" name="inputOrdre['+compteur+']" value="" /></td><td><input type="text" class="form-control" id="customFieldName" name="inputNom['+compteur+']" value="" /></td><td><input type="text" class="form-control" id="customFieldName" name="InputPoste['+compteur+']" value="" /></td><td class="col-sm-3"><div class="input-group"><span class="input-group-addon">&euro;</span><input type="text" class="form-control" id="customFieldName" name="InputSAB['+compteur+']" value="" /><span class="input-group-addon">.00 /an</span></div></td><td class="col-sm-1"><input type="text" class="form-control" id="customFieldName" name="InputContrat['+compteur+']" value="" /></td><td><a href="javascript:void(0);" class="remCF">Supprimer</a></td></tr>');
    									compteur++;
    									});
    									$("#customFields").on('click','.remCF',function(){
    									$(this).parent().parent().remove();
    									});
    								});
    								</script>
    Si je pouvais récupérer la valeur de compteur, je dois pouvoir l'utiliser pour faire une boucle sur le nombre exact d'enregistrements... je cherche comment récupérer cette valeur.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Avec la structure que tu as actuellement, tu vas récupérer plusieurs tableaux dans POST. Tu peux boucler sur un d'entre eux avec une instruction foreach et aller chercher les données des autres dans la boucle. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($_POST['inputOrdre'] as $index => $ordre) {
        $nom = $_POST['inputNom'][$index];
        $poste = $_POST['inputPoste'][$index];
        // ...
    }
    Ou alors tu peux modifier la structure de tes champs pour avoir un tableau de 2 dimensions avec toutes les données d'une même ligne dans un même tableau
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <td class="col-sm-1"><input type="text" class="form-control" name="input[0][ordre]" value="" /></td>
    <td><input type="text" class="form-control" name="input[0][nom]" value="" /></td>
    <td><input type="text" class="form-control" name="input[0][poste]" value="" /></td>
    à lire par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($_POST['input'] as $index => $input) {
        $ordre = $input['ordre'];
        $nom = $input['nom'];
        $poste = $input['poste'];
        // ...
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Ma solution
    Bonsoir et merci de ton aide. Depuis hier j'ai résolu mon problème en deux lignes de javascript ;-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript">
    								$(document).ready(function(){
    								var compteur = 0;
    									$(".addCF").click(function(){
    									$("#customFields").append('<tr><td class="col-sm-1"><input type="text" class="form-control" id="customFieldName" name="inputOrdre'+compteur+'" value="" /></td><td><input type="text" class="form-control" id="customFieldName" name="inputNom'+compteur+'" value="" /></td><td><input type="text" class="form-control" id="customFieldName" name="InputPoste'+compteur+'" value="" /></td><td class="col-sm-3"><div class="input-group"><span class="input-group-addon">&euro;</span><input type="text" class="form-control" id="customFieldName" name="InputSAB'+compteur+'" value="" /><span class="input-group-addon">.00 /an</span></div></td><td class="col-sm-1"><input type="text" class="form-control" id="customFieldName" name="InputContrat'+compteur+'" value="" /></td><td><a href="javascript:void(0);" class="remCF">Supprimer</a></td></tr>');
    									compteur++;
    									document.getElementById('inputID').value = compteur;
    									});
    									$("#customFields").on('click','.remCF',function(){
    									$(this).parent().parent().remove();
    									});
    								});
    								</script>
    Coté traitement je récupère le POST['inputID'] et je fais une jolie boucle FOR puisque je connais le nombre d'ajouts .
    Mais je retiens tes solutions que je testerais pour le cas <NOSCRIPT>

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

Discussions similaires

  1. Réponses: 36
    Dernier message: 15/05/2013, 13h44
  2. Réponses: 9
    Dernier message: 25/05/2011, 17h56
  3. Détection d'enregistrement dans MySQL
    Par fabou3377 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/11/2006, 18h33
  4. Réponses: 10
    Dernier message: 21/06/2006, 14h50
  5. [Efficacite/Redondance] Millions d'enregistrement dans MySQL
    Par nico33307 dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/07/2005, 21h21

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