Problème de ARRAY sur mon calendrier
Résolu
mister431
Messages postés
58
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
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
- Calendrier xtra - Télécharger - Bureautique
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