Bonjour,
Voila je rencontre un petit problème avec mon code.
Bonjour, je cherche a envoyer des données via php sur ma base de données... j'ai essayé les deux choses soivantes
-> 1
Fichier "sendart.php"
<?php
if(isset($_POST['content']) && isset($_POST['titre']) && isset($_POST['resume'])){
include '../../../core/funcs.php';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
checkLoggedIn();
$u = getConnected();
$user = $u['id'];
$ok = SendArticle($_POST['titre'], $_POST['resume'], $_POST['content'], 0,$user);
var_dump($ok);
sleep(0.5);
$ok = GetSpe($_POST['titre'], $_POST['resume'], $_POST['content'], 0,$user);
var_dump($ok);
//header("Location: https://**********/v/vart.php?id=".$ok);
exit();
}
?>
Fichier "func.php"
function SendArticle($titre, $resume, $content, $catid=0,$uid) {
$bdd = new PDO('mysql:host=localhost;dbname=AL;charset=utf8', 'root', '*********');
$req = "INSERT INTO `articles`(id, photo, categorie_id, titre, `date`, auteur_id, resume, content, trending, une, `datetime`) VALUES (NULL , 'try.jpg' , '".$catid."' , '".$titre."' , '".date("d-m-Y",time())."' , '".$uid."' , '".$resume."' , '".$content."' , 0 , 0 , NOW() , 1)";
$q2 = $bdd->prepare($req);
$q2->execute();
if (!$q2->fetch()) {
echo "<br>";
echo "\nPDO::errorInfo():\n";
print_r($bdd->errorInfo());
echo "<br>";
}
sleep(1);
return $q2->fetch();
}
-> 2
Fichier "sendart.php"
<?php
if(isset($_POST['content']) && isset($_POST['titre']) && isset($_POST['resume'])){
include '../../../core/funcs.php';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
checkLoggedIn();
$u = getConnected();
$user = $u['id'];
$ok = SendArticle($_POST['titre'], $_POST['resume'], $_POST['content'], 0,$user);
var_dump($ok);
sleep(0.5);
$ok = GetSpe($_POST['titre'], $_POST['resume'], $_POST['content'], 0,$user);
var_dump($ok);
//header("Location: https://**********/v/vart.php?id=".$ok);
exit();
}
?>
Fichier "func.php"
function SendArticle($titre, $resume, $content, $catid=0,$uid) {
$bdd = new PDO('mysql:host=localhost;dbname=AL;charset=utf8', 'root', '*********');
$q2 = $bdd->prepare("INSERT INTO `articles`(id, photo, categorie_id, titre, `date`, auteur_id, resume, content, trending, une, `datetime`) VALUES (NULL , 'try.jpg' , :cat , :titre , :dat , :aut , :res , :cont , 0 , 0 , NOW() , 1)");
$q2->BindValue('cat', $catid);
$q2->BindValue('titre', $titre);
$q2->BindValue('dat', date("d-m-Y",time()));
$q2->BindValue('aut', $uid);
$q2->BindValue('res', $resume);
$q2->BindValue('cont', $content);
$q2->execute();
if (!$q2->fetch()) {
echo "<br>";
echo "\nPDO::errorInfo():\n";
print_r($bdd->errorInfo());
echo "<br>";
}
return $q2->fetch();
}
Je cherche donc a ce que ces données soient entrées dans ma base de données ce qui va me permettre apres de récuperer l'identifiant de l'article et d'envoyer l'utilisateur vers une page 'mapage.php?id=<?= $id; ?>'
Les données ne sont pas entrées dans la base de données, j'ai alors mis des "var dump",etc.... dans tous les sens et j'obtiens une page "sendart.php" qui dit ça :
PDO::errorInfo(): Array ( [0] => 00000 [1] => [2] => )
bool(false) bool(false)
Merci d'avance pour votre aide :)
Bonjour.
Ce n'est pas la méthode fetch
que tu dois utiliser sur une requête de type INSERT
mais la méthode lastInsertId
pour récupérer la valeur de la clé primaire.
Autre chose, une clé primaire, ne peut pas avoir une valeur NULL
, si tu as mis le champ id en auto-increment, il est inutile de le lister dans les champs de la requête, donc :
$q2 = $bdd->prepare("INSERT INTO `articles` (photo, categorie_id, titre, `date`, auteur_id, resume, content, trending, une, `datetime`) VALUES ('try.jpg' , :cat , :titre , :dat , :aut , :res , :cont , 0 , 0 , NOW() , 1)");
// suite ...
return $q2->lastInsertId();