mister431
Messages postés56Date d'inscriptionjeudi 19 novembre 2020StatutMembreDernière intervention24 juin 2022
-
14 juin 2022 à 09:00
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 2024
-
14 juin 2022 à 11:21
Bonjour, je fait un calendrier en PHP avec l'aide de la vidéo suivante :
https://www.youtube.com/watch?t=1896&v=qzE949YCYic&feature=youtu.be
(Je suis entre 33 min et 39 min)
J'obtiens cette erreur :
Quand je clique sur les détails de mes evenement:
Pouvez m'aider s'il vous plait
Mon Code est en Plusieurs Partie (Je n''est pas tout upload seulement le plus important )
<?php
use App\Date\Month;
use Calendar\Events;
require_once('../src/bootstrap.php');
require_once('../src/Calendar/Events.php');
$pdo = get_pdo();
$events = new Calendar\Events($pdo);
if(!isset($_GET['id'])){
header('location: /404.php');
}
try{
$event = $events->find($_GET['id']);
}catch(\Exception $e){
e404();
}
require_once('../views/header.php');
?>
<h1><?= ($event->getName()); ?></h1>
<ul>
<li>Date : <?= $event->getStart()->format('d/m/Y'); ?></li>
<li>Heure de début : <?= $event->getStart()->format('H:i'); ?></li>
<li>Heure de fin : <?= $event->getEnd()->format('H:i'); ?></li>
<li>Description :<br>
<?= H($event->getDescription()); ?>
</li>
</ul>
<?php require_once('../views/footer.php'); ?>
-------------------------------------------
Events.php:
<?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;
}
}
Event.php
<?php
namespace Calendar;
class Event {
private $id;
private $name;
private $description;
private $start;
private $end;
function __construct($id, $name, $description, $start, $end)
{
$this->$id=$id;
$this->$name=$name;
$this->$description=$description;
$this->$start=$start;
$this->$end=$end;
}
public function getId(): int{
return $this->id;
}
public function getName(): string{
return $this->name;
}
public function getDescription(): ?string{
return $this->description;
}
public function getStart(): \DateTime{
return new \DateTime($this->start);
}
public function getEnd(): \DateTime{
return new \DateTime($this->end);
}
}
?>
bootstrap.php :
<?php
function e404(){
require_once('../public/404.php');
exit();
}
function dd($vars){
foreach($vars as $var){
echo "<pre>";
print_r($var);
echo "</pre>";
}
}
function get_pdo (): PDO{
return new PDO('mysql:host=localhost;dbname=chat', 'root','', [
PDO:: ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
PDO:: ATTR_DEFAULT_FETCH_MODE => \PDO:: FETCH_ASSOC
]);
}
function h (?string $value): string{
if($value == null){
return '';
}
return htmlentities($value);
}
-------------------------
Month.php :
<?php
namespace Calendar;
class Month {
public $days = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dmanche'];
private $months = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre'];
public $month;
public $year;
/**
* Month constructor.
* @param int $month Le mois compris entre 1 et 12
* @param int $year l'année
* @throw \Exception
*/
public function __construct(?int $month = null, ?int $year = null){
if ($month === null || $month <1 || $month >12){
$month = intval(date('m'));
}
if($year === null){
$year = intval(date('Y'));
}
$this->month = $month;
$this->year = $year;
}
/**
* Renvoi le premier jour du mois
* @return \DateTime
*/
public function getStartingDay (): \DateTime{
return new \DateTime("{$this->year}-{$this->month}-01");
}
/**
* Retourne le mois en toute lettre
* @return string
*/
public function toString(): string {
return $this ->months[$this->month - 1] . ' ' . $this->year;
}
/**
* Renvoi le nombre de semaine dans le mois
* @return int
*/
public function getWeeks(): int{
$start = $this->getStartingDay();
$end = (clone $start)->modify('+1 month -1 day');
$weeks = intval($end->format('W')) - intval($start->format('W')) +1;
if ($weeks < 0){
$weeks = intval($end->format('W'));
}
return $weeks;
}
/**
* Le jour est dans le mois en cours ?
* @param \DateTime $date
* @return bool
*/
public function withinMonth (\DateTime $date ): bool{
return $this->getStartingDay()->format('Y-m') === $date->format('Y-m');
}
/**
* Renvoi le mois suivant
* @return Month
*/
public function nextMonth(): Month {
$month = $this->month + 1;
$year = $this->year;
if($month > 12){
$month =1;
$year += 1;
}
return new Month($month, $year);
}
/**
* Renvoi le mois précédent
* @return Month
*/
public function previousMonth(): Month {
$month = $this->month - 1;
$year = $this->year;
if($month < 1){
$month =12;
$year -= 1;
}
return new Month($month, $year);
}
}
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 20244 705 14 juin 2022 à 09:05
Bonjour,
Tu as chargé le fichier Calendar\Events .. mais là .. il te parle du fichier Calendar\Event
Il semble que tu aies donc oublié de le require.
mister431
Messages postés56Date d'inscriptionjeudi 19 novembre 2020StatutMembreDernière intervention24 juin 2022 14 juin 2022 à 09:14
Bonjour Jordane je te remercie encore une fois pour tes réponses mais je suis désoler je n'arrive pas a trouver ou il manque un require. Pouvez vous détailliez ou je pourrais le rajouter ?
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 20244 705
>
mister431
Messages postés56Date d'inscriptionjeudi 19 novembre 2020StatutMembreDernière intervention24 juin 2022 14 juin 2022 à 09:57
Le message d'erreur contient le numéro (ainsi que le nom du fichier ) de ligne concernée par le souci...
il faut donc, dans ce fichier, require les DEUX fichiers demandés
A moins que ce fichier n'existe pas dans ton répertoire .. et que tu as juste oublié de mettre un S au nom du fichier lors de son appel ?
Ca .. il n'y a que toi qui pourras y répondre.
mister431
Messages postés56Date d'inscriptionjeudi 19 novembre 2020StatutMembreDernière intervention24 juin 2022
>
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 2024 14 juin 2022 à 10:44
Bonjour Merci de votre aide il fallait bien rajouter ses require_once pour regler ce bug mais maintenant un bug récurent apparait après cela :
Comment regler se bug array s'il vous plait ?
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 20244 705
>
mister431
Messages postés56Date d'inscriptionjeudi 19 novembre 2020StatutMembreDernière intervention24 juin 2022 Modifié le 14 juin 2022 à 11:22
Nouveau problème = ouverture d'une nouvelle question.
Merci.
14 juin 2022 à 09:14
14 juin 2022 à 09:57
il faut donc, dans ce fichier, require les DEUX fichiers demandés
A moins que ce fichier n'existe pas dans ton répertoire .. et que tu as juste oublié de mettre un S au nom du fichier lors de son appel ?
Ca .. il n'y a que toi qui pourras y répondre.
14 juin 2022 à 10:44
Comment regler se bug array s'il vous plait ?
Modifié le 14 juin 2022 à 11:22
Merci.
PS: Pense à mettre celle-ci en résolue.