Problème de ARRAY sur mon calendrier
Résolu
mister431
Messages postés
56
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, je fait un post a la suite de mon ancien problème (https://forums.commentcamarche.net/forum/affich-37614694-reupload-probleme-calendrier-php#jAjaxMessage) Avec tout les code et les détails qui pourrais vous être utile.
Problème d'array :

J'obtiens cette erreur dans mon programme pouvez vous m'aider s'il vous plait a régler se problème ?
Problème d'array :
J'obtiens cette erreur dans mon programme pouvez vous m'aider s'il vous plait a régler se problème ?
A voir également:
- Problème de ARRAY sur mon calendrier
- Mon calendrier - Télécharger - Santé & Bien-être
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Calendrier partagé google - Guide
- Synchroniser calendrier outlook et gmail - Guide
- Logiciel calendrier personnalisé gratuit - Télécharger - Organisation
3 réponses
Il est toujours disponible en format texte dans l'ancien post : https://forums.commentcamarche.net/forum/affich-37614694-reupload-probleme-calendrier-php#jAjaxMessage dans la partie EVENTS et je ne c'est toujours pas quoi faire avec le FETCH. Je suis pas un pro du php je suivais juste un tuto d'une vidéo.
<?php namespace Calendar; use PDO; class Events { private $pdo; public function __construct(\PDO $pdo) { $this->pdo = $pdo; } /** * Récup les évenements entre deux dates * @param \DateTime $start * @param \DateTime $end * @return array */ public function getEventsBetween(\DateTime $start, \DateTime $end): array{ $sql = "SELECT * FROM events WHERE start BETWEEN '{$start->format('Y-m-d 00:00:00')}' AND '{$end->format('Y-m-d 23:59:59')}'" ; $statement = $this->pdo->query($sql); $results = $statement->fetchAll(); return $results; } /** * Récup les évenements entre deux dates indexé par jour * @param \DateTime $start * @param \DateTime $end * @return array */ public function getEventsBetweenByDay(\DateTime $start, \DateTime $end): array{ $events = $this->getEventsBetween($start, $end); $days = []; foreach($events as $event){ $date = explode(' ', $event['start'])[0]; if(!isset($days[$date])){ $days[$date] = [$event]; }else{ $days[$date][] = $event; } } return $days; } /** * Récupére un évenement * @param int $id * @return array * @throws \Exception */ public function find (int $id): \Calendar\Event{ require_once('Event.php'); $statement = $this->pdo->query("SELECT * FROM events WHERE id = $id LIMIT 1"); $statement->setFetchMode(\PDO::FETCH_CLASS, \Calendar\Event::class); $result = $statement->fetch(); if($result === false){ throw new \Exception('Aucun résultat a était trouvé'); } $re = new \Calendar\Event($result['id'],$result['name'],$result['description'],$result['start'],$result['end']); return $re; } }
$statement->setFetchMode(\PDO::FETCH_CLASS, \Calendar\Event::class);
là tu fais un FETCH_CLASS
sauf que ensuite, tu essayes d'accéder aux données comme si c'était un array.
$re = new \Calendar\Event($result['id'],$result['name'],$result['description'],$result['start'],$result['end']);
Tu dois changer le mode de FETCH ..
$statement->setFetchMode(\PDO::FETCH_ASSOC, \Calendar\Event::class);
Pour info : https://www.php.net/manual/fr/pdostatement.fetch.php