Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

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();

}

Ce que je veux

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; ?>'

Ce que j'obtiens

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 :)

1 réponse


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();