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 :

Requête insert into ne fonctionne pas [PDO]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Requête insert into ne fonctionne pas
    Bonjour,

    Impossible d'insérer un formulaire à partir de la requête ci-dessous

    Pourtant j'ai cherché mais impossible de trouver une solution donc je vous sollicite

    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
    <?php
    if(isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['classe']) && isset($_POST['message']) && isset($_POST['type']))
    {
    /*il faut que tous les champs soient renseignes*/
    if($_POST['nom']!="" && $_POST['prenom']!="" && $_POST['classe']!="" && $_POST['message']!="")
    {
     
     /*connexion a la BDD*/
    try
    {
    $bdd = new PDO('mysql:host=localhost;dbname=base_test', 'login', 'pass');
    }
    catch (Exception $e)
    {
    die('Erreur : ' . $e->getMessage());
    }
    $req=$bdd->prepare('INSERT INTO formulaire(nom, prenom, classe, message, type) VALUES(:nom, :prenom, :classe, :message:, :type)');
    $req->execute(array('nom'=>$_POST['nom'], 'prenom'=>$_POST['prenom'], 'classe'=>$_POST['classe'], 'message'=>$_POST['message'], 'type'=>$_POST['type']));
     
     
    echo 'Insertion OK.';
    }
    else
    {
    echo "Il faut remplir tous les champs"; 
    }  
    }  
    ?>
    Merci et bonne soirée

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 84
    Points : 101
    Points
    101
    Par défaut hello
    Salut,

    a moins que tu utilises un framework particulier, tu peux m'expliquer ça?

    Citation Envoyé par derizion001 Voir le message
    VALUES(:nom, :prenom, :classe, :message:, :type)');
    ++
    zwaldo

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Commence par activer les erreurs PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Au passage, au lieu de faire deux tests, tu peux utiliser !empty pour vérifier si la donnée existe et est non vide.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,


    zwaldo: j'ai retiré les : et l'insertion se fait mais tout les champs sont vide sauf id et type qui a pour valeur 0 (aussi bien oui que non)

    sabotage: aucune erreur PDO ne s'affiche et lorsque je change isset par empty j'ai une suite d'erreur sur la page PHP

    Merci de votre aide

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu ne nous indique pas les erreurs, ca va être difficile.

    Est-ce que tu as bien "Insertion OK" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Oui, j'ai bien le message "Insertion OK" mais les champs sont vides sauf id qui s'incrémente et type avec la valeur qui reste à 0 aussi bien avec OUI que non.

    Merci de ton aide

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Par rapport à ton message précédent, il faut bien les ":" à la fois dans la requête et dans le tableau de paramètres.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Tu avais raison, il fallait rajouter les ":"

    Merci pour ton aide sabotage.

    Comment je peux rediriger le message "insertion OK" sur une page id_page=4.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    "Rediriger le message" ?
    Si tu voulais dire rediriger au lieu d'avoir un message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: tapage.php?id_page=4');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Non, je veux afficher le message "insertion ok" sur la page id_page=4

    Merci

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca correspond a quoi "id_page=4" ? Ce n'est pas le nom d'un fichier sur ton serveur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Non, c'est une page dynamique générée par une table SQL

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourrais-tu nous décrire précisément tes mécaniques ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Structure du site sur la base d'un site dynamique de pb naigeon
    http://pbnaigeon.developpez.com/tuto...ite-dynamique/

    Je veux juste afficher le message "insertion ok" dans le contenu de la seconde page du formulaire.

    Je pensais à mettre un include après
    Merci de ton aide

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    J'ai testé avec un include mais le message "insertion ok" s'affiche dans la page cible.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'Insertion OK.';
    include ('index.php?id_page=3');
    Insertion OK.
    ( ! ) SCREAM: Error suppression ignored for
    ( ! ) Warning: include(index.php?id_page=3): failed to open stream: No error in D:\Web\www\cible.php on line 21
    Call Stack
    # Time Memory Function Location
    1 0.0007 259296 {main}( ) ..\cible.php:0

    ( ! ) SCREAM: Error suppression ignored for
    ( ! ) Warning: include(): Failed opening 'index.php?id_page=3' for inclusion (include_path='.;C:\php\pear') in D:\Web\www\cible.php on line 21
    Call Stack
    # Time Memory Function Location
    1 0.0007 259296 {main}( ) ..\cible.php:0

  16. #16
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    relis la doc pour include().
    Tu verras que faire un include revient à la même chose que si tu avais écris le code inclus à l'endroit de l'include(). Dans ton cas ceci devrait suffire :

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    oui en effet mais je voudrais envoyer et afficher le message "insertion ok" dans le contenu d'une page bien précise qui est "index.php?id_page=3" et cette même page est générée par mysql.

    La solution une redirection avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: index.php?id_page=6');
    mais sans le message ""insertion ok"".

    Tu me confirme ?

  18. #18
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Si tu veux sans le message, tu n'as qu'à rajouter un autre paramètre à la redirection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: index.php?id_page=6&msg=1');
    Ensuite tu testes ce paramètre supplémentaire et tu affiches ou pas le message en conséquence.

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    et j'ai essayé avec le message "insertion ok"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'Insertion OK.';
    include('index.php?id_page=6&msg=1'.$_ENV['contenu']);
    Insertion OK.
    ( ! ) Warning: : failed to open stream: No such file or directory in D:\Web\www\test\www\monsite\cible.php on line 49
    Call Stack
    # Time Memory Function Location
    1 0.0008 263152 {main}( ) ..\cible.php:0

    ( ! ) Warning: include(): in D:\Web\www\test\www\monsite\cible.php on line 49
    Call Stack
    # Time Memory Function Location
    1 0.0008 263152 {main}( ) ..\cible.php:0

  20. #20
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu n'as pas bien compris le fonctionnement de l'include().
    include() te permet d'éviter la duplication de code, c'est tout. include() attend un nom de fichier avec son chemin et rien de plus donc tous tes paramètres additionnels ne servent à rien sauf à faire que le moteur ne puisse trouver le fichier.

    essaie avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: index.php?id_page=6&msg=ok');
    et dans le code de index.php tu fais quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (isset($_GET['msg']))
    {
        if ($_GET['msg'] === 'ok')
        {
            echo 'Insertion OK';
            exit;
        }
        elseif ($_GET['msg'] === 'ko')
        {
            echo 'Il faut remplir tous les champs';
            exit;
        }
    }
    Une piste...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] insert into ; ne fonctionne pas dans mon form
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/07/2010, 16h22
  2. [MySQL] requête INSERT INTO ne fonctionne pas
    Par quiky dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/10/2009, 14h41
  3. [MySQL] pourquoi insert into ne fonctionne pas
    Par Philcmoi dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/10/2009, 13h38
  4. Requête insert qui ne fonctionne pas .
    Par Pioul dans le forum VBA Access
    Réponses: 7
    Dernier message: 21/05/2008, 12h28
  5. [WD11] Insert Into ne fonctionne pas
    Par IdrilElendil dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2007, 15h03

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