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 averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    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
    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.

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    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 émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    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 émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    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 averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    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, 16h49
  2. Réponses: 3
    Dernier message: 26/08/2007, 15h35
  3. Réponses: 17
    Dernier message: 02/03/2007, 09h46
  4. Autocompletion sur plusieur champs texte
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/07/2006, 15h20
  5. [FLASH MX] Une scrollbar pour plusieurs champs texte
    Par ffmlgraphics dans le forum Flash
    Réponses: 1
    Dernier message: 08/08/2005, 16h45

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