Débuter efficacement la conception d'un site web ?

Bonjour à tous,

Je souhaite lancer un nouveau site qui va demander un peu de « scriptage » (php5) ; comme je ne pratique cela que par loisir, et de manière plutôt rare (je ne me lance pas dans la conception d’un site tous les 4 matins) je ne possède pas vraiment d’automatismes et ne suis pas sûr et certain que mes pratiques soient les bonnes.

Ma question est en fait plutôt simple : quelle méthodologie employer pour éviter que les scripts ne deviennent pas rapidement un amoncellement de bouts de code ajoutés et rajoutés selon la dernière idée qui m’est venue en tête - que ce soit une nouvelle fonctionnalité ou un « passage obligé » (par exemple, vérification de la validité des données) auquel je n’avais pas songé initialement ?

« D’habitude » (entre guillemets car, je me répète, je ne peux réellement parler « d’habitude ». Bref…) je me mets « dans la peau » de l’internaute classique et tente d’imaginer tous les liens et formulaires qu’il aura sous les yeux pour en déduire le code à programmer. Mais je ne suis pas certain du tout que ce soit une pratique efficace (ne serait-ce parce que ça oblige à imaginer l’interface avant le reste, et ça, ça me gonfle un peu)…

J’ai décidé cette fois-ci d’utiliser massivement les classes, déjà pour pratiquer un peu de poo, ensuite parce que je me dis que c’est sans doute plus facilement modifiable. Ai-je raison ?

Donc, quelles pratiques conseiller pour se lancer dans un nouveau projet efficacement, tout en faisant en sorte que ça reste un loisir (j’insiste sur ce point, de l’efficacité certes, mais je n’ai pas envie que ça devienne rébarbatif :wink:)

Merci !

Ash te répondra certainement mieux que moi, c’est un spécialiste en la matière mais ce que je te propose de faire, c’est de commencer à acheter un crayon et du papier, les deux outils indispensables à l’analyste. :laughing:
Le plan, y’a qu’ça !
prévois des pages “à construire” ou “en attente”.
En fait, une arborescence est le départ, AMA de tt site web bien clair.

bonjour,
vaste sujet, et je suis surement pas le mieux placer pour répondre, mais je tente quelques remarques :

c’est une préoccupation en effet, ma solution:
tu configure dans ton php.ini le include_path, tu rajoutes le répertoire include (tu peux l’appeler comme tu veux) soit sur ton site, soit même ailleurs, mais ça doit être accessible à www-data.
Ensuite dans ce rep, tu te fais un fichier de fonctions (c’est bien, dans fonctionnalité, ya fonction). Et dans tes pages web, tu auras un codes php:
include ou require ou require_once ‘/include/fonctions.php’;
Tu remarques que include est apparement à la racine du site, mais pas forcément, car tu auras pu faire un alias dans la config apache de includes -> /vraichemin/durep/include.
Si tu as opté pour l’ajout de include dans include_path (php.ini), tu peux même faire un simple include ‘fonctions.php’;, car php va chercher fonctions.php dans son path, ex:

[code];;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
include_path = “.:/usr/share/php:/var/www/private/include”[/code]

[quote]je me mets « dans la peau » de l’internaute classique et tente d’imaginer tous les liens et formulaires qu’il aura sous les yeux pour en déduire le code à programmer. Mais je ne suis pas certain du tout que ce soit une pratique efficace (ne serait-ce parce que ça oblige à imaginer l’interface avant le reste, et ça, ça me gonfle un peu)…[/quote]tu as tort.
On gagne beaucoup de temps à mon avis à bien concevoir sur papier la structure de la page, les fonctionalités, login/paslogin, sessions pas sessions etc, des tables, des divs, des images, lesquelles où ? etc … avant de commencer à coder. (là pour les images, tu fais un repertoire images, et un alias dans la config apache, pour pas avoir des src="/path_complet/img.jpg" mais plutôt des src="/images/img.jpg", c’est plus propre.
Evidemment, les idées naissent et évoluent souvent en codant, en fonction de ce qu’on arrive à faire, à pas faire, ou à imaginer pas à pas.

Tout à fait, la masse des fonctions php, des classes déjà existantes dans php5, plus toutes celles qu’on peut créer, rend le codage php assez jouissif, et qui n’est pas sans rappeler java, en un peu plus intuitif, mais un peu plus limité, sans doute. Donc à fond pour les classes, même systême, un require_once ‘mesclasses.php’; devrait te permettre de ranger tes classes dans le fichier dédié.

Merci pour ces précieuses premières indications.

Concernant le plan « à la main » j’avoue avoir un peu de mal à formaliser le truc, même si je conçois aisément son utilité.

Mais concrètement, doit-on y noter des « choses informatiques » (les classes et leurs méthodes et attributs, par ex.) ou doit-on se limiter à une présentation « en français » du futur site ?

Et surtout, surtout, comment organiser ce plan ? Selon des unités logiques (désolé pour mon vocabulaire peu orthodoxe), j’entends par là, gestion des utilisateurs, gestion de la bibliothèque (ouais, y’aura une partie « gestion de livres), gestion des articles (etc.) ou selon les pages web « réelles » que l’utilisateur rencontrera sur son chemin ?

Je découvre un petit peu l’UML en ce moment et j’ai vu que l’on peut générer des « squelettes » de classes depuis des diagrammes, avec dia notamment. C’est très certainement vouloir écraser une mouche avec un bélier (vu « l’ampleur » de mon « projet ») mais je trouve ça intéressant pour s’y retrouver plus tard. Des conseils à ce sujet ? À quel moment cette conception doit-elle intervenir ?

usinagaz, en tout cas je note bien tous tes conseils (merci pour leur précision d’ailleurs). Si je comprends bien, la conception de l’interface intervient donc assez rapidement (Youpi :neutral_face: j’ai un amour immodéré pour le xhtml + css… je sens que je vais encore prendre un thème graphique tout fait).
La façon de « ranger » classes et fonctions dans des fichiers spécifiques est une pratique que j’exerçais déjà (en fait, vu que je suis parfaitement autodidacte, je « copie » bêtement les applications php que je dépouille parfois et ce type d’organisation revient souvent, pour ne pas dire toujours), mais tu me donnes là des indications techniques intéressantes :slightly_smiling:

[quote=“Lunatic”]Mais concrètement, doit-on y noter des « choses informatiques » (les classes et leurs méthodes et attributs, par ex.) ou doit-on se limiter à une présentation « en français » du futur site ?[/quote]je peux pas tout lire, je m’en vais là … mais rapidement là dessus …
te prends pas trop la tête non plus avec ton papier et ton stylo, c’est juste pour dire qu’avant de coder, réfléchis bien à ce que tu veux afficher sur ta page, et à ce qui doit se passer côté serveur donc ->
des fonctions javascript
des fonctions php
un model de page plus ou moins grossier
… je sais pas tu dessines tes div, tu mets dedans en résumé ce que tu veux afficher, des trucs comme ça, tu te mets un peu la structure de la page sur papier quoi.
pour le codage, les algorythmes de tes fonctions, c’est sans prise de tête non plus, soyons pas comme à l’école … lol.
je passe la main :arrow_right:

salut à tous! moi aussi j’ai un projet de création de site perso galerie photos etc… avec un cotée truc et astuces électriques pour la maison,
et pour faire ça je me suis mis au XHTML, CSS et aux scripts (javascript) et là en lisant le post,
j’ai une question :

le php est il indispensable pour la création d’un site interactif.
si oui pourquoi?
si je pose cette question c’est que je ne connais pas le php :confused:
merci par avance :slightly_smiling:

Il te faut une première ébauche en français (ou en dessins annotés) avant de coder quoi que ce soit.
Bien sûr, si tu as des idées purement techniques tu peux les noter aussi pour ne pas les oublier, mais il faut d’abord arriver à dégager une logique générale de ton site sans te noyer dans les détails.
Mais même pour un gros site, c’est pas forcément énorme.
Et la forme de tes premiers schemas dépend de ce que tu vas coder, pas de comment tu vas le coder.

[quote=“usinagaz”][quote=“Lunatic”]Mais concrètement, doit-on y noter des « choses informatiques » (les classes et leurs méthodes et attributs, par ex.) ou doit-on se limiter à une présentation « en français » du futur site ?[/quote]je peux pas tout lire, je m’en vais là … mais rapidement là dessus …
te prends pas trop la tête non plus avec ton papier et ton stylo, c’est juste pour dire qu’avant de coder, réfléchis bien à ce que tu veux afficher sur ta page, et à ce qui doit se passer côté serveur donc ->
des fonctions javascript
des fonctions php
un model de page plus ou moins grossier
… je sais pas tu dessines tes div, tu mets dedans en résumé ce que tu veux afficher, des trucs comme ça, tu te mets un peu la structure de la page sur papier quoi.
pour le codage, les algorythmes de tes fonctions, c’est sans prise de tête non plus, soyons pas comme à l’école … lol.
je passe la main :arrow_right:[/quote]

Donc en gros : une page papier = une page web. J’y note à la fois les fonctions, classes (etc.) à utiliser, et j’y fais le croquis de la page.

[quote]Il te faut une première ébauche en français (ou en dessins annotés) avant de coder quoi que ce soit.
Bien sûr, si tu as des idées purement techniques tu peux les noter aussi pour ne pas les oublier, mais il faut d’abord arriver à dégager une logique générale de ton site sans te noyer dans les détails.
Mais même pour un gros site, c’est pas forcément énorme.
Et la forme de tes premiers schemas dépend de ce que tu vas coder, pas de comment tu vas le coder.[/quote]

En gros (oups, désolé pour la répétition), je fais donc un schéma qui pourrait être compris par quelqu’un qui ne connaît pas le php mais qui pourrait ainsi comprendre le fonctionnement du site.

@rodmov : ça dépend ce que tu appelles un site « interactif ». Je pense que la question à se poser est : est-ce que moi, en tant qu’admin, ou mes visiteurs, en tant qu’utilisateurs, nous aurons à modifier souvent le contenu du site (ajout de contenu…). Si oui, alors le php sera intéressant. Sinon, je pense que tu peux te limiter à des pages web « fixes »

[quote=“Lunatic”]
@rodmov : ça dépend ce que tu appelles un site « interactif ». Je pense que la question à se poser est : est-ce que moi, en tant qu’admin, ou mes visiteurs, en tant qu’utilisateurs, nous aurons à modifier souvent le contenu du site (ajout de contenu…). Si oui, alors le php sera intéressant. Sinon, je pense que tu peux te limiter à des pages web « fixes »[/quote]
pour la partie trucs et astuces oui je désire que les visiteurs puissent laisser leurs propres trucs et astuces.

[quote=“rodmov”][quote=“Lunatic”]
@rodmov : ça dépend ce que tu appelles un site « interactif ». Je pense que la question à se poser est : est-ce que moi, en tant qu’admin, ou mes visiteurs, en tant qu’utilisateurs, nous aurons à modifier souvent le contenu du site (ajout de contenu…). Si oui, alors le php sera intéressant. Sinon, je pense que tu peux te limiter à des pages web « fixes »[/quote]
pour la partie trucs et astuces oui je désire que les visiteurs puissent laisser leurs propres trucs et astuces.[/quote]

Donc cette partie dynamique t’oblige en effet à utiliser php+mysql (enfin il y a d’autres solutions, mais celle-ci est la plus répandu).

Ceci dit rien ne t’oblige à apprendre le php. Il y a des tas de scripts existant qui peuvent parfaitement convenir (par exemple, un petit wiki peut faire l’affaire).

Non non, je crois que tu cherches trop le détails dans ce que je dis, je m’explique:
Globalement je veux dire que plutôt de déplacer tes éléments, changer leur background respectif, faire 3000 test (c’est long), pour à chaque fois te dire:
"non ça ça colle pas avec ça … heu … voyons ça plutôt …"
mets plutôt sur papier la structure de ta page, style: une bannière ? des marges ? où sont les divs les tables, quelles tailles ? leurs styles grosso-modo tout ça…
Je parle du visuel, de l’agencement, pas de comment ça fonctionne.

Aprés l’interactivité, si tu as des tas de trucs dispo sur le net presque prés à l’emploi, dis toi qu’il faudra forcément un peu coder pour les adapter, c’est jamais pile-poil ce que tu voulais.
Et pour coder, ou modifier du code, faut apprendre le langage, ça ya pas à tortiller.
S’il y a des logiciels pour pondre à ta place du code html bourré d’erreur et faisant hurler le W3C, et d’autres plus rigoureux sans doute, il y en a aucun
à ma connaissance qui te pondra le code php tout seul. Donc -> tout ça est bien délicat si on est pas programmeur.

En fait je « connais » un peu le php, en tout cas suffisamment pour faire ce que je veux faire (même si ce ne sera sans doute pas la meilleure manière de procéder et qu’un pro trouverait sans aucun doute mon code fort peu optimisé par exemple). Je ne prendrai pas de scripts complets (sauf pour la partie forum), tout simplement parce que je veux m’amuser à programmer moi-même ce dont j’ai besoin.

Vu que je vais prendre un thème graphique « tout fait » (y’en a des milliers, gratuits) l’étape que tu désignes là m’est donc un peu… inutile, puisque je respecterai la structure de la page (même si je pourrai toujours modifier deux ou trois trucs). Bien entendu je dois imaginer le contenu mais il viendra s’encastrer dans la structure existante (en un mot la maquette est déjà faite).

Mon soucis n’est donc pas tant de concevoir le visuel que de savoir si, méthodologiquement, c’est lui qui doit guider la programmation (c’est à dire très concrètement, j’ai telle page sous les yeux, pour qu’elle fonctionne je dois programmer telle et telle chose, je passe ensuite à la page suivante, pour laquelle je dois programmer telle et telle autre chose… sachant qu’il y a évidemment des parties communes, comme les sessions) ou si il y a une autre façon de procéder (parce que justement, ce qui me fait peur dans le raisonnement « par page » c’est la redondance de certaines choses, le caractère « fragmenté » et peu cohérent du code qui serait produit. En d’autres termes je me demande s’il y a un moyen de « prendre de la hauteur », d’oublier un temps les pages web, de concevoir le code php comme une globalité cohérente ; je ne suis pas sûr de m’exprimer clairement :confused: )

Je crois que ttes les réponses qui précèdent vont un peu ds le m^ sens :
un plan bien structuré sur papier
un fichier CSS général qui te permettra une mise en page propre et homogène
ensuite, page par page pour la partie html
enfin tte la partie fonctions (un peu comme en C) qui seront appelées ds chaque page où elles sont utiles.

[quote=“Lunatic”]. En d’autres termes je me demande s’il y a un moyen de « prendre de la hauteur », d’oublier un temps les pages web, de concevoir le code php comme une globalité cohérente ; je ne suis pas sûr de m’exprimer clairement :confused: )[/quote]Réponses croisées !
Obligatoirement, tu auras des “fonction” passe-partout qui serviront plusiuers pages mais tu en auras aussi qui seront spécifiques à une seule page.

ah ok, si tu disposes déjà du model, du html, du css, globalement … tu risques d’avancer trés vite.
Bon ben pour ton souci, je sais pas si tu veux faire un site dynamic php, notes, mais :

  • travailles sur le nommage des variables de session
  • travailles sur le nom des fonctions, ce à quoi elle servent, pareil les classes.
  • tu fais passer tes objets par session, ou par global $variable, de page en page …
    peut-être que tu poses des questions dont tu connais déjà les réponses, sans pouvoir les formuler. Pour travailler sans que ça devienne le boxon, faut travailler de façon réfléchie (papier stylo fichier ce que tu veux) et rigoureuse (méthode de prog, respect des conventions de codage générales et propre à chaque langage)… c’est tout.
    Aussi, on s’égare vite en suivant le fil de ses idées lorsqu’on code en live, et on multiplie les erreurs de conception parce que pas réfléchi. C’est presque inévitable parce qu’on apprend un langage sur le tas la plupart du temps.
    Efforçons nous de rester simple, logique, de bien compartimenter les fonctionnalités les fonctions … de savoir ce qu’on veut faire avant de commencer à le faire … voilou en gros. C’est des lieux communs, mais que dire d’autre, tout viens avec l’expérience, basée sur ces principes je pense.

Ouais en gros je pose trop de questions car c’est en forgeant qu’on devient forgeron :wink: Disons juste que sur les 2 ou 3 projets que j’avais mené à terme, j’avais toujours eu cette impression d’insatisfaction due au fait qu’arrivé à terme, le projet, bien que fonctionnel, semblait être un assemblage de bric et de broc. Et j’aurais alors voulu reprendre tout de A à Z puisque le premier « jet » m’avait permis de mettre au jour toutes les fonctionnalités à implémenter, toutes les exigences à respecter. Sans avoir le courage de, précisément, tout reprendre depuis le début. L’idée actuelle serait donc d’être efficace « du premier coup ».

Je vais me lancer et posterai éventuellement plus tard, si des questions précises me viennent en tête.

Merci pour vos témoignages et conseils.

Ben, voilà un sujet qui m’interresse mais au fur et à mesure de ma lecture toutes les bonnes idées que j’aurais pu donner le sont déjà :smiley:

J’allais te proposer de prendre directement plusieurs outils qui existent déjà et que tu n’aurais plus qu’a rassembler pour en faire ce que tu veux mais comme tu veux tout coder cela risque d’etre plus long à mettre en oeuvre mais très instructif quand même :slightly_smiling:

Je pense que tu as déjà eu l’idée mais on ne sait jamais. Je vois que tu veux programmer en POO PHP5 arrange toi pour faire plusieurs petites classes qui peuvent servir indépendamment les unes des autres. Il serait dommage de devoir recoder plusieurs fois la meme méthode dans 3 ou 4 classes différentes alors qu’il suffirait de la passer en héritage. Je ne pense pas que la réflexion page par page soit réellement nécessaire vois plutôt une conception par outil décortique chaque outil que tu veux mettre en place et regarde les méthodes que tu devras concevoir et qui se répete dans plusieurs dans ce cas la tu en fait une classe directement pour ne pas avoir à la recoder plusieurs fois.

Un bon exemple est pour l’acces a une base de données mysql. pour une gallerie par exemple et une gestion de news tu n’en fait qu’une que tu t’arrange pour utiliser 2 fois.

@rodmov: si tu ne veux pas t’embeter a reprogrammer un outil (pourquoi réinventer la roue, mis à part pour s’amuser) tu peux en utiliser un déjà fait comme un wiki qui est tres bien pour ce que tu veux faire. Sinon si tu n’a pas énormément de contenu à gérer l’utilisation de php + xml peut etre un avantage énorme si l’on a pas envie de s’embeter avec une base de données :smiley:

[quote=“Lunatic”]j’avais toujours eu cette impression d’insatisfaction due au fait qu’arrivé à terme, le projet, bien que fonctionnel, semblait être un assemblage de bric et de broc. Et j’aurais alors voulu reprendre tout de A à Z puisque le premier « jet » m’avait permis de …[/quote]humm, je connais que trop bien tout ça en effet, c’est frustrant :smiley:

[quote=“Ashgenesis”]
@rodmov: si tu ne veux pas t’embeter a reprogrammer un outil (pourquoi réinventer la roue, mis à part pour s’amuser) tu peux en utiliser un déjà fait comme un wiki qui est tres bien pour ce que tu veux faire.[/quote]

la création d’un wiki est une des possibilités que j’ai noté dans mon cahier des charges pour la réalisation, merci pour ton aiguillage :wink:

[quote=“Ashgenesis”]
Sinon si tu n’a pas énormément de contenu à gérer l’utilisation de php + xml peut etre un avantage énorme si l’on a pas envie de s’embeter avec une base de données :smiley:[/quote]
tu as tapé dans le mille se n’est pas tellement le php qui risque de me poser un problème, comme il est proche du c , je pense assimilé les bases rapidement et en plus il y a un max de site d’info pour un coup de main en cas de PB . C’est bien la base de données qui risque de me causé des problèmes, enfin j’imagine à tort ou à raison pour moi les bases de données c’est terra incognita :laughing:
quand à mon futur site j’ai déjà réalisé une partie du squelette et des ces articulations et en parallèle je réalise aussi les différentes composantes graphiques que j’ai besoin pour rendre le site plus “perso”

[quote=“Ashgenesis”]
Un bon exemple est pour l’acces a une base de données mysql. pour une gallerie par exemple et une gestion de news tu n’en fait qu’une que tu t’arrange pour utiliser 2 fois.
:smiley:[/quote]

Voilà encore des conseils intéressants.

Pour en dire un peu plus sur ce que je compte faire (oh, il n’y a rien de bien novateur…) : l’idée est de lancer un forum dont les discussions ont pour point de départ la présentation d’un livre (ça pourra aussi être d’un film par exemple, mais le livre sera la source la plus mobilisée) ; chaque utilisateur aura sa « bibliothèque » où il inscrira les livres qu’il possède et leur état (lu, parcouru, non lu). Ainsi chacun voit ce que tout le monde possède et éventuellement suscite ainsi une discussion. Les « articles » seront les premiers messages des fils - et donc seront la présentation du livre - et devront être disponibles depuis le site (et pas seulement sur le forum). Voilà l’idée en très gros.

J’avais donc déjà imaginé une classe « livres », une classe « films » (etc.) héritant éventuellement d’une classe commune à ces types d’objets.

Je me demandais si j’avais intérêt à faire hériter la classe livre de la classe de gestion de la bdd ou si je devais créer un objet de cette dernière dans la première. Donc si je te lis bien, j’ai tout intérêt à procéder selon la première méthode, par « série » d’héritages, si j’ose dire.

Pour en revenir plus précisément à l’objet de ce fil, voici comment j’ai finalement décidé de me lancer : j’utiliserai kdissert comme « brouillon » : j’organiserai le schéma non pas par pages web mais par outils. Ainsi j’aurai par exemple une boîte « livre » de laquelle partiront différentes branches correspondant aux actions faisables sur les livres (ajout dans la bdd, modification de l’état, etc.). Je devrais donc pouvoir « débroussailler le plus gros » et j’ose croire que d’éventuelles nouvelles idées viendront à ce moment-là… et pas au dernier moment.

Encore merci !