Page 1 sur 1

je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 17:37
par zizouley
Bonjour je ne comprends absolument pas pourquoi l'INSERT INTO que j'ai utlisé ne fonctionne pas, je ne sais pas si c'est un problème de synthaxe ou autres! Illulinez moi svp !!

Code : Tout sélectionner

<h3>Titre : </h2><input type="text" name="title_news1"/></br> <h3>Article 1 : </h3><textarea cols=33 rows=10 value="article1" name="article1"></textarea></br> <input type="submit" name="articles" value="Envoyer les articles" align="center"> </form> </table> <?php if(isset($_POST['articles'])) { $title_news1=$_POST['title_news1']; $article1=$_POST['article1']; $req_news=$bdd->prepare("INSERT INTO new (titre_news,mess_news) VALUES ('?','?')"); $req_news->execute(array($title_news1, $article1));

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 17:49
par or 1
$req_news=$bdd->prepare("INSERT INTO new (titre_news,mess_news) VALUES (?,?)");

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 18:04
par zizouley
j'ai enlevé comme tu l'as montré les accolades au niveau des points d’interrogation mais mon problème persiste toujours..
Comment voir les erreurs pour le code SQL ? Car je pense que le problème vient de là

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 18:13
par @rthur
Bonjour,

Voici npour la gestion des erreurs avec PDO :
https://secure.php.net/manual/fr/pdo.error-handling.php
ERRMODE_WARNING

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 18:23
par Ryle
Bonjour,

Je ne sais pas si ton problème vient de là, mais "NEW" est un mot clé réservé en SQL, il est préférable de ne pas l'utiliser comme nom de table ou de colonne (comme la plupart des mots propres à ce langage "TABLE", "DATE"...).

Avec MySQL (et mysql uniquement) tu peux utiliser les quotes inverses `new` (alt gr+7) pour dire au moteur qu'il ne s'agit pas de son mot clé réservé, mais bien du nom de ta table, mais d'une manière générale, il vaut mieux changer le nom de ta table pour news, ou actu, ou jesaispasquoimaispasunmotclésql :)

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 18:31
par zizouley
ah ah merci de ta remarque, en réalité c'est une erreur de frappe, dans ma base j'ai effectivement choisi de mettre news, je l'ai d'ailleurs corrigé sans pour autant que mon problème soit résolu d'ailleurs... Si vous avez des suggestions de corrections je suis preneur.
Merci

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 19:21
par zizouley
après changement voilà là où je reste bloqué.. De l'aide please !

Code : Tout sélectionner

<h3>Titre : </h2><input type="text" name="title_news1"/></br> <h3>Article 1 : </h3><textarea cols=33 rows=10 value="article1" name="article1"></textarea></br> <input type="submit" name="articles" value="Envoyer les articles" align="center"> </form> </table> <?php if(isset($_POST['articles'])) { $title_news1=$_POST['title_news1']; $article1=$_POST['article1']; $req_news=$bdd->prepare('INSERT INTO news (titre_news,mess_news) VALUES (:title_news1,:article1)'); $req_news->execute(array( 'title_news1'=> $titre_news, 'article1'=> $mess_news ));

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 19:23
par @rthur
Tu as fait les modifs pour voir les erreurs comme indiqué dans mon post ?

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 21 juil. 2016, 20:39
par zizouley
non, pourrais tu m'indiquer comment rajouter cette commande, par contre j'ai ça:

Code : Tout sélectionner

try{ $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); }

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 22 juil. 2016, 15:31
par moogli
salut

ta conf va lever une exception, donc un try catch serait du meilleur effet autour de la requête :)

est tu certains que la requête est exécutée ?
if(isset($_POST['articles'])) <= tu passe cette condition ?
{
$title_news1=$_POST['title_news1'];
$article1=$_POST['article1'];
$req_news=$bdd->prepare('INSERT INTO news (titre_news,mess_news) VALUES (:title_news1,:article1)');
$req_news->execute(array(
'title_news1'=> $titre_news,
'article1'=> $mess_news
));

tu n'as pas besoin de variable temporaire ;)

Sinon ta requête SQL est syntaxiquement correcte.
Il va peux être, être nécessaire de déboguer un peu : IDE + xdebug, ou a l'ancienne pas pratique à grand coup de var_dump

COté lisibilité je préfère le bindParam, je ferais donc ton code ainsi.
<?php
if(isset($_POST['articles'])) {
  $req_news=$bdd->prepare('INSERT INTO news (titre_news, mess_news) VALUES (:title_news1, :article1)');
  $req_news->bindParam(':title_news1', $_POST['title_news1']);
  $req_news->bindParam(':article1', $_POST['article1']);
  $req_news->execute();
}

@+

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 23 juil. 2016, 01:04
par zizouley
Bonsoir, merci de ta réponde Moogli, je vais essayer avec le bindparam mais c'est quand même frustrant de ne pas savoir pourquoi ça ne marche pas sinon avec la méthode que j'ai tenté d'utiliser, en tout cas ce n'est pas faute d'avoir chercher :(

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 23 juil. 2016, 01:13
par zizouley
voici le code en intégralité peut être que vus comprendrez mieux :

Code : Tout sélectionner

<header> <link href="../style/test.css" type="text/css" rel="stylesheet"/> <?php try{ $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } session_start(); ?> </header> <?php include("../menu.php"); if(isset($_SESSION['username'])){ if(isset($_GET['action'])){ if($_GET['action']=='ajouter'){ header('Location:../deposer_annonce.php'); }else if ($_GET['action']=='modifier/supprimer'){ } }else{ } }else{ header('Location:../Acceuil.php'); } ?> </header> <h1>Administration</h1></br></br> <h3>Bienvenue,<?php echo $_SESSION['username'];?> dans la zone d'administration du site.</h3> <a href="?action=ajouter">Ajouter un produit</a></br> <a href="?action=modifier/supprimer">Modifier/Supprimer un produit</a> <h1>Ecrire un article</h1></br></br> <table> <form action="../Accueil.php" method="POST"> <h3>Titre : </h2><input type="text" name="title_news1"/></br> <h3>Article 1 : </h3><textarea cols=33 rows=10 value="article1" name="article1"></textarea></br> <input type="submit" name="articles" value="Envoyer les articles" align="center"> </form> </table> <?php if(isset($_POST['articles'])) { $title_news1=$_POST['title_news1']; $article1=$_POST['article1']; $req_news=$bdd->prepare("INSERT INTO news (titre_news,mess_news) VALUES (:title_news1,:article1)"); $req_news->execute(array( 'title_news'=> $title_news1, 'mess_news'=> $article1 )); header("Location:../Accueil.php?username=".$_SESSION['$article1'&&'$title_news1']); }

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 23 juil. 2016, 02:10
par zizouley
Comment alors activer les exceptions PDO ? Pour que je puisse au moions voir et essayer de comprendre mon erreur ?

Re: je n'arrive pas à recevoir les informations dans ma base de donnée !

Posté : 25 juil. 2016, 14:06
par moogli
c'est déjà fait
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

vu ton code toutes les fonctions header doivent afficher une erreur "header allready send" vu que tu affiches du code html avant (ligne 1à 3 par exemple).

si tu redirige c'est que tu n'as pas besoin de la page donc affiche rien avant (et de toute façon cela ne fonctionne pas ;) ).


ensuite as tu essayés de mettre juste la connexion et la requête d'insertion dans le fichier et de l'utiliser et de voir ce qu'il y a aensuite dans la base.

est ce que tu affiche bien les erreur (display_error = on) avec un niveau d'erreur à E_ALL (error_reporting = E_ALL).

@+