Envoi de données à la base non fonctionnel

Ohw
Invité n'ayant pas de compte PHPfrance

02 déc. 2018, 19:21

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7783 Messages

02 déc. 2018, 19:36

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()
Quand tout le reste a échoué, lisez le mode d'emploi...

Ohw
Petit nouveau ! | 1 Messages

02 déc. 2018, 19:39

Merci à toi @rthur
Quand je var_dump mon execute, j'obtiens "bool(false) " encore......

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7783 Messages

02 déc. 2018, 20:40

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.
Quand tout le reste a échoué, lisez le mode d'emploi...