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

PHP & Base de données Discussion :

Ajout de données par formulaire


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Ajout de données par formulaire
    Bonjour,

    Je débute en php et j'aimerais réussir à faire un truc. Je m'explique. Mon site est un catalogue de produits. Dans le menu se trouve une liste de catégorie de produits (graveur, processeur, carte mère etc...) quand on clique sur une de ces catégories, on accède à la liste des produits de la catégorie en question (graveur 1, graveur 2 etc...).

    J'ai réussi à mettre en place une fonction me permettant d'ajouter des catégories et elle marche. Je suis donc en train d'essayer de faire pareil pour ajouter un produit. Le problème c'est que je n'arrive pas à récupérer l'id de la catégorie du produit à ajouter et donc ca ne veut pas s'ajouter dans la base, voici mon 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
    ...
     
    //connexion à la base effectuée
     
    $query="select * from categorie;";
    $Rs = mysql_query($query,$bd);
     
    echo "Saisir le nouveau produit à ajouter:";
    echo "<br><br>";
    echo 'Nom du produit: <input type="text" name="nomproduit" size="20"><br><br>';
    echo 'Prix du produit: <input type="text" name="prixproduit" size="4"><br><br>';
    echo 'Description: <input type="text" name="infoproduit" size="25"><br><br>';
    echo 'Nom de la photo: <input type="text" name="photoproduit" size="20"><br><br>';
    echo 'Catégorie du produit: <select name="categorie" size="1">';
    while($Tab = mysql_fetch_array($Rs)){
     
    echo '<option value='.$Tab["idcat"].'>'.$Tab["libelle"].'</option>';
    }
    echo "</select>";
    echo '<form action="verifproduit.php" method="post">';
    echo '<p><input type="submit" value="Enregistrer"> <input type="reset" value="Annuler"></p>';
    echo '</form>';
    mysql_close($bd);
    ?>
    </body>
    </html>
    Ca envoie ensuite la vérification de ce que j'ai saisi dans une fonction verifproduit.php :

    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
    ...
     
    //connexion à la base effectuée
    if (($_POST['nomproduit']=="") || ($_POST['idcat']=="") || ($_POST['prixproduit']=="") || ($_POST['infoproduit']=="") || ($_POST['photoproduit']=="")){
    echo "Attention, l'ajout a échoué!";
    }
    else
    $query="insert into produit values
    ('".$_POST['nomproduit']."','".$Tab['idcat']."','".$_POST['prixproduit']."','".$_POST['infoproduit']."','".$_POST['photoproduit']."');";
    if ($p = mysql_query($query,$bd))
    echo "Ajout correctement effectué";
    //else
    //echo "Attention, l'ajout a échoué!";
    mysql_close($bd);
    ?>
    </body>
    </html>
    Voilà, donc si vous pouviez m'aider.

  2. #2
    Membre actif Avatar de romain_ci
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Points : 287
    Points
    287
    Par défaut
    Salut,

    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
    ...
     
    //connexion à la base effectuée
    if (($_POST['nomproduit']=="") || ($_POST['idcat']=="") || ($_POST['prixproduit']=="") || ($_POST['infoproduit']=="") || ($_POST['photoproduit']=="")){
    echo "Attention, l'ajout a échoué!";
    }
    else
    $query="insert into produit values
    ('".$_POST['nomproduit']."','".$Tab['idcat']."','".$_POST['prixproduit']."','".$_POST['infoproduit']."','".$_POST['photoproduit']."');";
    if ($p = mysql_query($query,$bd))
    echo "Ajout correctement effectué";
    //else
    //echo "Attention, l'ajout a échoué!";
    mysql_close($bd);
    ?>
    </body>
    </html>
    $Tab['idcat']

    Remplace cela par

    $_POST['categorie'] l'id du select...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ca ne marche pas non plus

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonjour,
    l'index "idcat" apparait plusieurs fois dans votre script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //connexion à la base effectuée
    if (($_POST['nomproduit']=="") || ($_POST['categorie']=="") || ($_POST['prixproduit']=="") || ($_POST['infoproduit']=="") || ($_POST['photoproduit']=="")){
    echo "Attention, l'ajout a échoué!";
    }
    Il faut toutes les modifier.

    Cordialement,
    DaRiaN.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ca me sert à contrôler si un champ n'est pas rempli, dans ce cas, on n'ajoute rien dans la base. Comment le modifier?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Vous ne voyez pas que je parlais de l'index "idcat" qui n'existe pas dans votre formulaire. A la place, il faut mettre "categorie".

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je sais bien, je l'ai fait mais ca ne change pas.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Sachant tout ceci, je doute que votre php.ini soit bien configuré. Normalement, ces erreurs auraient du vous être signalées. Si j'étais vous et durant tout le développement de mon site, je configurais le error_reporting sur "E_ALL".

  9. #9
    Invité
    Invité(e)
    Par défaut
    Et ca se trouve où ça?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Dans le fichier php.ini ou dans votre script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ini_set('display_errors', 1);
      ini_set('error_reporting', E_ALL);
    De plus, vous devriez tester les valeurs du tableau $_POST et voir si son contenu vous convient.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
      echo '<pre>';
      print_r($_POST);
      exit('</pre>');
     
    ?>

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Les différents champs doivent aussi faire partie du formulaire (ie être entre les balises <form ...> et </form>). Il ne faut pas se contenter des boutons.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Ok j'ai rectifié le <form> </form>

    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
    //connexion à la base effectuée
     
    $query="select * from categorie;";
    $Rs = mysql_query($query,$bd);
    echo "Saisir le nouveau produit à ajouter:";
    echo "<br><br>";
    echo '<form action="verifproduit.php" method="post">';
    echo 'Nom du produit: <input type="text" name="nomproduit" size="20"><br><br>';
    echo 'Prix du produit: <input type="text" name="prixproduit" size="4"><br><br>';
    echo 'Description: <input type="text" name="infoproduit" size="25"><br><br>';
    echo 'Nom de la photo: <input type="text" name="photoproduit" size="20"><br><br>';
    echo 'Catégorie du produit: <select name="categorie" size="1">';
    while($Tab = mysql_fetch_array($Rs)){
     
    echo '<option value='.$Tab["idcat"].'>'.$Tab["libelle"].'</option>';
    }
    echo "</select>";
     
    echo '<p><input type="submit" value="Enregistrer"> <input type="reset" value="Annuler"></p>';
    echo '</form>';
    mysql_close($bd);
    ?>
    </body>
    </html>

    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
    //connexion à la base effectuée
    if (($_POST['nomproduit']=="") || ($_POST['categorie']=="") || ($_POST['prixproduit']=="") || ($_POST['infoproduit']=="") || ($_POST['photoproduit']=="")){
    echo "Attention, l'ajout a échoué!";
    }
    else
    $query="insert into produit values
    ('".$_POST['nomproduit']."','".$_POST['categorie']."','".$_POST['prixproduit']."','".$_POST['infoproduit']."','".$_POST['photoproduit']."');";
    if ($p = mysql_query($query,$bd))
    echo "Ajout correctement effectué";
    else
    echo "Attention, l'ajout a échoué!";
    mysql_close($bd);
    ?>
    </body>
    </html>
    J'ai donc fait ce que vous avez dit, à part le php.ini que je ne trouve pas.

Discussions similaires

  1. [MySQL] Modifier la base de données par formulaire
    Par nicolasSENAME dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 23/09/2008, 20h06
  2. Transmission de donnée par formulaire
    Par zoneech dans le forum Langage
    Réponses: 31
    Dernier message: 06/04/2008, 14h42
  3. [CSV] Acquisition de données par formulaire et CSV
    Par JoN28fr dans le forum Langage
    Réponses: 8
    Dernier message: 08/11/2007, 16h43
  4. Ajout dans table par formulaire
    Par Elendill dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/05/2007, 19h49
  5. Forum en asp et ajout de données par visiteurs
    Par nawal59 dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2006, 00h02

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