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 :

insertion dans une base de données à partir d'un formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Points : 75
    Points
    75
    Par défaut insertion dans une base de données à partir d'un formulaire
    Bonjour, je suis sur un site de news et j'aimerais faie une insertion dans la base de données, mais voilà, je n'arrive pas à me connecter avec PDO et faire l'insertion des données recuperer à parti d' un formulaire. j'ai un fichier database.php pour se connecter à la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    try
    {
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $database = new PDO('mysql:host=localhost;databasename= togoportail', 'root', '',
    $pdo_options);
    }
    catch (Exception $e)
    {
    die('Erreur : ' . $e->getMessage());
    }
    j'aimerais traiter le formulaire et faire l'insertion.
    voici le formulaire

    Code html : 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
    <form method="post" action="traitementarticle.php"
    <label for="titre">Titre</label>
    <input type="text" name="titre" id="titre"/>
     
    <label for="auteur">Auteur</label>
    <input type="text" name="auteur" id="auteur"/>
     
    <label for="resume">Resumé</label>
    <textarea name="resume" id="resume"></textarea>
     
     
    <label for="article">Article</label>
    <textarea name="article" id="article"></textarea>
     
    <label for="image">Image</label>
    <input type="file" name="image" id="image"/>
     
    <label for="categorie">Categorie</label>
    <select name="categorie" id="categorie">
        <option value="politique">Politique</option>
        <option value="economie">Economie</option>
        <option value="finances">Finances</option>
        <option value="sports">Sports</option>
        <option value="environnement">Environnement</option>
        <option value="evenement">Evènement</option>
        <option value="administration">Administration</option>
        <option value="diplomatie">Diplomatie</option>
        <option value="artistique">Artistique</option>
        <option value="media">Media</option>
        <option value="culture">Culture</option>
    </select>
     
    <input type="submit" value="enregistrer"/>
     
    </form>
    merci d'avance
    Je n'ai certes pas le talent de Gates ou Job mais, mon amour mon pc, me rend plus fort qu'eux

  2. #2
    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
    Et donc quel est ton problème ? qu'as-tu testé ?
    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]

  3. #3
    Membre régulier Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Points : 75
    Points
    75
    Par défaut j'ai résolu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($_POST['categorie']) AND $_POST['categorie'] =="politique")  {  
     $reponse = $bdd->query ("INSERT INTO politique (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
    Je n'ai certes pas le talent de Gates ou Job mais, mon amour mon pc, me rend plus fort qu'eux

  4. #4
    Membre régulier Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Points : 75
    Points
    75
    Par défaut corrigez moi ce code svp, sa 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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    <?php
    include './database.php';
    {
     $titre=$_POST['titre'];
     $auteur=$_POST['auteur'];
     $resume=$_POST['resume'];
     $categorie=$_POST['categorie'];
     $article=$_POST['article'];
     
    // traitement de l'image
     $dossier = './articles/';
    $fichier = basename($_FILES['image']['name']);
    $taille = filesize($_FILES['image']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg','.PNG', '.GIF', '.JPG', '.JPEG');
    $extension = strrchr($_FILES['image']['name'], '.'); 
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    }
    else
    {
         echo $erreur;
    }
     
    }
     if (empty($_POST['titre'])||empty($_POST['auteur'])||empty($_POST['resume'])||empty($_POST['categorie'])
             ||empty($_POST['article']))
     {
         header('location:admin.php');
     }
     
     
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="administration")  {  
     $reponse = $bdd->query ("INSERT INTO administration (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="artistique")  {  
     $reponse = $bdd->query ("INSERT INTO artistique (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="diplomatie")  {  
     $reponse = $bdd->query ("INSERT INTO diplomatie (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="economie")  {  
     $reponse = $bdd->query ("INSERT INTO economie (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="entreprenariat")  {  
     $reponse = $bdd->query ("INSERT INTO entreprenariat (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="environnement")  {  
     $reponse = $bdd->query ("INSERT INTO environnement (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="evenement")  {  
     $reponse = $bdd->query ("INSERT INTO evenement (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="finance")  {  
     $reponse = $bdd->query ("INSERT INTO finance (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="media")  {  
     $reponse = $bdd->query ("INSERT INTO media (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="projets")  {  
     $reponse = $bdd->query ("INSERT INTO projets (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="sante")  {  
     $reponse = $bdd->query ("INSERT INTO sante (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="societe")  {  
     $reponse = $bdd->query ("INSERT INTO societe (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="sports")  {  
     $reponse = $bdd->query ("INSERT INTO sports (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
     
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="culture")  {  
     $reponse = $bdd->query ("INSERT INTO culture (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
    else if (isset($_POST['categorie']) AND $_POST['categorie'] =="politique")  {  
     $reponse = $bdd->query ("INSERT INTO politique (titre, article,image, resume, auteur) VALUES "
                . "('$titre', '$article','$fichier', '$resume','$auteur')");
    }
    Je n'ai certes pas le talent de Gates ou Job mais, mon amour mon pc, me rend plus fort qu'eux

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Faudrait faire quelques tutos avant de coder par exemple ici

    1/ A quoi servent les accolades en deuxième ligne de ton code ?

    2/ Si c'est le script "traitementarticle.php" que tu appelle depuis le formulaire il te manque une redirection pour revenir à la page appelante (c'est souvent plus simple d'inclure le script de traitement avec un require dans la même page que le formulaire pour éviter ces redirections).

    3/ Tu pourrais optimiser/factoriser ton code pour y voir plus clair, en trois lignes tu peux faire l'équivalent de toutes tes lignes qui commencent par if (isset($_POST['categorie'])... par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $categories = array('administration','artistique','diplomatie','economie','entreprenariat','environnement','evenement','finance','media','projets','sante','societe','sports','culture','politique');
     
    if (isset($_POST['categorie']) && in_array($_POST['categorie'],$categories))
    {
        $bdd->query ("INSERT INTO ".$_POST['categorie']." (titre, article,image, resume, auteur) VALUES ...");
    }
    Si tu utilise pdo, "exec" serait plus approprié que la méthode "query" et il faudrait employer au minimum la fonction "quote" pour protéger tes données (dans VALUES), sinon faire des requêtes préparées. Avec mysql ou mysqli c'est la fonction mysql(i)_real_escape string qu'il conviendrait d'employer, mais en tous cas il faut protéger ces données !!!

    Après on peut se demander pourquoi tu fais plusieurs tables qui contiennent toutes les mêmes champs. Normalement on en ferait qu'une avec un champ nommé "catégorie", sauf si tu veux séparer les données pour avoir des tables plus légères mais cela ne se justifie que pour des très très gros sites.

  6. #6
    Membre régulier Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Points : 75
    Points
    75
    Par défaut merci
    ton code me simplifie la vie. merci beaucoup, sa marche
    Je n'ai certes pas le talent de Gates ou Job mais, mon amour mon pc, me rend plus fort qu'eux

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/08/2010, 12h55
  2. Réponses: 3
    Dernier message: 23/12/2009, 15h00
  3. Réponses: 12
    Dernier message: 26/04/2007, 11h38
  4. [MySQL] Enregistrer dans une base de données à partir d'une liste déroulante
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/05/2006, 16h32
  5. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 22h13

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