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 :

[PHP-JS] récupération de plusieurs champs texte ayant un nom "propre"


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 13
    Points
    13
    Par défaut [PHP-JS] récupération de plusieurs champs texte ayant un nom "propre"
    bonjour à tous,
    alors essayons d'être concis et précis:
    dans mon formulaire:

    je créé plusieurs champs texte en javascript via un bouton "ajouter un champ", ses champs ont un nom qui leur est propre :

    ch.setAttribute('name','mes_ch[]');

    dans mon pgm:

    je veux récupérer les textes entrés dans les champs :

    $result = $_POST['mes_ch'];
    foreach($result as $text)
    {
    if $text =..........
    }

    mais j'ai une erreur, il ne connait pas mes_ch...
    et la je bloque depuis un moment et la patience n'est pas ma plus grande qualité...!
    merci

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Dodielapatate
    ch.setAttribute('name','mes_ch[]');
    T'es sûr que c'est ça ?

    Citation Envoyé par Dodielapatate
    mais j'ai une erreur, il ne connait pas mes_ch...
    Tu peux être plus précis ? Y a un message d'erreur ? Il ne rentre pas dans la boucle ? etc.


    Tu peux tester 2 trucs :
    1. Poster ton formulaire en GET (si c'est possible) et nous indiquer l'URL que tu obtiens ? Tu dois avoir des ...&mes_ch[]=titi&mes_ch[]=toto&... pour que ton truc marche.
    2. Faire un print_r($_POST) pour voir tout ce que contient la variable $_POST. Ca te permettra de voir s'il récupère des mes_ch.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    quand je fait un print_r($_POST['mes_ch']);
    j'ai

    Array ( [0] => aaa )
    Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\pgm\donnees_demande.php on line 41

    PS:je peux être plus précisE

  4. #4
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Hello,

    Si tu crée plusieurs champ texte et que tu lis la source de ta page (clic droit - afficher la source), quels sont les noms de tes champs ?

    A ta place je me debrouillerais pour que le nom du champ texte en javascript soit un truc du style champ_texte_1 champ_texte_2 champ_texte_3
    Ensuite je stockes dans une variable en champ caché (hidden) le nombre de champ texte que j'ai.

    Ensuite je fais une boucle du style de 0 a mon_nombre_de_champ ($mnc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for ($x=0;$x<$_POST['mnc'];$x++) {
     
          if ($_POST['champ_texte_'.$x]) {
          echo 'Champ texte ' . $x . ' a renvoyé : ' . $_POST['champ_texte_'.$x];
          }
    }

    Il n'y a que les boites de selection avec l'attribue multiple et les boites d'options qui renvoient des tableaux...

    @+
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    alors j'ai trouvé ça et ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach($_POST['mes_ch'] as $champ)
    {$a = $a.$champ." ";}
    je récupère mes champs les uns à la suite des autre, ce qu'il me faut.

    mon nouveau soucis est de sauter cette étape si un champ supérieur (name="req" ici) est vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($_POST['req'] != "")
    {
    foreach($_POST['mes_ch'] as $champ)
    	{$a = $a.$champ." ";}
    }
    else
    {
    foreach ($_POST['requete'] as $selecreq)
    	{$b = $b.$selecreq." ";}
    }
    mais il cherche quand meme les données dans mes_ch et me met donc une erreur :
    Invalid argument supplied for foreach()

  6. #6
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Et ceci ne serait t-il pas meilleur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if ($_POST['req'])
    Ce qui teste si la variable req existe, alors que ce que tu teste c'est si la variable req n'est pas egale a ""

    Sinon ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if ($_POST['req'] > 1)
    Ce qui ici teste si req contient plus de 1 caracteres

    @+
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    en fait j'ai un champ texte permanant (req) puis je peux ajouter des champs texte (mes_ch), ensuite j'ai une liste de choix obtenu via une BD.
    Je voudrai ignorer le foreach pour mes_ch si aucun champs n'a été ajouté dans mon formulaire.

  8. #8
    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
    Je vais peut-être poser une question débile, mais pourquoi ne pas tester si $_POST['mes-ch'] existe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!empty($_POST['mes_ch'])
    {
      foreach($_POST['mes_ch'] as $champ)
       {$a = $a.$champ." ";}
    }
    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]

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    ce n'est pas bête du tout vu que ça m'a débloqué!!!
    donc voici le pgm, pour personne ne galère comme je viens de la faire!!!

    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
    <?php
    <input name="req" type="text" size="51" maxlength="50">
    <script type="text/javascript">
    var c,c2;
    function plus(){
    c=document.getElementById('req1');
    c2=c.getElementsByTagName('input');
    var ch=document.createElement('input');
    ch.setAttribute('type','text');
    ch.setAttribute('name','mes_ch[]');
    c.appendChild(ch);
    document.getElementById('sup').style.display='inline';
    }
    </script>
    <div id="req1" style="margin-left;width:200px"></div>
    <input type="button" value="ajouter une requête" onclick="plus()">
    ?>
    dans le pgm :
    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
     
    <?php
    $a = "";
    $b = "";
    $c = "";
    $concatreq = "";
    //si que choix parmis la liste proposée
    if ($_POST['req'] == "")
    {
    foreach ($_POST['requete'] as $selecreq)
    	{$concatreq = $concatreq.$selecreq." ";}
    }
    //si écriture d'une requête
    else
    {	
    //récupération de la 1ère requête écrite ($a)
    $a = $_POST['req'];
    //si ajout de champs
    if (!empty($_POST['mes_ch']))
    {
    //récupération des recuête ajoutées ($b)
    foreach($_POST['mes_ch'] as $champ)
    {$b = $b.$champ." ";}
    }
    //si choix dans la liste proposée ($c)
    if ($_POST['requete'] != "")
    {
    foreach ($_POST['requete'] as $selecreq)
    {$c = $c.$selecreq." ";}
    }
    $concatreq = $a." ".$b." ".$c." ";
    }
    echo $concatreq;
    ?>
    merci à tous!!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/08/2007, 17h49
  2. Réponses: 3
    Dernier message: 26/08/2007, 16h35
  3. Réponses: 17
    Dernier message: 02/03/2007, 10h46
  4. Autocompletion sur plusieur champs texte
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/07/2006, 16h20
  5. [FLASH MX] Une scrollbar pour plusieurs champs texte
    Par ffmlgraphics dans le forum Flash
    Réponses: 1
    Dernier message: 08/08/2005, 17h45

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