Problème de ARRAY sur mon calendrier
Résolu
mister431
Messages postés
56
Date d'inscription
jeudi 19 novembre 2020
Statut
Membre
Dernière intervention
24 juin 2022
-
14 juin 2022 à 13:30
jordane45 Messages postés 37532 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2023 - 14 juin 2022 à 16:42
jordane45 Messages postés 37532 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2023 - 14 juin 2022 à 16:42
A voir également:
- Problème de ARRAY sur mon calendrier
- Synchroniser calendrier outlook et gmail - Guide
- Partager calendrier google - Guide
- Télécharger mon calendrier gratuit - Télécharger - Santé & Bien-être
- Trying to access array offset on value of type bool ✓ - Forum PHP
- Problème affichage calendrier outlook ✓ - Forum Outlook
3 réponses
jordane45
Messages postés
37532
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 juin 2023
4 585
14 juin 2022 à 14:25
14 juin 2022 à 14:25
Montre nous la ligne de code indiquée par le message d'erreur...
mister431
Messages postés
56
Date d'inscription
jeudi 19 novembre 2020
Statut
Membre
Dernière intervention
24 juin 2022
14 juin 2022 à 14:33
14 juin 2022 à 14:33
jordane45
Messages postés
37532
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 juin 2023
4 585
14 juin 2022 à 14:44
14 juin 2022 à 14:44
Tu aurais du nous mettre le code au format "text" ... pas en image.. qu'on ne peut pas copier/coller.
Mais bon...
Regarde ligne 58 ... le mode de FETCH que tu as utilisé...
Mais bon...
Regarde ligne 58 ... le mode de FETCH que tu as utilisé...
mister431
Messages postés
56
Date d'inscription
jeudi 19 novembre 2020
Statut
Membre
Dernière intervention
24 juin 2022
14 juin 2022 à 15:21
14 juin 2022 à 15:21
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; } }
jordane45
Messages postés
37532
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 juin 2023
4 585
14 juin 2022 à 16:42
14 juin 2022 à 16:42
$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