Page 1 sur 1

Envoi de données à la base non fonctionnel

Posté : 02 déc. 2018, 19:21
par Ohw
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', 'ari4craft');
	$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 :)

Re: Envoi de données à la base non fonctionnel

Posté : 02 déc. 2018, 19:36
par @rthur
Si errorInfo() renvoie 00000, c'est qu'il n'y a pas d'erreur au niveau SQL.

Après tu fais le test sur un fetch() (dont l'objectif est de pouvoir lire ce que renvoie une requête SQL de type SELECT), or tu es sur une requête INSERT donc c'est normal que le fetch renvoie false.

Si tu veux savoir si ta requête s'est bien exécutée, il faut regarder la valeur retour de execute()

Re: Envoi de données à la base non fonctionnel

Posté : 02 déc. 2018, 19:39
par Ohw
Merci à toi @rthur
Quand je var_dump mon execute, j'obtiens "bool(false) " encore......

Re: Envoi de données à la base non fonctionnel

Posté : 02 déc. 2018, 20:40
par @rthur
Et bien repart d'une page vierge en ne mettant qu'un code minimaliste juste avec ta requête et teste là car si ton execute() renvoie false, ce n'est pas normal que errorInfo() soit vide.

Une fois que tu as validé que ça fonctionne, soit ça te permet de comprendre à quel moment ça ne fonctionne pas dans ton code complet, soit il faut que tu reconstruise ton code bloc par bloc jusqu'à trouver à quel moment ça ne fonctionne pas comme prévu.