8791 sujets

Développement web côté serveur, CMS

Bonjour à tous.
Pour mon premier message sur le forum, j'aurais plutôt besoin de conseils et de méthodologie.
Je suis débutante et je commence tout juste à m'intéresser à l'orienté objet, en php.
j'aurais souhaité m'exercer en essayant de me faire un petit agenda perso.
Je suis aux balbutiements mais je ne parviens pas à me poser les bonnes questions pour avancer.
Ainsi lâchée seule dans la nature...
Quelqu'un qui a du temps à perdre saura t'il me poser les bonnes questions pour m'aider un peu ?
Je pensais à deux classes :
une classe Calendrier, pour gérer les jours et les dates à afficher selon les années, dans l'idéal qui pourrait s'occuper de gérer les jours fériés et Wend,
une classe Evenement, pour gérer les évènements enregistrés dans une base de données,
une classe d'affichage qui ferait le lien entre les deux...

Je commence tout juste alors j'ai surtout besoin de me poser les bonnes questions pour poser les bases à l'écrit d'un premier travail. Je suis un peu perdue.

Merci de votre compréhension et bonne soirée à tous
Modifié par bibi555 (15 Nov 2011 - 21:39)
Coucou.
Avant de te lancer dans la POO assure-toi:
-de maîtriser parfaitement la syntaxe PHP
-d'avoir un minimum d'expérience

Sinon c'est inutile ou en tout cas non productif. Tu pars mal sans ces "pré-requis" Smiley cligne
Pardon mais se débrouiller en PHP cela ne veut pas dire grand chose, maintenant je t'ai donné un conseil, pas la vérité absolue. Smiley lol

Concrètement, si je te demande :"que sais-tu faire en PHP?", tu me réponds quoi?
Après tu vas trouver quantité de sites disant "la POO PHP pour les débutants", si tu arrives à t'en sortir c'est très bien mais c'est pas gagné.

Pour ton cas pratique:

Un calendrier PHP doit pouvoir être paramétré entièrement (aucun intérêt sinon) ainsi il faut prévoir la gestion:

- des liens sur les mois, les semaines…
- de l'affichage du mois (ou pas), de la navigation entre mois, des semaines…
- du format des liens
- des dates limites
- de l'ajout d'évènements sur des dates


ce qui se traduit en POO par:
// affichage du mois
// affichage des semaines par numéro
// affichage des jours (LMMJVSD)
// navigation par mois
// liens sur les semaines
// liens sur le mois
// liens sur les jours précédant aujourd'hui
// lien sur aujourd'hui



Tu dois ensuite y rajouter du CSS pour l'affichage et peut-être du javascript pour des hover suivant la date, tu passes la souris sur une date, un évènement s'affiche, par exemple.

Smiley cligne
Modifié par jmlapam (14 Nov 2011 - 06:17)
Salut à toi,

L'écriture d'un agenda n'est pas si facile que ça. C'est même un peu plus complexe qu'un script classique d'espace membre, ou d'ajout et de suppression de données. Car il va te falloir gérer les dates, les périodes, peut-être les différents utilisateurs, peut-être les pourcentages de chaque période, etc.

J'ai réalisé un planning en PHP, qui doit encore évoluer. Tu peux le trouver en te connectant sur -www.widjoo-pro.com et t'en inspirer sans soucis, dans la partie "Ressources humaines". Si tu as des questions précises, n'hésite pas.

Commence d'abord par un simple tableau Html affichant des dates, avec un code PHP gérant les "dates suivantes / précédentes", c'est par là qu'il faut commencer selon moi.
Modifié par Laurie-Anne (15 Nov 2011 - 07:40)
bonsoir,
je ne doute pas que créer un agenda, si petit soit-il, ne soit pas évident.
Je vous remercie de vos premiers conseils et pistes.
je vais donc procéder par étapes en créant ce calendrier d'abord comme je sais faire, et puis vous me direz si c'est suffisant pour tenter de le faire en poo.
je suis en train de le faire en php donc, mais en procédural.
Pour le moment, j'affiche mois par mois, avec des liens précédent/suivant,LMMJVSD, la date du jour avec un police particulière, un encart pour le jour consulté.
Je m'attèle donc à créer la bdd associée.
J'ai fait un truc tout bidon dans la base de données, mais déjà je bute sur le type de champ date à enregistrer. Je pensais à une date de début, et une date de fin. Dans quel format enregistrer ces dates de début et de fin, et comment récupérer le jour d'un évènement inclut entre deux dates?
on voit plusieurs trucs divers sur le web, dont pas mal de "varchar", ce qui ne me convainc pas vraiment. Je pensais au timestamp plutôt.

Pour savoir ce que vous en pensez....
Merci d'avance
Et je ne pense pas avoir besoin de travailler avec des numéros de semaine.

EDIT : je pense trouver mes réponses : ici
Reste à bricoler encore...
Modifié par bibi555 (15 Nov 2011 - 01:27)
Salut,

si tu te lances dans la POO, avant de commencer à coder, concentre toi sur la conception de tes objets, histoire de faire des classes efficaces.
Regarde donc ce qu'est l'UML.
Bonsoir,

@zed13 : j'ai regardé un peu l'uml, que je ne connais pas du tout. Pas simple. ça me fait penser à l'XML que je connais un peu.

en suivant les conseils de Jmlapalm et Gaylord.P, j'ai fait un calendrier en php procédural, fonctionnel.

"avant de commencer à coder, concentre toi sur la conception de tes objets" ...c'est ce que je voulais faire au départ mais je n'arrive pas à penser objet, je ne sais pas comment m'y prendre.
je bloque sur plein de choses.

je me dis :

une classe calendrier,
* avec pour attributs :
- une année,
- des mois,
- des semaines (pourquoi pas),
- un type d'affichage (annee, trimestre, mois, semaine)
- une période à afficher
* et pour méthodes :
- construct($periode)
- afficher_calendrier($periode),
- colorer_calendrier($periode)(sur un an, sur un mois, sur une semaine, differemment selon les jours fériés, jours vides/occupés, selon les types d'evenements qui occupent)
- calculer_annee_bissextile($annee),
- identifier_feries($periode)

classe jour :
* attributs :
- h(x24),
- mn(x60),
* méthodes :
- afficher_jour($date),
- colorer_h_occupees($date),
- recuperer_events($date)

classe évènement
* attributs :
- un identifiant
- une date de début (sans les heures)
- une heure de début
- une durée (en h)
- un type d'évènement,
- un intitulé
- un commentaire
- une "récurrence" de l'évenement (ts les ans, ts les lundis, tous les 12h)
* méthodes :
- ajouter_event($infos),
- modifier_event($id)
- reporter_event($id)
- valider_realisation_event($id)
- suppr_event($id)
- lire_events($date)

...C'est plus clair je crois pour la classe event, qui me parait plus "logique".
Pour la classe calendrier et la classe jour, je ne vois pas bien comment m'y prendre.
Pourriez-vous m'aiguiller un peu?

je me disais aussi que je pouvais coder le calendrier en procedural (peut-être même dans une fonction) et faire une classe, mais que pour les evenements.

Qu'en pensez-vous? est-ce farfelu de mêler les deux? Pour le coup il me semble que ce serait bien adapté...mais peut-être que j'ai loupé un truc.

Merci d'avance de votre aide et de vos critiques.
n'hésitez pas à me reprendre si je suis à côté de la plaque.
Merci encore de votre aide déjà

//EDIT
je continue d’avancer doucement mais j'ai une grande question concernant la gestion des événements...
comment afficher une activité sur plusieurs jours (du 2 au 4 mars par exemple) si je ne souhaite afficher que le planning d'une seule journée (le 3 mars)?
Je peux afficher les activités d'une journée mais comment dire à ma table : "récupère les entrées dont les (timestamp de début + durée) correspondent à ce laps de temps de 24h"... Smiley langue j'suis peut-être pas hyper claire...
Une idée ?
Modifié par bibi555 (24 Nov 2011 - 07:42)
AU SECOURS !

j'ai essayé plein de choses pour tenter de me faire une classe "jour", mais je n'y arrive pas.
Déjà pour mes histoires d'horaires je n'ai pas trouvé de solution, et avec les durées c'est la panique. je ne vois pas de façon simple d'y arriver.

le résultat n'est pas probant mais logique : à chaque nouvel evenement il me créé une nouvelle journée...
pfff!!!
Mais comment faire ?
Merci

//j'avais mis mon code mais il est bien trop long

J'ai d'abord un pb de bdd : je cherche à savoir quels evenement se déroule telle journée, sachant que certains commencent avant le début de la journée, mais je ne vois pas comment.

Toute piste sera la bienvenue, merci d'avance
Modifié par bibi555 (19 Nov 2011 - 02:28)
Bonjour,
J'ai mit le temps mais j'ai finit par faire cela, qui fait ce que je souhaite dans la base de données.


<?php
//Expr 0 : affichage du jour demandé => $timestamp_jour
	$expr0 = 'date(\''.$this->_timstp_jr['an'].'-'.$this->_timstp_jr['mois'].'-'.$this->_timstp_jr['jr'].'\')';
//Expr 1 : affichage du debut de l'event (date de début à 00:00:00)
	$expr1 = 'date(E.event_date_debut)';
//Expr 2 : calcul de la date de la fin de l'événement le matin à minuit
	$expr2 = 'DATE_ADD(E.event_date_debut,INTERVAL E.event_duree HOUR_SECOND)';
//Expr3 : date de la fin de l'événement le soir à minuit (expr2 au format '1998-01-02' +1jr ).
	$expr3 = 'date(DATE_ADD('.$expr2.', INTERVAL 1 DAY))';
//condition où : expr1 <= jour_analysé and jour_analysé < expr3
	$where = '('.$expr1.' <= '.$expr0.') && ('.$expr0.' < '.$expr3.')';
		
$sql ='SELECT *
	FROM 
		evenements E, 
		evnmt_type T
	WHERE 
		'.$where.'
		&& E.event_type = T.evnmt_type_id
	ORDER BY day(E.event_date_debut)';
?>


J'ai donc déjà une bonne grosse épine du pied enlevée.
Reste toujours mes histoires de classe jour...
Sauriez-vous m'aiguiller ?
J'ai besoin de conseils sur le 'comment on s'y prend', la base de la réflexion quoi. Comment on pense le truc.
J'ai fait des choses et au besoin je peux donner plus de détails sur mes avancées...
Merci d'avance et bonne journée à tous
Modifié par bibi555 (22 Nov 2011 - 01:34)