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 :

problème ajout dans une table [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut problème ajout dans une table
    bonjour,

    je débute et j'ai un petit problème , j'essaye de faire un code qui me permette de créer un blog assez simple et d'ajouter les pseudos et- commentaires dans une table!

    mon problème est que ces commentaires ne sont pas ajouté et que je n'ai aucune erreur retourné???

    j'ai 2 tables : billets et commentaires
    4 fichiers : index>connexion à la base et affichage du contenu de billets
    commentaire>>affichage du contenu "commentaires"
    commentaire_post>> pour inserer les nouveaux commentaires
    billet>include dans index et commentaires


    le code qui pose problème je pense

    //insertion du message à l'aide d'une requête préparé


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $req=$bdd->prepare('INSERT INTO commentaires (id_billet, auteur, commentaire, date_commentaire) VALUES(?, ?, ?, NOW())') or die(print_r($bdd->errorInfo()));
    $req->execute(array ($_POST['id_billet'], $_POST['auteur'], $_POST['commentaire']));
     
    //redirection
     
    header('Location: commentaires.php?billet=id');
    ?>
    merci d'avance pour votre aide

  2. #2
    Membre expérimenté

    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
    Par défaut
    A priori, pour obtenir l'erreur, ce n'est pas au niveau de l'appel à la méthode prepare qu'elle se situe mais de execute. Et la méthode errorInfo sera probablement à appeler non pas à partir de l'objet PDO mais de l'objet PDOStatement obtenu de la préparation de la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!$req = $bdd->prepare('INSERT INTO commentaires (id_billet, auteur, commentaire, date_commentaire) VALUES(?, ?, ?, NOW())')) {
        die(print_r($bdd->errorInfo(), TRUE));
    }
    if (!$req->execute(array($_POST['id_billet'], $_POST['auteur'], $_POST['commentaire']))) {
        die(print_r($req->errorInfo(), TRUE));
    }
    Par contre, c'est vraiment une version 5.0 où PDO n'était pas encore intégré au core ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    merci de ton aide!!

    avec le code modifié j'ai pu obtenir des erreurs que j'ai corrigé.
    malheureusement maintenant il me donne comme erreur la fin du code "?>"

    je te met entièrement 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
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    //insertion du message à l'aide d'une requête préparé
     
     
    if (!$req = $bdd->prepare('INSERT INTO commentaires (id_billet, auteur, commentaire, date_commentaire) VALUES(?, ?, ?, NOW())')) {
        die(print_r($bdd->errorInfo(), TRUE));
    }
    if (!$req->execute(array($_POST['id_billet'], $_POST['auteur'], $_POST['commentaire']))) {
        die(print_r($req->errorInfo(), TRUE));
     
    //redirection
     
    header('Location: commentaires.php?billet=id');
    ?>
    Par contre ne te fie pas à l'intitulé "php5" je ne sais pas en fait (je debute)
    et le core c'est??

    merci

  4. #4
    Membre expérimenté

    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
    Par défaut
    Il manque une accolade fermante au second if.

    Le core c'est le PHP de base, tel qu'il est distribué. PDO n'en fait partie que depuis la version 5.1, avant cela c'était une extension PECL, donc développée/maintenue bien à part (ça faisait donc des éléments supplémentaires à installer). Et plus on aura une version récente de PHP moins PDO sera "buggué", en plus de profiter pleinement de ses diverses fonctionnalités/options. Toutes les constantes PDO, notamment, ne sont intégrées sous forme de constantes de classe que depuis la version 5.1. Mais c'est juste pour info, disons.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    merci julp

    l'erreur que j'ai :

    Notice: Undefined index: id_billet in C:\wamp\www\tp blog\commentaires_post.php on line 18
    Array ( [0] => 23000 [1] => 1048 [2] => Column 'id_billet' cannot be null )

    je pense savoir ce qui pose problème mais comment faire??
    id_billet correspond à un champ du fichier billet.
    lorsque l'on veut, sur le blog que je crée, insérer un commentaire, on a deux types de commentaires 1 ou 2 .
    Il faut d"abord choisir l'un ou l'autre pour insérer quelque chose avec le nom d'auteur.
    Mais comment faire en sorte de mémoriser le type et l'insérer automatiquement avec les commentaires et pseudo rajoutés???


  6. #6
    Membre expérimenté

    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
    Par défaut
    Le retransmettre en tant que paramètre GET ou, mieux, en tant que champ caché lors de la création du second formulaire. Une autre solution étant sa mise en session.

  7. #7
    Membre expérimenté

    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
    Par défaut
    C'est la même que plus tôt :
    Citation Envoyé par julp Voir le message
    Il manque une accolade fermante au second if.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: commentaires.php?billet=' . intval($_POST['id_billet']));

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    oui désolé , à force de me prendre la tête , je vois pas les petites erreurs (déjà faite en plus)

    je ne comprenais pas comment je pourrais revenir sur la page du billet correspondant après l'ajout du texte mais avec intval c'est pigé!!

    un grand merci pour ton aide

    ça marche maintenant

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

Discussions similaires

  1. Bouton pour confirmer un ajout dans une table sous Access
    Par cestimagik dans le forum Access
    Réponses: 3
    Dernier message: 31/12/2006, 10h32
  2. Ajout dans une table et relation avec d'autres
    Par climz dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 15h32
  3. [VB6]Problème dajout dans une Table Access à cause des group
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/02/2006, 10h06
  4. [ZEOSLIB] Problème Insertion dans une table
    Par moscovisci dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/06/2005, 12h05
  5. big ajout dans une table
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 19/04/2005, 10h22

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