Bonjour,
Voila je rencontre un petit problème avec mon code.
J'ai écrit ce script en lien avec ma base de données SQL :
<?php
if(isset($_POST['title']))
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$requete = $bdd->prepare('INSERT INTO post(title, content) VALUES(?, "")');
$requete->execute(array($_POST['title']));
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Edition</title>
</head>
<body>
<h1>Edition</h1>
<form action="edition.php" method="post">
<label>Titre : <input type="text" name="title"></label>
<input type="submit" value="valider">
</form>
</body>
</html>
Je souhaiterais que, lorsque je remplie mon formulaire (l'input "titre") une ligne soit créée dans ma base de données avec l'id (généré automatique en A.I.), le "title" précédemment saisi et le "content" qui serait vide.
Mais il ne se passe rien ! Rien n'ai créé dans la table "post".
Cela fait maintenant plusieurs heures que j'essaie de faire fonctionner ce code mais je n'y parviens pas.
Merci d'avance pour votre aide,
Bon après-mid à tous.
Je viens de sortir la variable $bdd (qui permet de se connecter avec la base de données) de la condition if(!empty($_POST['title'])) et ça fonctionne enfin !
Voici le code complet :
<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
if(!empty($_POST['title']))
{
$requete = $bdd->prepare('INSERT INTO post(title, content) VALUES(?, "")');
$requete->execute(array($_POST['title']));
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Edition</title>
</head>
<body>
<h1>Edition</h1>
<form action="edition.php" method="post">
<label>Titre : <input type="text" name="title"></label>
<input type="submit" value="valider">
</form>
</body>
</html>
Merci beaucoup pour votre aide,
Bonne journée à tous.
Salut
if(isset($_POST['title']))
Ce code là sert à rien, car title
est toujours définie. Il peut juste être vide ou non. Utilise !empty($field)
à la place.
As-tu essayé de débugger un peu ? Du genre mettre un print_r($_POST); die()
pour savoir ce qu'il se passe avant la validation de ton formulaire ?
Merci pour ta réponse !
Non je n'ai pas essayé de débugger.
Je débute tout juste en PHP, je n'y connais vraiment pas grand chose...
J'ai déjà entenu parlé de la fonction print_r() mais je ne sais pas où il faut la placer dans le code, peux-tu me l'indiquer stp ?
Bonjour.
Je débute tout juste en PHP, je n'y connais vraiment pas grand chose...
J'ai déjà entenu parlé de la fonction print_r() mais je ne sais pas où il faut la placer dans le code, peux-tu me l'indiquer stp ?
Je te recommande fortement de suivre cette petite formation : Déboguer son code PHP qui est constitué de 4 vidéos pour un total de 23 minutes, mais qui te sera bien utile vu ton niveau actuel en PHP.
Je viens d'essayer la fonctoion
print_r($_POST); die()
Et après avoir rempli mon formulaire j'obtiens ceci : Array ( [title] => titre saisi )
Par exemple, si j'entre "Article 1" dans mon formulaire, le résultat sera : Array ( [title] => Article 1 )
Je suppose donc qu'il n'y a pas de problème au niveau de l'assignation de la variable $_POST['title'] avec le fomulaire.
J'ai donc pensé que le problème venait de la connexion avec la BDD mais j'ai essayé d'afficher la table "post" avec "SELECT * FROM post" et la table s'est correctement affichée.
Le problème ne vient donc ni de la liaison entre la variable $_POST['title'] et le formuaire, ni ne la connexion à la base de données.
Je vais donc regarder le tutoriel que tu me conseilles (Lartak), j'espère y trouver un moyer de comprendre le problème.
Merci pour vos réponse,
Si vous avez une solution , je suis toujours preneur,
Bon après-mid.