Bonjour,
J'ai repris le tutoriel sur comment créer un tutoriel ( http://www.grafikart.fr/tutoriels/php/calendrier-php-157 ) et il m'indique cette erreur : Fatal error: Call to a member function fetch() on a non-object in xxxxx on line 14.
Logiquement ayant repris le code source disponible seulement aux comptes premium je n'aurais pas dû avoir d'erreur mais je ne trouve pas du tout là...
J'ai vérifié mes logs, ma requete marche correctement...
Quelqu'un peut m'aider? :)
Donne nous un peu de code car sans code la seul chose que je peux te dire c'est que l'erreur indique qu'il connaît pas la fonction fetch que tu demande à la ligne 14
function getEvents($year){
global $DB;
$req = $DB->query('SELECT id,title,date FROM events WHERE YEAR(date)='.$year);
$r = array();
/**
* Ce que je veux $r[TIMESTAMP][id] = title
*/
while($d = $req->fetch(PDO::FETCH_OBJ)){
$r[strtotime($d->date)]$d->id] = $d->title;
}
return $r;
}
La ligne 14 c'est la ligne du while.
Et voici la config:
<?php
try{
$DB = new PDO('mysql:host=localhost:8080;dbname=gestion_budget','root','',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'));
}
catch(PDOException $e){
echo 'Base de donnée en vacance';
exit();
}
?>
A mon avis cela vient de ton paramètre qui doit faire rater ta requête.
Essaye de mettre en dur une date dans ta requête pour tester.
Salut,
Essaye comme ça pour voir $req = $DB->query('SELECT id,title,date FROM events WHERE YEAR(date)="'.$year.'"');
Tu peux également tester avec un try catch et voir l'exception qu'il te sort
Bonjour,
J'ai testé la requête comme tu me l'as conseillé. Sans succès.
Ensuite, le try catch sur la requête n'a rien changé. Sûrement car il n'a pas besoin de passer par le catch car la requête marche très bien... J'essayes de voir dans les configurations de php.ini, j'ai dé commenté les lignes pdo, sans succès non plus... Je me prend la tête avec un collègue là, pas moyen de trouver l'erreur!!!
Au final un collègue à moi a testé le code, il marche nickel, juste ce P***** de Easyphp qui ne marche pas, car chez lui sur WampServer ça marche très bien...
Salut,
voilà la solution.
function getEvents($year){
global $DB;
$query = 'SELECT id,title,date FROM events WHERE YEAR(date)='.$year;
$r = array();
/**
* Ce que je veux $r[TIMESTAMP][id] = title
*/
while($d = $DB->query($query)){
$r[strtotime($d->date)]$d->id] = $d->title;
}
return $r;
}
selon le manuel : PDO::query — Exécute une requête SQL, retourne un jeu de résultats en tant qu'objet PDOStatement.
Bonne chance.