Function insert ne marche pas

Fermé
Maxime - 13 févr. 2014 à 16:48
 Profil bloqué - 14 févr. 2014 à 16:57
Bonjour, j'ai un petit formulaire pour créer un article. Je vous laisse mon code je ne comprends pas pourquoi cela ne marche pas car aucune insertion ne se fait dans ma base après l'exécution de ce petit programme. Je débute en PDO.

Voici le formulaire, ce formulaire renvoi directement a cette page qui exécute un bout de programme en tête de page.
<form action="v_postarticle.php" method="post">
       <table>
             <tr><td>Titre :</td></tr>
             <tr><td><textarea rows="1" cols="171" id="titreArticle" name="titreArticle"></textarea></td></tr>
             <tr></tr>
             <tr><td>Article :</td></tr>
             <tr><td><textarea rows="30" cols="171" id="corpsArticle" name="corpsArticle"></textarea></td></tr>
             <tr></tr>
             <tr><td><input class="btn btn-sm btn-primary" type="submit" id="submit" name="submit" value="Valider"></td></tr>
        </table>
</form>


Ce code php récupère les données du formulaire et utilise une fonction de la class pour ajouter cette article a la base de donnée cependant cela ne marche pas, je met la fonction en dessous.
<?php
session_start();
include('../include/class.pdogsb.inc.php');
$login = $_SESSION['login'];
$titre_article = $_POST['titreArticle'];            
$corps_article = $_POST['corpsArticle'];

if(!empty($titre_article)&&!empty($corps_article))
{
    insertArticle($login,$titre_article,$corps_article);                
    header("Location:v_sommaire.php");
}

else{
    echo"Veuillez saisir tous les champs demandés";
}
?>


Voici la fonction
public function insertArticle($login,$titre,$corps)
       {
          $req1 = "select id_membre from articles inner join membres on articles.id_membre = membres.membre_id where membre_pseudo = '".$login."'";
          $rs1 = PdoGsb::$monPdo->query($req1);
          $id_membre = $rs1->fetch();
          $req = "insert into articles (titre_article, corps_article, date_article, id_membre) values ('$titre','$corps',NOW(),'$id_membre')";
          PdoGsb::$monPdo->exec($req); 
       }

5 réponses

Salut,

Essaie en remplaçant cette ligne:
$req = "insert into articles (titre_article, corps_article, date_article, id_membre) values ('$titre','$corps',NOW(),'$id_membre')";
PdoGsb::$monPdo->exec($req);


par:
$req = 'insert into articles (titre_article, corps_article, date_article, id_membre) values ("'.$titre.'","'.$corps.'",NOW(),"'.$id_membre.'")';
PdoGsb::$monPdo->exec($req);
0
Salut sparw, j'ai essayé ta solution ça n'a rien changer, mais ce qu'il y a de bizarre dans tout ça, c'est que ça me renvoie aucune erreur. C'est simplement que mon article ne s'ajoute pas dans la base de donnée.
0
Personne peut m'aider s'il vous plaît? Je ne vois vraiment pas d'où vient le problème, je suis bloquer dessus. Cela me rends dingue.
0
Profil bloqué
14 févr. 2014 à 15:39
as tu essayé de lancer ta requéte directement dans phpMyAdmin ?
Si tu y arrive, c'est que la requéte est bonne...mais que c'est peut-étre ta façon d'utiliser PDO qui l'ai moins...

Si tu n'y arrive pas, c'est que ton code est bancale (ou la struture de ta base de données mal faite).

La solution de sparw me parait tout à fait correct à première vue...
0
Oui j'ai déjà essayer de la lancer sur phpmyadmin directement et ça marche sans aucun souci. Donc l'erreur vient forcément de PDO, oui j'utilise mal PDO justement et j'aimerais qu'on m'éclaircis parce c'est un code banal et l'erreur me parait vraiment étrange. Sinon ma base de données n'a aucun souci j'ai vérifier l'intégral de la base. Merci de me proposer une autre solution s'il vous plaît.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Profil bloqué
14 févr. 2014 à 16:57
tu as une page blanche ou "Veuillez saisir tous les champs demandés" qui s'affiche ?

car j'ai l'impression que c'est le tout début qui foire, et non ce qui s'apparente à PDO.

tu définis des variables qui en théorie peuvent ne pas existait

perso j'aurai mis :
if(isset($_SESSION['login']) ) $login = $_SESSION['login'];
if(isset($_POST['titreArticle']) )$titre_article = $_POST['titreArticle'];            
if(isset($_POST['corpsArticle']) )$corps_article = $_POST['corpsArticle'];


par ailleurs, le code de sparw à mon sens est niquel !

désolé de ne pas t'aider d'avantage...en espérant que ma proposition face avancer les choses...
0