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] Variable non reconnue


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] Variable non reconnue
    bonjour à tous et bonne année 2007!!!

    je viens à vous aujourd'hui car j'ai un petit problème que je n'arrive pas à résoudre (logique n'est ce pas lol)

    je vous explique mon problème
    en faite j'ai dans mon formulaire, le nom d'un champs de type text qui est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type=text name=champ "'.$x.'">
    et dont le $_POST n'est pas reconnu soit l'erreur suivante :
    Notice: Undefined variable: x in ...

    je vous donne mon code en entier :
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?
    include ("definitioninfo.php");
    session_start();
    $base=mysql_connect("localhost","root","oui");
     mysql_select_db("bd", $base);
     
     
    if (isset($_POST['champ'] ))
    {
      if (!empty($_POST['champ']))
      {
     
      echo 'champs ancien';
    }
    }
     
    if (isset($_POST['champ "'.$x.'" ']))
    {
      echo 'champs nouvo';
    }
     
     
    if (isset ($_POST['chp']))
    {
      if ($_POST['chp'] == 'ajouter')
      {
     
    $count = $_POST['count']; 
    $nombre = $_POST['nombre']; 
     $jj = $count + $nombre;
     
     
     
     
     for ($x = 0; $x< $jj; $x++)
     {
     
        echo '<table border = 0>';
       echo '<form method="post" action="ajoutchamps2.php">';
      echo '<tr><td> ';
     
      //echo '
      //<table> ';
     
      echo '
    
      <tr>
      <td>
      Nom caracteristique<input type=text name=champ "'.$x.'">
      </td>
      <td>
      Descriptif<textarea name= descriptif"'.$x.'"></textarea>
    
      </td>
      </tr>
       </form>
      </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> 
    </form>
    </td></tr> ';
    echo '</table>';
    ?>
    je comprends pas pourquoi j'ai cette erreur...
    si quelqu'un pourrait m'expliquer se serait vraiment gentil car je suis completement bloqué..

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    il est chelou ton problèmes...

    en gros, tu veux recupérer champ1, champ2, champ3 etc... ?

    donc soit j'ai rien compris, soit il te faut plutot :

    avec $_POST['champ'.$x] me parait plus indiqué

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,
    En regardant le code entier, on voie que les guillemets sont bien placés.
    Je pencherais peut-être pour quelquechose d'encore plus simple : un espace incongru et non-désiré entre "champ " et $x. Je crois que ce n'est pas super propre pour le nom. Un underscore remplacera avantageusement.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Points : 73
    Points
    73
    Par défaut Faut définir la variable
    Bonjour,

    Il faut déclarer la variable $x

    s'il faut quelle reste intacte au passage des pages, placer

    sinon un simple $x=""; ou $x="0"; suffit

    La déclaration d'une variable dans une ligne de commande ou fonction ne semble pas suffisante car si j'ai bien compris le fonctionnement php, une fonction est d'abord lue, puis exécutée. Ainsi ce n'est pas le premier $x=0 qui est sanctionné, mais le deuxième, $x < qui n'est pas encore déclaré puisque le résultat de la première commande $x=0 n'est pas encore exécuté lors de la lecture.

    J'espère que mon analyse est bonne.... mais en tout cas celà fonctionnera de la manière!

    Rodolphe

  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
    merci pour vos réponses
    mais en faite j'aimerai pouvoir mettre le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form method="post" action="ajoutchamps2.php">
    avant tout le code afin que ce form soit effectif autant pour les champs ajoutés autant pour le champs de depart

    là en faite, je viens de m'apercevoir que je ferme le 1er form avant d'ouvrir le 2eme et que le <inpu type= submit ...> se situe au niveau du 2eme form
    c'est pour cela que le $i n'est pas reconnu

    je voudrais juste un seul <input type= submit ...> pour les champs ajoutés (avec la boucle for) et pour le champs de depart (le 1er) mais je n'y arrive pas
    je mets le <form method="post" action="ajoutchamps2.php"> avant la boucle for pour que tout soit pris en compte mais ça ne marche pas...

    j'espère que je me suis bien expliqué...

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    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
     for ($x = 0; $x< $jj; $x++)
     {
     
        echo '<table border = 0>';
       echo '<form method="post" action="ajoutchamps2.php">';
      echo '<tr><td> ';
      echo '
     
      <tr>
      <td>
      Nom caracteristique<input type=text name=champ "'.$x.'">
      </td>
      <td>
      Descriptif<textarea name= descriptif"'.$x.'"></textarea>
     
      </td>
      </tr>
       </form>
      </table>';
    il faut sortir le <form> du for() alors :p

    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
     f
    echo '<form method="post" action="ajoutchamps2.php">';
    or ($x = 0; $x< $jj; $x++)
     { 
        echo '<table border = 0>';
        echo '<tr><td> ';
      echo '
     
      <tr>
      <td>
      Nom caracteristique<input type=text name=champ "'.$x.'">
      </td>
      <td>
      Descriptif<textarea name= descriptif"'.$x.'"></textarea>
     
      </td>
      </tr>
       </form>
      </table>';
    }

  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
    non ça ne marche pas
    voilà le code avec les modif mais ça ne marche pas
    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
    84
    85
    86
    87
    88
    89
    90
    91
     
    <?
     
     
     
    if (isset($_POST['champ'] ))
    {
      if (!empty($_POST['champ']))
      {
     
      echo 'champs ancien';
    }
    }
     
    if (isset($_POST['champ "'.$x.'" ']))
    {
      echo 'champs nouvo';
    }
     
     
    if (isset ($_POST['chp']))
    {
      if ($_POST['chp'] == 'ajouter')
      {
     
    $count = $_POST['count']; 
    $nombre = $_POST['nombre']; 
     $jj = $count + $nombre;
     
      echo '<table border = 0>';
     echo '<form method="post" action="ajoutchamps2.php">';
      echo '<tr><td> ';
     
     
     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>';
    ?>

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Heu, pour info, tu parles d'erreur en parlant du notice ? car attention, un notice n'est pas une erreur !!!! C'est juste une note qui t'informe que t'es pas super rigoureux dans ta façon de coder !
    Par exemple, en langage C, si tu essayes d'affecter / d'utiliser une variable non déclarée, tu plante tout.
    En PHP, ça ne pose aucun problème, mais ça génère quand même un notice...
    Si tu as les notices affichés, j'en déduit que tu travail en local sur ton propre PC car aucun serveur web ne laisse l'affichage des notices en exploitation.
    Tu as donc accès au fichier de conf php.ini dans lequel tu vas trouver ces quelques lignes :

    Code x : 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
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Error handling and logging ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    ; error_reporting is a bit-field.  Or each number up to get desired error
    ; reporting level
    ; E_ALL             - All errors and warnings
    ; E_ERROR           - fatal run-time errors
    ; E_WARNING         - run-time warnings (non-fatal errors)
    ; E_PARSE           - compile-time parse errors
    ; E_NOTICE          - run-time notices (these are warnings which often result
    ;                     from a bug in your code, but it's possible that it was
    ;                     intentional (e.g., using an uninitialized variable and
    ;                     relying on the fact it's automatically initialized to an
    ;                     empty string)
    ; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
    ; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
    ;                     initial startup
    ; E_COMPILE_ERROR   - fatal compile-time errors
    ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
    ; E_USER_ERROR      - user-generated error message
    ; E_USER_WARNING    - user-generated warning message
    ; E_USER_NOTICE     - user-generated notice message
    ;
    ; Examples:
    ;
    ;   - Show all errors, except for notices
    ;
    ;error_reporting = E_ALL & ~E_NOTICE
    ;
    ;   - Show only errors
    ;
    ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
    ;
    ;   - Show all errors
    ;
    error_reporting  =  E_ALL

    remplace juste la dernierre ligne (celle qui n'a pas de # ou de ; au début) par

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting  =  E_ALL & ~E_NOTICE

    et relances ton serveur.

  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
    oui mais ça va changer quoi?
    car mon code ne peut s'executer à cause de ça et c'est ça que je n'arrive pas à résoudre..

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Ca va changer que tu n'auras plus de notice affiché à l'écran.

    mon code ne peut s'executer à cause de ça
    Non ! faux et impossible ! ton code ne peut pas ne pas s'éxécuter à cause d'un notice ! Si tu n'as pas d'erreur ou de warning et que ton code ne s'exécute pas, c'est nécessairement que ton algo à un problème (si affichage error/warning sur ON), mais ce n'est pas le notice qui le dira !

    Pour en revenir au problème, je te renvérai à la 1er réponse que je t'ai donné ! si j'exécute ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Nom caracteristique<input type=text name=champ "'.$x.'">
     
      Descriptif<textarea name= descriptif"'.$x.'"></textarea>
    ça va donner en HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Nom caracteristique<input type=text name=champ "0">
     
      Descriptif<textarea name= descriptif"0"></textarea>
    alors je me répète peut être, mais moi, je vis dans un monde ou cela n'est pas correct ! un "0" tout seul entre guillement sans attribut devant, je sais quel browser peut comprendre ça. Je ferais également la même remarque pour le $_POST['champ"'.$x.'"]

    Je donnerai donc la même réponse :

    Citation Envoyé par gloubi

    donc soit j'ai rien compris, soit il te faut plutot :

    avec $_POST['champ'.$x] me parait plus indiqué


    Si tu m'affirmes que cela est correct et que c'est comme ça que tu veux faire, alors j'ai pas de réponse à te proposer.

  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
    non non je ne met en aucun cas de doute sur tes propositions!
    au contraire c'est plaisant de savoir qu'on veut et qu'on peut m'aider..
    ce que je veux te dire c'est que la notice me dit que la variable $x n'est pas definie dès le depart, lorsque j'ouvre ma page .php
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Notice: Undefined variable: x
    à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_POST['champ'.$x]))
    il ne reconnait pas la variable dès le depart...

    et pis je ne vais pas enlevé l'affichage des notices qui servent quand meme à m'indiquer une eventuelle erreur quelque part..

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    ah oui, forcément...

    tu utilises $x sans l'avoir initialié, donc quoiqu'il arrive, tu ne récupérera rien en effet.

    Donc apres avoir fait les modifs que je te propose au dessus, tu peux récupérer tes valeurs comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // la boucle foreach ci dessous va récupérer tous les éléments reçus dans $_POST
    foreach($_POST as $key => $value)
    {
        // $key contient le nom du champ que t'es en train de récupérer
        // $value contient la valeur du champ
        // tu fais ton traitement ici
        echo 'Le champ '.$key.' contient '.$value.' ! <br>'; 
    }

  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
    merci mais je met ça à la place de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_POST['champ'.$x]))
    ?


    ou avec ça?

    car je n'ais pas bien compris ce que tu viens de me proposer..

  14. #14
    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
    ah ba non j'ai remplacé et ça marche..
    mais est c que tu peux m'expliquer quand meme?

    parce que par la suite j'aimerai recuperer les valeurs qu'il y a dans les champspour les inserer dans ma bdd..

  15. #15
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    $_POST n'est rien de plus qu'une variable globale, un tableau pour être plus précis.

    quand tu tapes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['champ'.$x]))
    tu te contentes de lire ce tableau à l'index ['champ'.$x]. Ce tableau est construit au moment ou tu appels ta page à partir des informations que tu as passé par un formulaire et la méthode POST (le tableau $_GET quand à lui est construit à partir des parametres que reçoit la page dans l'url).

    Je t'ai donc proposé une fonction qui lit toutes les valeurs de ce tableau $_POST. Ton erreur à toi était d'utiliser un $x vide... tu essayais donc de récupérer $_POST['champ'] (vu que $x est vide), valeur qui n'existe pas dans ton tableau $_POST puisque autant que je sache, quand tu as créé ton formulaire, tous les champs s'appelaient 'champ' suivi d'un numéro.

    En gros, il falait que tu mettes ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['champ'.$x]))
    dans un for() avec le $x qui parcours toutes les veleurs existante.
    C'est un peu ce que fait ma fonction, sauf qu'au lieu d'utiliser un for(), j'utilise un foreach() qui est une sorte de for() spécialisé pour les tableaux.

  16. #16
    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
    bonjour!
    merci pour ta réponse

    j'ai 2 questions :

    1) mais je voudrais savoir si je mets que $_POST['champ'.$x] est different de zero, ou n'est pas vide, ça ne peut pas marcher?


    2) et je voudrais aussi savoir comment je peux faire dans le cas où j'ajoute des nouveaux champs, qui donc est cencé me permettre d'ajouter une ou plusieurs caracteristiques et sa description, pour inserer la ou les nouvelles caracteristiques dans ma BDD.

    j'ai mis ma requete dans la boucle foreach mais par exemple si j'ajoute 1 caracteristique, ce qui m'en fait 2 au total, et donc ça m'insere 2 fois (1 pour la 1ere caracteristique et 1 pour la 2eme) donc 2 lignes dans ma BDD
    normal c'est dans une boucle mais si je mets cette requete à l'exterieur de la boucle, $value n'est plus reconnue.;

    vraiment merci encore pour ton aide..

  17. #17
    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
    ah aouis mais attends
    ton bout de code recupere les valeurs de tous les $_POST mais dans mon formulaire j'ai un <input type = submit name = ajouter...>, alors il recupere "ajouter", c'est pas top pour une eventuelle insertion dans une bdd

  18. #18
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Pour ce qui est de la récupération du submit, je suggère que tu enlèves le

    en l'absence de nom, le value ne sera plus trasmis. D'ailleur, plutot que de l'enlever, tu peux juste le remplacer par value="ajouter"

    Dans le cas ou tu veux etre sur de ne récupérer que tes variables champ.$x, tu peux t'ajouter un filtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach($_POST as $key => $value)
    {
        if(substr($key, 0, 5) == 'champ') // si les 5 premier caracteres de $key sont egales à 'champ'
        { // alors on fait notre traitement
              echo 'Le champ '.$key.' contient '.$value.' ! <br>'; 
        }
        // sinon, le traitement est ignoré
    }
    1) mais je voudrais savoir si je mets que $_POST['champ'.$x] est different de zero, ou n'est pas vide, ça ne peut pas marcher?
    je ne suis pas sur de comprendre ta question... Ton probleme, c'est que c'est $x qui était vide dans ton code à la base... si tu mets au hazard juste avant cette ligne

    si tu as envoyé champ2 dans ton forme, tu vas bien récupérer une valeur...

    2) et je voudrais aussi savoir comment je peux faire dans le cas où j'ajoute des nouveaux champs, qui donc est cencé me permettre d'ajouter une ou plusieurs caracteristiques et sa description, pour inserer la ou les nouvelles caracteristiques dans ma BDD.
    Quand je donne un coup de main sur un forum PHP, surtout quand il s'agit comme ici de résoudre un problème syntaxique, je fait généralement abstraction du contexte dans lequel le problème se pose. Or, il se trouve que "caractéristique" n'est pas un mot clé reconnu par les programmeurs (brain error : undeclared identifier) et j'en déduit que le mot est relatif au contexte. qu'entends-tu par caractéristique ? la question est pas clair...

  19. #19
    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
    en faite les caracteristiques sont les caracteristiques d'un produit que je veux enregistrer dans ma bdd

    à la base ce que je voulais faire c'est, avec le bouton "ajouter", ajouter d'autres champs en plus du champs qui existe au depart afin que l'admin puisse ajouter autant de caracteristiques qu'il veut pour le produit qu'il souhaite inserer.
    un nouveau champs "caracteristique" pour une nouvelle caracteristique..

  20. #20
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Je penses que tu n'utilises pas les bon mots...
    en BDD, un champ correspond a une colonne de la table et on appel un enregistrement une ligne de la table...
    Si ton but est bien de rajouter des champs à ta base de donnée, je t'arrète tout de suite, tu pars sur une piste désastreuse. Donc si c'est bien le cas, explique moi de quel genre de produit il s'agit et quel genre de caractéristiques tu veux entrer, et je te proposerais une structure de base de donnée adéquate.
    Dans le cas contraire, il va faloir que tu trouves les bon mots pour t'exprimer

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2008, 18h04
  2. [Tableaux] Variable non considéré comme un chiffre
    Par Merlon dans le forum Langage
    Réponses: 7
    Dernier message: 27/06/2007, 12h08
  3. variable non reconnue dans une requête sql
    Par sanatou dans le forum C++
    Réponses: 3
    Dernier message: 13/12/2006, 17h43
  4. variable non reconnue
    Par shnouf dans le forum Langage
    Réponses: 7
    Dernier message: 13/02/2006, 16h44
  5. variables non reconnues
    Par syscom14 dans le forum Langage
    Réponses: 6
    Dernier message: 11/10/2005, 18h37

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