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 :

récup champs dynamiques avec foreach imbriqué


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut récup champs dynamiques avec foreach imbriqué
    Salut à tous,

    j'ai un formulaire qui par le biais d'un bouton "Ajouter", permet d'ajouter dynamiquement (autant de fois que je veux) un div contenant 2 champs

    j'arrive à récupérer le contenu de ces champs dynamiques MAIS je n'arrive pas à les afficher correctement

    voici le fichier de traitement de mon formulaire :

    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
    if (isset($_POST['envoi']) && $_POST['envoi'] == "ENVOYER"){ 
     
    foreach($_POST['les_photos'] as $key_1 => $value_1) {
     
    	foreach($_POST['les_utilisations'] as $key_2 => $value_2) {
    		echo $value_1 . '<br/>';
    		echo $value_2 . '<br/><br/>';
    	}
    }
     
    } else {
     
    	header ('Location: formulaire.htm');
    	exit(); // obligatoire après la fonction header()
     
    }
    EXEMPLE :
    si je clique 2 fois sur mon bouton "Ajouter",
    ça affiche donc deux div contenant les deux champs, soit 4 champs.
    je rempli mes 4 champs et quand je clique sur mon bouton envoyer, à l'affichage, j'obtiens ceci :
    photo 01
    utilisation photo 01

    photo 01
    utilisation photo 02

    photo 02
    utilisation photo 01

    photo 02
    utilisation photo 02
    mais il faudrait que ça affiche ceci :

    photo 01
    utilisation photo 01

    photo 02
    utilisation photo 02
    une petite aide me serait bien utile

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Pourquoi renvoyer comme données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['les_utilisations']
    alors qu'apparemment celle-ci contiendrait pour ainsi dire la même chose que ?
    Dans l'exemple, il y a que "utilisation " qui change.

    Ceci suffirait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($_POST['les_photos'] as $value) {
    	echo $value . '<br/>';
    	echo 'utilisation '.$value . '<br/><br/>';
    }
    Mise à par ça, peut être en exploitant la clé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($_POST['les_photos'] as $key_1 => $value_1) {
    	echo $value_1 . '<br/>';
    	echo $_POST['les_utilisations'][$key_1] . '<br/><br/>';
    }
    Le problème ici, c'est que ces 2 données (les_photos, les_utilisations) sont techniquement parlant indépendant, alors que de ton coté tu souhaite qu'il le soit.
    Dans l'absolu on pourrait obtenir ci-dessus quelque chose d'incohérent.


    Normalement, il serait mieux de faire autrement au niveau du formulaire, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form>
        <input name="photos[][nom]" value="photo 01" />
        <input name="photos[][utilisation]" value="utilisation photo 01" />
    </form>
    Ici, on obtiendra 1 seule donnée intégrant les 2 éléments : nom et utilisation, ce qui fait quelle sont totalement liées.

    Un simple parcourt du tableau "photos" suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($_POST['les_photos'] as $photo) {
    	echo $photo['nom'] . '<br/>';
    	echo $photo['utilisation'] . '<br/><br/>';
    }
    Enfin à essayer
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Merci RunCodePhp,
    ça fonctionne parfaitement avec ton deuxième bout de code

    Mais comme tu le suggères, je vais quand même essayer d'adapter mon formulaire pour obtenir quelque chose de plus propre.

    Merci encore

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

Discussions similaires

  1. ajout de champ dynamique avec dreamweaver CS5
    Par futur_informaticienn dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 23/06/2011, 19h51
  2. Générer un champ dynamiquement avec une requête ?
    Par The Molo dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/06/2007, 15h59
  3. Requete avec DATE_SUB / INTERVAL et champ dynamique
    Par vonde dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/03/2007, 10h31
  4. Inserer dynamiquement des champs input avec attribut
    Par titou250 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2007, 09h44
  5. [C#] Récup champ IMAGE SQLServer avec un DataSet Typé
    Par SoaB dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/07/2005, 14h53

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