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 :

[Tableaux] Mauvaise récupération d'une variable [FAQ]


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut [Tableaux] Mauvaise récupération d'une variable
    bonjour à tous!

    ça fait quelque temps que je buche sur mon problème, là j'en peux plus j'ai vraiment besoin de votre aide

    j'ai un formulaire (2 champs) de base auquel je peux rajouter autant de pair de champs que je veux

    voici le code:
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
     
    if (isset ($_POST['chps']))
    {
      echo $_POST['descriptif']."desc<br>";
    } // il ne me renvoit rien
     
    echo '<table border = 0>';
     echo '<form method="post" action="ajoutchamps2.php">';
      echo '<tr><td> ';
     
     
    if (isset ($_POST['chp']))
    {
      if ($_POST['chp'] == 'ajouter')
      {
    // count initialisé à 0
    $count = $_POST['count'];
    echo $count."COUNT<br>";
     
    //nombre de ligne à ajouter
    $nombre = $_POST['nombre']; 
    echo $nombre."NBRE DE LIGNE RAJOUTEE<br>";
     $jj = $count + $nombre +1;
     echo $jj."LIGNE AU TOTAL<br>";
     
     
     for ($x = 0; $x< $jj; $x++)
     {
     
     
     
      echo '
      <table> ';
     
      echo '
     <tr><td>
     
      Nom caracteristique<input type=text name=champ "'.$x.'">
      </td>
      <td>
      Descriptif<textarea name= descriptif"'.$x.'"></textarea>
     
      </td>
      </tr>
     
      </table>';
    }
    }
    }
     
    echo '<table>';
    //  echo '<form method="post" action="ajoutchamps2.php">';
     
    echo '<tr>
    <td>';
    echo 'Nom caracteristique : <input type="text" name="champ">
    </td>
    <td>
    Descriptif<textarea name="descriptif"></textarea>
    </td>
    </tr>
    <tr>
    <td>';
     
    if (isset ($_POST['count'])) 
    {
     
    echo '<input type="hidden"  name="count" value="'.$jj.'"> ';
    }
    else
    {
      echo '<input type="hidden"  name="count" value=0> ';
    }
     
    echo '<input type="text"  name="nombre" size="1">';
     
    echo '<input type="submit" name="chp" value=ajouter>';
    echo '<input type="submit" name="chps" value=inserer>';
    echo '</td></tr>
    </table>
    </td></tr> ';
    echo '</form></table>';
    en faite quand j'appuie sur le bonton "inserer", qui me servira à inserer les valeurs des champs "nom caracteristique" et "descriptif" dans ma bdd, il me donne comme erreur : Notice: Undefined variable: jj ...
    à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset ($_POST['count'])) 
    {
    
    echo '<input type="hidden"  name="count" value="'.$jj.'"> '; ==> ICI
    }
    je veux tout simplement récuperer les données voulues mais au lieu de ça j'ai erreur et pa de récuperation de données..
    je commence à desesperer..

    si quelqu'un pourrait m'aider je lui en serait vraiment reconnaissant...

    merci d'avance

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ton soucis vient surtout de la définition de ta variable qui se fait que dans le if.

    Teste avec ce code :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
        $jj = 0;
        if (isset ($_POST['chp']))
        {
              if ($_POST['chp'] == 'ajouter')
              {
                // count initialisé à 0
                $count = $_POST['count'];
                echo $count . 'COUNT<br>';
     
                //nombre de ligne à ajouter
                $nombre = $_POST['nombre']; 
                echo $nombre . 'NBRE DE LIGNE RAJOUTEE<br>';
                $jj = $count + $nombre + 1;
                echo $jj . 'LIGNE AU TOTAL<br>';
     
     
                 for ($x = 0; $x < $jj; $x++)
                 {
                     echo '<table><tr>';
                     echo '<td>Nom caracteristique <input type="text" name="champ'.$x.'"></td>';
                      echo '<td>Descriptif<textarea name="descriptif'.$x.'"></textarea></td>';
                    echo '</tr></table>';
                }
            }
        }
     
        echo '<table>';
    //  echo '<form method="post" action="ajoutchamps2.php">';
         echo '<tr>';
        echo '<td>Nom caracteristique : <input type="text" name="champ"></td>';
        echo '<td>Descriptif<textarea name="descriptif"></textarea></td>';
        echo '</tr>';
        echo '<tr>';
        echo '<td>';
     
        if (isset ($_POST['count']) and $jj > 0) 
        {
             echo '<input type="hidden"  name="count" value="'.$jj.'"> ';
        }
        else
        {
              echo '<input type="hidden"  name="count" value="0"> ';
        }
     
        echo '<input type="text"  name="nombre" size="1">';
     
        echo '<input type="submit" name="chp" value="ajouter">';
        echo '<input type="submit" name="chps" value="inserer">';
        echo '</td></tr></table></td></tr> ';
        echo '</form></table>';
    PS : Essaie d'indenter le code, ça facilite la lecture

  3. #3
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    ok j'ai plus d'erreur...

    mais je ne sais pas comment récuperer la valeur du champs "champ'.$x.'" dans la boucle for

    parce que j'ai voulu mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset ($_POST['champ'.$x.'']))
              {
              echo $_POST['champ'.$x.'' ] ."<br>";
              }
    mais ça me met comme notice:
    Notice: Undefined variable: x in c

    purééééééééé ça me prend la tete

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Pour faire claire :
    Undefined variable
    veut tout simplement dire que ta variable n'existe pas.

    Maintenant si tu veux pouvoir faire ce genre de chose tu as deux possibilités :
    • Tout taper à la main ($_POST['champ0'], ....)
    • Ou appeler directement ton champ : champ[], qui sera considéré comme un tableau et pour récupérer les valeurs, tu fais le même traitement qu'un tableau (while, for ou foreach)

  5. #5
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    huummm

    comprend splus là lol
    j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    elseif ($_POST['chp'] == 'inserer')
            {
              echo $_POST['champ']."champ<br>";
              echo $_POST['descriptif']."desc<br>";
     
              for ($x = 0; $x < $jj; $x++)
     
              {
              echo $_POST['champ'.$x.''] ."<br>";
              }
            }
    ça ne me recupère pas les valeurs de champs $x

    mais je dois mettre champs[], comme ça??

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Montre le code de création des champs et celui de la récupération des données

  7. #7
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    le voici
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?
     
     
     echo '<form method="post" action="ajoutchamps3.php">';
     
     $jj = 0;
        if (isset ($_POST['chp']))
        {
              if ($_POST['chp'] == 'ajouter')
              {
                // count initialisé à 0
                $count = $_POST['count'];
                echo $count . 'COUNT<br>';
     
                //nombre de ligne à ajouter
                $nombre = $_POST['nombre'];
                echo $nombre . 'NBRE DE LIGNE RAJOUTEE<br>';
                $jj = $count + $nombre ;
                echo $jj . 'LIGNE AU TOTAL<br>';
     
     
                 for ($x = 0; $x < $jj; $x++)
                 {
                     echo '<table><tr>';
                     echo '<td>Nom caracteristique <input type="text" name="champ'.$x.'"></td>';
                      echo '<td>Descriptif<textarea name="descriptif'.$x.'"></textarea></td>';
                    echo '</tr></table>';
                }
            }
            elseif ($_POST['chp'] == 'inserer')
            {
              echo $_POST['champ']."champ<br>";
              echo $_POST['descriptif']."desc<br>";
     
              for ($x = 0; $x < $jj; $x++)
     
              {
              echo $_POST['champ'.$x.''] ."<br>";
              }
            }
        }
     
        echo '<table>';
     
         echo '<tr>';
        echo '<td>Nom caracteristique : <input type="text" name="champ"></td>';
        echo '<td>Descriptif<textarea name="descriptif"></textarea></td>';
        echo '</tr>';
        echo '<tr>';
        echo '<td>';
     
        if ( (isset ($_POST['count'])) && ($jj > 0) )
        {
             echo '<input type="hidden"  name="count" value="'.$jj.'"> ';
        }
        else
        {
              echo '<input type="hidden"  name="count" value="0"> ';
        }
     
        echo '<input type="text"  name="nombre" size="1">';
     
        echo '<input type="submit" name="chp" value="ajouter">';
        echo '<input type="submit" name="chp" value="inserer">';
        echo '</td></tr></table></td></tr> ';
        echo '</form></table>';
     
        ?>
    merci encore

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Dis moi as-tu penser à mettre une valeur dans $jj lors de la récupération des données ? Car tu fais appel à un $jj qui est initialisé à 0 au tout début et qui dans ton if ne change pas contrairement à ta condition ajouter

    Il faudrait que tu revois cette partie. Par exemple faire :
    avant la boucle for

  9. #9
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    alors j'ai fait ça :
    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
     
    elseif ($_POST['chp'] == 'inserer')
            {
              $count = $_POST['count'];
              $nombre = $_POST['nombre'];
              $jj = $_POST['count'] + $_POST['nombre'];
     
              echo $_POST['champ']."champ<br>";
              echo $_POST['descriptif']."desc<br>";
     
     
     
                 for ($x = 0; $x < $jj; $x++)
     
                     {
                       if (isset ($_POST['champ'.$x.'']))
                          {
     
                      echo $_POST['champ'.$x.''] ."NOUVO CHAMPS<br>";
                          }
                     }
            }
    mais ça ne marche pas des masses..

    aurais je oublié quelque chose?
    ou bien ai je mal compris ce que tu voulais me faire comprendre?
    si c'est le cas, désolé mai j'ai vraiment du mal avec ce bout de code ...

  10. #10
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Le problème vient également de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['chp'] == 'inserer'
    Maintenant compare la à la définition de tes submit et tu comprendras

  11. #11
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    si j'appelle 2 submit avec le meme nom, mais avec une valeur differente (inserer et ajouter)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(isset($_POST['chp']))
    {
    if ($_POST[chp'] == 'ajouter')
    {
    ....
    }
     
    elsesif($_POST[chp'] == 'inserer')
    {
    ...
    }
    ou si je les appelle avec des nom different
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if(isset($_POST['ajouter']))
    {
    ....
    }
     
    elsesif(isset($_POST[inserer']))
    {
    ...
    }
    ça ne revient pas au meme?

  12. #12
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Faut-il encore avoir la bonne définition des submit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<input type="submit" name="chp" value=ajouter>';
    echo '<input type="submit" name="chps" value=inserer>';

  13. #13
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    désolée de mon retour un peu tardif

    je viens de retester et j'avais oublié un truc tout bete
    j'avais tout simplement oublié de de mettre un echo de $_POST['descriptif'. $x.'']



    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    <?
     
     
     echo '<form method="post" action="ajoutchamps3.php">';
     
     
        if (isset ($_POST['ajouter']))
        {
     
                $count = $_POST['count'];
                echo $count . 'COUNT<br>';
     
                //nombre de ligne à ajouter
                $nombre = $_POST['nombre'];
                echo $nombre . 'NBRE DE LIGNE RAJOUTEE<br>';
                $jj = $count + $nombre ;
                echo $jj . 'LIGNE AU TOTAL<br>';
     
     
                 for ($x = 0; $x < $jj; $x++)
                 {
                     echo '<table><tr>';
                     echo '<td>Nom caracteristique <input type="text" name="cham'.$x.'"></td>';
                      echo '<td>Descriptif<textarea name="descripti'.$x.'"></textarea></td>';
                    echo '</tr></table>';
                }
         }
            elseif (isset($_POST['inserer']))
            {
              $count = $_POST['count'];
              $nombre = $_POST['nombre'];
              $jj = $_POST['count'] + $_POST['nombre'];
     
              echo $_POST['champ']."champ<br>";
              echo $_POST['descriptif']."desc<br>";
     
     
     
                 for ($x = 0; $x < $jj; $x++)
     
                     {
                       if (isset ($_POST['cham'.$x.'']))
                          {
                            if (isset ($_POST['descripti'.$x.'']))
                               {
     
     
                      echo $_POST['cham'.$x.''] ."NOUVO NOM<br>";
                       echo $_POST['descripti'.$x.''] ."NOUVO DESCRIPTIF<br>";
                               }
                          }
                    }
              }
     
        echo '<table>';
     
         echo '<tr>';
        echo '<td>Nom caracteristique : <input type="text" name="champ"></td>';
        echo '<td>Descriptif<textarea name="descriptif"></textarea></td>';
        echo '</tr>';
        echo '<tr>';
        echo '<td>';
     
        if ( (isset ($_POST['count'])) && ($jj > 0) )
        {
             echo '<input type="hidden"  name="count" value="'.$jj.'"> ';
        }
        else
        {
              echo '<input type="hidden"  name="count" value="0"> ';
        }
     
        echo '<input type="text"  name="nombre" size="1">';
     
        echo '<input type="submit" name="ajouter" value="ajouter">';
        echo '<input type="submit" name="inserer" value="inserer">';
        echo '</td></tr></table></td></tr> ';
        echo '</form></table>';
     
        ?>

    merci encore de m'avoir consacré du temps.

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

Discussions similaires

  1. [Tableaux] Récupération d'une variable
    Par grumly22 dans le forum Langage
    Réponses: 1
    Dernier message: 21/06/2006, 13h53
  2. [Conception] récupération d'une variable php dans une autre page
    Par vali7 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/01/2006, 11h19
  3. petite question sur la récupération d'une variable
    Par minusette dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2005, 16h57
  4. [C#] Récupération d'une variable d'environnement
    Par jamy79 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/08/2005, 14h03
  5. Récupération d'une variable
    Par cach dans le forum Windows
    Réponses: 7
    Dernier message: 22/02/2005, 11h19

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