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érer les réponses d'un input dans un Array généré avec une boucle


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Independant
    Inscrit en
    Avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Independant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Récupérer les réponses d'un input dans un Array généré avec une boucle
    Bonjour a toutes et tous,

    Voici mon soucis
    Je genere un tableau via une boucle en prenant les datas dans un array (include) il y a plusieurs champs et le dernier est un INPUT.
    Tous cela dans un FORM Post traité par un autre fichier PHP pour l envoi d un email
    Pas de soucis pour les datas ni le tableau mais je n arrive pas a recuperer les donnees de l INPUT que l utilisateur introduit dans le 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    include 'Data.php';
     
    echo '    <form method="post" action="Email.php">';
    ...
      echo '	  <td><input type="text" name="nom" size="30" onkeypress="verifierCaracteres(event); return false;" /></td>';
      echo '	  <td colspan="8">Email de confirmation :</td>';
      echo '	  <td><input type="text" name="emailreponse" size="30" /></td>';
    ...
     	switch ($utilisateur) {
    // 		
        case 123456:
          for ($row=0;$row<$nb_lignes;$row++)
          {
            if ($tab1[$row][2] == "BE")
            {
            echo 	'<tr> <td><center><a href="attente.gif" target="_blank"><font color="FFFFFF" size="10"><img src="attente.gif" width="50" height="50"></a> </td> <td><center>'
              .$tab1[$row][0].'</center></td><td><center>'.$tab1[$row][1].'</td><td><center>'.$tab1[$row][2].'</td><td><center>'.$tab1[$row][3].'</td><td><center>'
              .$tab1[$row][4].'</td><td><center>'.$tab1[$row][5].'</td><td><center>'.$tab1[$row][6].'</td><td><center>'.$tab1[$row][7].'</td><td><center>'
              .$tab1[$row][8].'</td><td><center>'.$tab1[$row][9].'</td><td><center>'.$tab1[$row][10].'</td><td><center>'.$tab1[$row][11].'</td><td><center>'
              .$tab1[$row][12].'</td><td><center>'.$tab1[$row][13].'</td><td><center>'.$tab1[$row][14].'</td><td><center>'.$tab1[$row][15].'</td><td><center>'.$tab1[$row][16]
              .'</td><TD><center><input type = "text" value = 0 name = '.$tab1[$row][17].' id = '.$tab1[$row][17]
              .'  required maxlength="4" size="4" /></center></td><td><center></center></td><td><center></center></td> </tr>'
              ;
            }
          }
          break;
    ...
     
      echo '</TABLE>';
     
     	echo '<TABLE align="center" border="1">';
      echo '<tr>';
      echo '  <td><input type="submit" value="Envoyer" /></td>';
            echo '  <td><input type="reset" value="Effacer" /></td>';
      echo '</tr>';
      echo '</table>';
     
     
      echo '</form>';
    $tab1[$row][17] est l endroit ou devrait s enregistrer la donnees de l utilisateur

    Le traitement de l envoi d email :
    apres verification et les donnees d entete ... (procedure qui est deja en ordre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    include 'Data.php';
     
    // je voulais refaire une boucle pour l enregistrement du corps du message mais les donnees du formulaire ne sont pas dans l ARRAY le [17] etant la reponse de l utilisateur. Etant donné que j ai fait l include au debut, les autres donnees s affichent correctement.
     
    if ($tab1[$row][17] > 0) { $mail_corps .= "$tab1[$row][17]"."x ".$tab1[$row][0]." ".$tab1[$row][3]." (".$tab1[$row][4]." €/".$tab1[$row][5]." €) \n" ; }
    Comment puis je faire pour enregistrer ou forcer l enregistrement des donnees introduites par l utilisateur du formulaire pour les recuperer ?

    D avance merci pour vos solutions eventuelles

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Les données d'un formulaire sont récupérables dans la super globale $_POST ou $_GET, étant donné que tu as indiqué la méthode post, ta variale sera dans $_POST['emailreponse'].

    Mais bon tu n'as pas fait assez de tutos avant de coder, ton code est un vrai bin's et tu n'iras pas loin si tu continues sans approfondir préalablement tes connaissances. D'une part il faut éviter les tableaux html quand ils ne sont pas nécessaire, d'autre part un tableau php se liste avec foreach, et puis si tu utilises des tableaux php penses aussi à utiliser des index alphanumériques quand tu veux plus facilement identifier les éléments. Enfin on utilise des fermetures et ouvertures de balises php pour avoir un code plus lisible quand on écrit du html imbriqué plutôt que de mettre des echo devant chaque ligne. Enfin au niveau de la structure il vaut mieux séparer le plus possible le code php que l'on mettra en haut de la page du html que l'on mettra en bas. Fais des exercices sur les formulaires et sur la gestion des tableaux php avant d'aller plus loin, car là tu es entrain de faire un code illisible et difficilement évolutif.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Independant
    Inscrit en
    Avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Independant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta reponse, c est pour cela que j utilise le POST afin de pouvoir les recuperer mais comme j utilise un ARRAY afin de ne pas devoir taper toutes les lignes (qui ne sont pas toujours les memes etj utilise INCLUDE afin de ne devoir changer qu un fichier au lieu de 48), je genere le tableau avec une boucle. Le probleme c est que pour chaque ligne, il me faut une reponse et le INPUT demande un nom "fixe" afin de le retrouver avec POST[]. Ce nom fixe est le champ 17 de mon ARRAY. Une fois la boucle effectuée, j ai le bon resultat affiché mais lors du remplissage du champs, je n arrive pas le recuperer. Je viens d essayer :
    For et Foreach donneront le meme resultat au niveau de la recuperation mais oui foreach est mieux pour les tableaux, je l ai deja lu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reponse = $_POST[$tab1[5][17]];
    mais rien n y fait
    Pour les exercices oui tu as raison mais ce n est pas mon metier des que cela fonctionne je reprends mes occupations mais le gain de temps, au lieu de modifier les datas dans 48 fichiers par des copier coller de formules XLS, je les genere 1x et modifie 1 seul fichier. C est appreciable et donc les tableaux sont obligatoires.
    C est cette partie la qui pose probleme je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            echo 	'<tr> <td><center><a href="attente.gif" target="_blank"><font color="FFFFFF" size="10"><img src="attente.gif" width="50" height="50"></a> </td> <td><center>'
              .$tab1[$row][0].'</center></td><td><center>'.$tab1[$row][1].'</td><td><center>'.$tab1[$row][2].'</td><td><center>'.$tab1[$row][3].'</td><td><center>'
              .$tab1[$row][4].'</td><td><center>'.$tab1[$row][5].'</td><td><center>'.$tab1[$row][6].'</td><td><center>'.$tab1[$row][7].'</td><td><center>'
              .$tab1[$row][8].'</td><td><center>'.$tab1[$row][9].'</td><td><center>'.$tab1[$row][10].'</td><td><center>'.$tab1[$row][11].'</td><td><center>'
              .$tab1[$row][12].'</td><td><center>'.$tab1[$row][13].'</td><td><center>'.$tab1[$row][14].'</td><td><center>'.$tab1[$row][15].'</td><td><center>'.$tab1[$row][16]
              .'</td><TD><center><input type = "text" value = 0 name = '.$tab1[$row][17].' id = '.$tab1[$row][17]
              .'  required maxlength="4" size="4" /></center></td><td><center></center></td><td><center></center></td> </tr>'
              ;
    Comment attribuer le nom "fixe" a cet INPUT afin de le relire avec POST ?
    Et est ce que cela peut fonctionner ainsi ou ai je commis une erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type = "text" value = 0 name = '.$tab1[$row][17].' id = '.$tab1[$row][17].'  required maxlength="4" size="4" />
    Dans le PHP de traitement, dois faire quelque chose pour que l ecriture des valeurs soit faite dans l ARRAY ?

    Merci a toi

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour organiser les valeurs des champs dans des tableaux, vous pouvez utiliser la notation avec des crochets :
    https://www.php.net/manual/fr/faq.ht...aq.html.arrays
    cela fonctionne avec plusieurs dimensions.

    ensuite pour bien voir ce que vous récupérez dans $_POST, vous pouvez essayer cette fonction qui affichera dans le code HTML, n'importe quelle variable composée d'objets, tableaux, code XML ou valeurs TRUE, FALSE ou NULL,
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function aff($var)
    {
    	echo "<pre>";
    	echo htmlspecialchars(var_export($var, TRUE));
    	echo "</pre>";
    }

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Independant
    Inscrit en
    Avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Independant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Je viens de comprendre une partie de mon erreur
    (Oui je suis tres novice, 1 mois de decouverte de PHP)
    On m a suggere de faire CTRL U et j ai pu constaté que le nom de mon INPUT etait 0 donc normal de ne rien avoir.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type = "text" value = 0 name = $tab1[5][17] id = $tab1[5][17] required maxlength="4" size="4" />

    Je viens de modifier afin d avoir le nom de l endroit de mon tableau et le CTRL U me donne la bonne ligne de commande

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type = "text" value = 0 name = $tab1['.$row.'][17] id = $tab1['.$row.'][17] required maxlength="4" size="4" />
    Malheureusement je n ai toujours pas les valeurs

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par MarcMGC Voir le message
    Pour les exercices oui tu as raison mais ce n est pas mon metier des que cela fonctionne je reprends mes occupations mais le gain de temps, au lieu de modifier les datas dans 48 fichiers par des copier coller de formules XLS, je les genere 1x et modifie 1 seul fichier. C est appreciable et donc les tableaux sont obligatoires.
    Tu n'as pas encore suffisamment de connaissances pour expliquer clairement ton problème. Tu pars de quoi et tu veux faire quoi exactement ? Arrêtes de nous montrer ton code car il ne correspond à rien de connu, ni de près ni de loin (et heureusement).

    Les exercices sont nécessaires pour faire un code fonctionnel, que ce soit ton métier ou pas ne change rien à l'affaire

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    j'ajouterais à ce que dit ABCIWEB au post 2 que les balises html <font> et <center> sont dépréciées et qu'on les remplace par du CSS...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/01/2019, 18h11
  2. [PHP 5.5] Récupérer les valeurs qui se trouvent dans un array numéroté
    Par tonton.odilon dans le forum Langage
    Réponses: 10
    Dernier message: 02/09/2015, 18h02
  3. Réponses: 2
    Dernier message: 12/08/2012, 18h43
  4. [Toutes versions] Transformer les noms abrégés en anglais dans un classeur ouvert avec une version française en nombres
    Par Pierre Dumas dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/02/2011, 08h08
  5. verif champ input générés avec une boucle
    Par rudak dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/12/2009, 07h50

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