Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > Vos techniques pour le développement de sites en PHP > Lecture du sujet

Vos techniques pour le développement de sites en PHP

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  4  5  6  7  8  9  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  4  5  6  7  8  9  Suivante
Connecté Talus # Posté le 15/01/2008 à 16:45:43
タルス
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Tu vois bien que c'est du Dot Clear... :p
 
Hors ligne Bilbax # Posté le 15/01/2008 à 16:59:22
www.bilbax.eu
Avatar
Groupe : Membres
Selon vous, il faudrait créer un fichier cache pour chaque session/page ? parce que bon, les éléments de la page changent selon l'user, alors si une personne x met en cache la page (je parle du cache fixe et non dynamique) et qu'une personne y charge la page en cache, ça sera les infos du membre x ^^ . La solution serait de créer un fichier cache comme ça :

Templates/cache/url__sid.cch

Où 'url' est l'URL de la page et 'sid' l'identifiant de la session PHP.

Par contre ça va créer une quantité astronomique de fichiers :euh: et ça va être rapidement lourd.

Comment faites-vous ?
Hors ligne Nesswaw # Posté le 15/01/2008 à 18:16:45
Groupe : Membres
Citation : -|MG|-
Citation : Nesswaw
Je pense qu'il serait cool de développer un peu ce topic, afin de trouver une ou plusieurs structure pour son site, pour partir sur de bonnes bases :)

Templates ou pas ?
1 fichier par action ou pas ?
quelle méthode pour le traitement des formulaires ? tout sur une page, 2 pages ? gestions des erreurs ? ré-affichage des champs pas rempli ?


En effet, essayer de trouver une structure de site serait interessant, mais en général, les gens aiment développé leur site a leur maniere. Enfin on pourrai quand même essayer de faire quelque chose et le proposer par la suite pour voir ce que les gens en pense ou voir si il y a des choses a améliorer.

1 fichier par action : oui , j'utilise cette façon de faire je la trouve très bien, c'est beaucoup plus pratique pour la maintenance et pour faire evoluer le site.

Ensuite, j'utilise une class SQL, et je sépare les requêtes de mon code.

Templates : Je ne sais pas encore ... Je me pose moi même cette question. :-°

Gestion des erreurs: Oui, pour PHP et SQL, peut etre aussi un système pour les liens morts, faut voir si c'est possible a développer.

Géré les valeurs des meta-tags (keywords et description) en fonction de la page appelé.

Appelé les scripts Js et les feuilles de style en fonction des pages demandé.

Utilisation d'un systèmes d'includes ? Moi j'en utilise 1 faut voir si c'est une bonne idée ou pas.

Apres faut voir si il n'y a pas autre chose a faire.

Le fait de séparer les requêtes sql , comment procèdes-tu ? un exemple ?
Appelé les scripts Js et les feuilles de style en fonction des pages demandé. aussi un exemple ?

Merci :)
Connecté Talus # Posté le 15/01/2008 à 19:49:22
タルス
Avatar
Groupe : Membres
Bilbax > Je fais un cache statique que pour les fichier qui sont sur de pas changer avant longtemps. Ou qui change très peu.
Édité le 15/01/2008 à 19:51:12 par Talus
 
Hors ligne TheDead Master # Posté le 15/01/2008 à 20:22:49
4 8 15 16 23 42
Avatar
Groupe : Membres
Citation : Nesswaw
Appelé les scripts Js et les feuilles de style en fonction des pages demandé. aussi un exemple ?


'Suffit de tout mettre dans une variable, et d'afficher la variable entre <head> et </head>.

Je n'ai plus internet depuis septembre 2008 pour une durée indéterminée.

Comité de lutte contre le langage sms et les fautes volontaires sur Internet.
 
Hors ligne -|MG|- # Posté le 15/01/2008 à 21:19:18
OUHHHH Pinaise !!
Avatar
Groupe : Membres
Alors pour les requete SQL

page.php
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. require(requete.sql.php);
  3.  
  4. requete_sql($table,$valeur1,$valeur2,$valeur3);
  5. ?>


requete.sql.php
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. function requete_sql($table,$valeur1,$valeur2,$valeur3);
  3. {
  4. include('sql.class.php');
  5. $sql = new sql('localhost','root','','bdd_test');
  6.  
  7. $req  = 'INSERT INTO'.$table.'(champ1, champ2, champ3) VALUES('.$valeur1.','.$valeur2.','.$valeur3.')';
  8. $query = $sql->sql_query($req) or
  9. trigger(mysql_error(), 'SQL', __LINE__, __FILE__);;
  10. }
  11. ?>


erreur_sql.func.php
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2.  function trigger($errno, $type, $line, $file)
  3.  {
  4. echo '<h1>Erreur :<h1>
  5. Une erreur de type '.$type.' a été détécté.<br />
  6. Fichier : '.$file.'<br />
  7. Ligne : '.$line.'<br />
  8. Méthode de débuggage :';
  9. if ($type == 'SQL')
  10. {
  11. echo 'Vérifié vos requêtes SQL.<br />';
  12. }
  13. echo 'Message d\'erreur :'.$errno;
  14. die();
  15. }
  16. ?>


Voila pour SQl qvaec une tite fonction de gestion d'erreur.

Pour les scripts Js et les feuilles de styles je fais aussi une fonction simple, je regarde si une constane qui est definie dans le fichier ke je vais inclure vaut true. Si c'est le cas je cherche les feuilles de style et scrpt Js sinon rien.

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
 
Connecté Talus # Posté le 15/01/2008 à 22:23:46
タルス
Avatar
Groupe : Membres
Oula, c'est n'importe quoi ton truc... Oo
 
Hors ligne TheDead Master # Posté le 15/01/2008 à 23:16:48
4 8 15 16 23 42
Avatar
Groupe : Membres
Citation : Talus
Oula, c'est n'importe quoi ton truc... Oo


Je plussois.
En plus, la connexion n'est même pas fermée.

Je n'ai plus internet depuis septembre 2008 pour une durée indéterminée.

Comité de lutte contre le langage sms et les fautes volontaires sur Internet.
 
Hors ligne Mika12 # Posté le 16/01/2008 à 03:01:21
Groupe : Membres
Comment auriez vous fait?

Image utilisateur

Je développe bien en PHP/MySql, seul problème: je hais les Regex >_<
 
Connecté Talus # Posté le 16/01/2008 à 07:30:23
タルス
Avatar
Groupe : Membres
djà, une sedule inclusion de la class SQL SQL, et une seule connexion suffit... Imagine le à faire 10 insertions sur une même pages -.-

Il va vite tuer son serveur :-°
 
Connecté Tracker # Posté le 16/01/2008 à 07:56:37
Avatar
Groupe : Membres
Citation : Talus
djà, une sedule inclusion de la class SQL SQL, et une seule connexion suffit... Imagine le à faire 10 insertions sur une même pages -.-

Il va vite tuer son serveur :-°


Tout dépend le code contenu... tout appel à mysql_connect(...) avec les même arguments retourne la même connexion sauf si le param $new_link est explicitement à true. Par contre comme c'est organisé, je vois réellement pas l'intérêt de créer des classes pour s'en servir comme des fonctions.

Si tu veux avoir une idée d'archi objet pour attaquer SQL, potasse PDO ou mysqli...


Tracker.

Un peu de lecture: PHP // MySQL // JavaScript // w3schools // SQL
 
Hors ligne Lithrein # Posté le 16/01/2008 à 16:52:17
Rien sans rien
Avatar
Groupe : Membres
Pour ma part je code simplement en indentant le code source mais j'ai une arborescance qui fleuri donc je suis sur le point de me pettre au mvc.
Mon arborescance :
Code : Autre - Afficher / masquer les numéros de ligne
  1. Planetprog.
  2. |   base.html
  3. |   CDCF.doc
  4. |   construction.html
  5. |   EasyPHP.lnk
  6. |   index.php
  7. |   Le_crypteur.php
  8. |   livreor.php
  9. |   mini_chat.php
  10. |   notepad++.lnk
  11. |   partenaires.php
  12. |   plansite.php
  13. |   test.php
  14. |
  15. +---admin
  16. |       chemin.php
  17. |       liste_news.php
  18. |       rediger_news.php
  19. |
  20. +---contrib
  21. |       aliased.php
  22. |       cssgen.php
  23. |       example.php
  24. |
  25. +---designs
  26. |   +---css
  27. |   |       design.css
  28. |   |       forum.css
  29. |   |       notepad++.lnk
  30. |   |       presentation.css
  31. |   |       tuto.css
  32. |   |
  33. |   \---images
  34. |           attention.png
  35. |           Banniere.PNG
  36. |           erreur.png
  37. |           info.png
  38. |           question.png
  39. |
  40. +---forum
  41. |   |   .htaccess
  42. |   |   .htpasswd
  43. |   |   connexion.php
  44. |   |   connexionok.php
  45. |   |   deconnexion.php
  46. |   |   index.php
  47. |   |   messagesprives.php
  48. |   |   modifprofil.php
  49. |   |   poster.php
  50. |   |   postok.php
  51. |   |   register.php
  52. |   |   registerok.php
  53. |   |   voirforum.php
  54. |   |   voirprofil.php
  55. |   |   voirtopic.php
  56. |   |
  57. |   \---includes
  58. |           bbcode.php
  59. |           debut.php
  60. |           identifiants.php
  61. |
  62. +---geshi
  63. |   |   geshi.php
  64. |   |
  65. |   +---docs
  66. |   |   |   .cvsignore
  67. |   |   |   BUGS
  68. |   |   |   CHANGES
  69. |   |   |   COPYING
  70. |   |   |   geshi-doc.html
  71. |   |   |   geshi-doc.txt
  72. |   |   |   README
  73. |   |   |   THANKS
  74. |   |   |   TODO
  75. |   |   |
  76. |   |   \---api
  77. |   |       |   blank.html
  78. |   |       |   classtrees_geshi.html
  79. |   |       |   elementindex.html
  80. |   |       |   elementindex_geshi.html
  81. |   |       |   errors.html
  82. |   |       |   index.html
  83. |   |       |   li_geshi.html
  84. |   |       |   packages.html
  85. |   |       |   todolist.html
  86. |   |       |
  87. |   |       +---geshi
  88. |   |       |   \---core
  89. |   |       |           GeSHi.html
  90. |   |       |           _geshi.php.html
  91. |   |       |
  92. |   |       \---media
  93. |   |           |   banner.css
  94. |   |           |   stylesheet.css
  95. |   |           |
  96. |   |           \---images
  97. |   |                   AbstractClass.png
  98. |   |                   AbstractClass_logo.png
  99. |   |                   AbstractMethod.png
  100. |   |                   AbstractPrivateClass.png
  101. |   |                   AbstractPrivateClass_logo.png
  102. |   |                   AbstractPrivateMethod.png
  103. |   |                   blank.png
  104. |   |                   Class.png
  105. |   |                   class_folder.png
  106. |   |                   Class_logo.png
  107. |   |                   Constant.png
  108. |   |                   Constructor.png
  109. |   |                   Destructor.png
  110. |   |                   empty.png
  111. |   |                   file.png
  112. |   |                   folder.png
  113. |   |                   Function.png
  114. |   |                   function_folder.png
  115. |   |                   Global.png
  116. |   |                   I.png
  117. |   |                   Index.png
  118. |   |                   Interface.png
  119. |   |                   Interface_logo.png
  120. |   |                   L.png
  121. |   |                   Lminus.png
  122. |   |                   Lplus.png
  123. |   |                   Method.png
  124. |   |                   next_button.png
  125. |   |                   next_button_disabled.png
  126. |   |                   package.png
  127. |   |                   package_folder.png
  128. |   |                   Page.png
  129. |   |                   Page_logo.png
  130. |   |                   previous_button.png
  131. |   |                   previous_button_disabled.png
  132. |   |                   PrivateClass.png
  133. |   |                   PrivateClass_logo.png
  134. |   |                   PrivateMethod.png
  135. |   |                   PrivateVariable.png
  136. |   |                   private_class_logo.png
  137. |   |                   StaticMethod.png
  138. |   |                   StaticVariable.png
  139. |   |                   T.png
  140. |   |                   Tminus.png
  141. |   |                   Tplus.png
  142. |   |                   tutorial.png
  143. |   |                   tutorial_folder.png
  144. |   |                   up_button.png
  145. |   |                   Variable.png
  146. |   |
  147. |   \---geshi
  148. |           .php.php.swp
  149. |           abap.php
  150. |           actionscript.php
  151. |           ada.php
  152. |           apache.php
  153. |           applescript.php
  154. |           asm.php
  155. |           asp.php
  156. |           autoit.php
  157. |           bash.php
  158. |           blitzbasic.php
  159. |           bnf.php
  160. |           c.php
  161. |           caddcl.php
  162. |           cadlisp.php
  163. |           cfdg.php
  164. |           cfm.php
  165. |           cpp-qt.php
  166. |           cpp.php
  167. |           csharp.php
  168. |           css-gen.cfg
  169. |           css.php
  170. |           c_mac.php
  171. |           d.php
  172. |           delphi.php
  173. |           diff.php
  174. |           div.php
  175. |           dos.php
  176. |           dot.php
  177. |           eiffel.php
  178. |           fortran.php
  179. |           freebasic.php
  180. |           genero.php
  181. |           gml.php
  182. |           groovy.php
  183. |           haskell.php
  184. |           html4strict.php
  185. |           idl.php
  186. |           ini.php
  187. |           inno.php
  188. |           io.php
  189. |           java.php
  190. |           java5.php
  191. |           javascript.php
  192. |           latex.php
  193. |           lisp.php
  194. |           lua.php
  195. |           m68k.php
  196. |           matlab.php
  197. |           mirc.php
  198. |           mpasm.php
  199. |           mysql.php
  200. |           nsis.php
  201. |           objc.php
  202. |           ocaml-brief.php
  203. |           ocaml.php
  204. |           oobas.php
  205. |           oracle8.php
  206. |           pascal.php
  207. |           per.php
  208. |           perl.php
  209. |           php-brief.php
  210. |           php.php
  211. |           plsql.php
  212. |           python.php
  213. |           qbasic.php
  214. |           rails.php
  215. |           reg.php
  216. |           robots.php
  217. |           ruby.php
  218. |           sas.php
  219. |           scheme.php
  220. |           sdlbasic.php
  221. |           smalltalk.php
  222. |           smarty.php
  223. |           sql.php
  224. |           tcl.php
  225. |           text.php
  226. |           thinbasic.php
  227. |           tsql.php
  228. |           vb.php
  229. |           vbnet.php
  230. |           vhdl.php
  231. |           visualfoxpro.php
  232. |           winbatch.php
  233. |           xml.php
  234. |           xpp.php
  235. |           z80.php
  236. |
  237. +---images
  238. |       ecran-locate.png
  239. |       partenariat.png
  240. |
  241. +---includes
  242. |       menu-vertical.php
  243. |
  244. +---save
  245. |   |   planetprog.sql.zip
  246. |   |
  247. |   \---planetprog.sql
  248. |           planetprog.sql
  249. |
  250. \---tutoriaux
  251.     \---basic-casio
  252.             afficher-du-texte.php
  253.             basic-casio.php

A votre service( :-° )
Tout sur linux comment s'en faire un ami et comment s'en défaire car il est plus facile d'enter dans la communauté que d'en sortir :-°.
ms dos is my friend.
 
Hors ligne Nesswaw # Posté le 16/01/2008 à 18:37:50
Groupe : Membres
Et aussi, il ne faut pas négliger la sécurité :D comment faites-vous pour sécuriser vos sessions ? contrôle par ip ou navigateur ? stocker dans une bdd ?
Postez vos techniques, astuces :p

Pour ma part, je test par ip, pour l'instant, mais j'ai lus que chez certaines FAI, leur ip change à chaque requête... du coup mon système est foireux...

:euh:
Hors ligne -|MG|- # Posté le 16/01/2008 à 19:49:00
OUHHHH Pinaise !!
Avatar
Groupe : Membres
Citation : Talus
djà, une sedule inclusion de la class SQL SQL, et une seule connexion suffit... Imagine le à faire 10 insertions sur une même pages -.-

Il va vite tuer son serveur :-°


Je fais pas comme sa sur mon serveur !! Heureusement c'etait un exemple...

Je procede de cette façon la d'habitude:

index.php
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. require_once(sql.class.php);// haut de la page
  3. $sql = new sql('localhost','root','','bdd_test');
  4.  
  5. //ici j'inclus les page je fais mon affichage , requetes et autres...
  6.  
  7. $sql->sql_close();//mis en tt fin de la page
  8. ?>


Talus tu fais quoi toi pour tes requetes SQL ?

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
 
Connecté Talus # Posté le 16/01/2008 à 19:55:59
タルス
Avatar
Groupe : Membres
Facile : http://www.talus-works.net/source-php-includes-class-sql.html, et une exemple : http://www.talus-works.net/source-php-includes-start.html

(Ca sert à rien d'essayer d'acceder aux sources de mes TPL ou de ma config, c'est protégé :3)
Édité le 16/01/2008 à 19:56:21 par Talus
 
Hors ligne metalking # Posté le 16/01/2008 à 21:34:32
Knowledge is Power
Avatar
Groupe : Membres
Citation : Tibrus

Faut pas chercher la petite bête non plus ^^
Pour un <ul> mal placé, ça n'affecte pas vraiment la navigation ou l'accessibilité...

A+

EDIT: j'ai quand même fait la correction :p
Édité le 16/01/2008 à 21:40:14 par metalking
 
Hors ligne Tibrus # Posté le 17/01/2008 à 08:15:12
TGV A rame 325 482,4 Km/h
Avatar
Groupe : Membres
Citation : metalking
Citation : Tibrus

Faut pas chercher la petite bête non plus ^^
Pour un <ul> mal placé, ça n'affecte pas vraiment la navigation ou l'accessibilité...

A+

EDIT: j'ai quand même fait la correction :p

Tu as bien compris que c'était une boutade. Ouf. ;)

Quand la cervelle échoue, la force brute reprend ses droits
Image utilisateur Born to be root
 
Hors ligne -|MG|- # Posté le 17/01/2008 à 08:28:48
OUHHHH Pinaise !!
Avatar
Groupe : Membres
Citation : Talus
Facile : http://www.talus-works.net/source-php-includes-class-sql.html, et une exemple : http://www.talus-works.net/source-php-includes-start.html

(Ca sert à rien d'essayer d'acceder aux sources de mes TPL ou de ma config, c'est protégé :3)


Ok merci je vais regarder sa !! Sa me fait penser que je devrai intégrer ma fonction d'error MySQL a ma class !! :-°

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne Bougie # Posté le 20/01/2008 à 16:26:06
Solaris beginner
Avatar
Groupe : Membres
Bon, personnellement, je fais comme Shepard a expliqué :)

Le plus dur dans cette methode je trouve, c'est de trouver jusqu'à quel point faut il créer une nouvelle fonction, et ou va le code PHP que l'on souhaite écrire : dans le fichier "principal" ou dans le fichier "action". La nuance entre ces deux fichiers est je pense pas facile à établir pour certain point.

Mais cette méthode reste pour moi la meilleur que j'ai vu pour le moment.
 
Hors ligne TimeSplitters # Posté le 09/03/2008 à 18:03:15
Avatar
Groupe : Membres
Bah c'est sûr qu'on trouvera jamais la structure idéale à tous, car même moi j'en ai changé 3 fois en 5 mois: procédural, template 1 et template 2.
Le template 1 consistait à créer un fichier qui concentrait des appels à chaque fichier concerné par la section: membre.php contenait ?act=[1-9] qui incluait membre_profil.php, membre_uploads.php ainsi que membre_mp.php qui lui-même incluait des fichiers selon ?mp_act=[1-9] membre_mp_liste.php etc... Ce qui devenait très vite relou.
Depuis quelques jours je me suis donc mis à mon template 2, qui consiste à toujours inclure avec index.php?p=([a-z-_]+) comme ça chaque page a un seul fichier php et son tpl associé, mais pour ça je dois nommer chaque fichier comme il apparaîtra dans l'url rewritting (message-prive.php pour lire un mp, qui donnera message-prive.html ). Bien sûr j'ai ajouté dans le htaccess les variables possibles, du genre message-prive(-([0-9]+).html reviendra à index.php?p=message-prive&mp_id=$2

Concernant la structure de mon seveur moi ça reste assez bordélique parfois, mais rapide pour s'y retrouver tout de même:

design/ contient tous les fichiers relatifs au design avec qq sous dossiers
include/ les fichiers inclus sur toutes les pages comme fonctions.php, variables.php, connexion.php, deconnexion.php et les JS.
include_php/ chaque fichier php inclue chacun sur une page (un fichier par page)
templates/ chaque fichier tpl inclue chacun sur une page (source.tpl + le/les fichiers à inclure)
upload/ composé de un dossier par membre et un dossier visiteur

.htaccess
index.php
template.php (la class Template)

Comme je l'ai dit, chacun a sa préférence :-°
 
Hors ligne reboss # Posté le 09/03/2008 à 18:37:37
SOADien
Avatar
Groupe : Membres
bon je profite de ce up pour y participer :D

donc j'ai un peu pris la technique de Shepard que j'ai beaucoup aimé
j'avais une assez grosse page (+200 ligne ( sans les include footer et header)) et je les separer en petit morceau, et j'ai pu mettre en cache un partie de la page
mais par contre j'ai n'ai pas un index et on inclut tout dedant je n'aime pas cette technique :?
  • lib
    • ajoutVideo
      • ajout_video.sql.php
    • index
      • derniere_video.php
    • listeVideo
      • liste_video.sql.php
      • nbr_liste_video.sql.php
    • profil
      • mail_profil.sql.php
      • nom_profil.sql.php
      • pass_profil.sql.php
    • voirVideo
      • autre_video.php
      • commentaire_video.php
      • hasard_video.sql.php
      • lire_video.sql.php
      • pub_video.php
      • vues_video.php
  • include
    • haut.php
    • bas.php
    • connect.php
    • fonc.php
    • formulaire_inscription.php
    • formulaire_profil.php
    • formulaire_video.php
    • login.php
    • logout.php
  • cache
    • pages....
  • image
    • images...
  • admin_index.php
  • admin_membre.php
  • admin_video.php
  • ajout_videos.php
  • image.css
  • index.php
  • inscription.php
  • liste_video.php
  • profil.php
  • voir_video.php


et encore je n'ai pa coupé la moindre action dans les lib comme shepard bon voila
bonne soirée

La Communauté des Hommes Psychologiquement pertubés par le Rire ( En construction )
Wargang, un jeu de gangster
Vous êtes graphique il y a moyent qu'on collabore pour des sites internet

 
Hors ligne Nesswaw # Posté le 03/04/2008 à 19:12:53
Groupe : Membres
Je remonte le topic,

Comment gérer vous les formulaires ?
Pré-remplissage en cas d'erreur ?
Erreur afficher sur le page même ou dans une "message box^^" (comme sur le sdz) ?
Comment pourrait-on faire des formulaire de type CRUD ?
Connecté Talus # Posté le 03/04/2008 à 21:22:39
タルス
Avatar
Groupe : Membres
Yo,

Perso, via mes TPLs, j'ai une fonction qui affiche le formulaire. De base, après, je quitte le programme, après avoir affiché le formulaire ; si les vriables du genre "erreur", "login", etc ne sont pas vides (passées en parametres), alors je les affiche. Si c'est une erreur du genre "oubli de champ", alors je rappelle ma fonction, et requitte le programme.

Note qu'il n'y a pas forcément besoin de TPLs, on peut aussi utiliser la buifférisation de sortie... :)
 
Hors ligne Nesswaw # Posté le 03/04/2008 à 21:53:33
Groupe : Membres
Moi j'essaye de faire des formulaire de type CURD, même si j'ai pas tout pigé la chose.

Exemple: ajout/editer/supprimer un utilisateur dans la table "user",
je fais 1 formulaire unique qui sera utilisé pour l'ajout et l'édition, pas faire 2 formulaire, comme ça pour la maintenance je trouve cela beaucoup plus simple (expérience faite ! :( )

Après pour le pré-remplissage des formulaire en cas d'erreur, dans la partie admin, j'enregistre dans la session de l'utilisateur, dans la partie public je recherche encore une solution...=??

Hors ligne Loup Bleu # Posté le 03/04/2008 à 22:29:51
Avatar
Groupe : Membres
exemple pour une gestion de rendez-vous.

Citation : Configuration
PHP 5
MySQL 5
phpBB Template



Citation : Structure du site
/Admin
/Images
/Lib
/Modules
/Modules/Module1
/Modules/Module2
/Modules/Module3
/Pages
/Pages/Admin


Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2.  
  3. require '../../Lib/config.php';
  4. require '../../Lib/Messages.php';
  5. require '../../Lib/template.php';
  6.  
  7. $template = new Template("../../Pages/");
  8.  
  9. $template->set_filenames(array(
  10.                         "FormRdv"       =>      "Mod.Rdv.FormRendezVous.html"
  11. ));
  12.  
  13. function RemplirListesDeroulantes($entreprise = "")
  14. {
  15.         global $mysqli, $template;
  16.  
  17.         // on fait la liste des entreprises
  18.         $sql =  "SELECT NoEntreprise, RaisonSociale
  19.                         FROM   entreprise";
  20.         $requete = $mysqli->query($sql);
  21.  
  22.         while($donnees = $requete->fetch_object())
  23.         {
  24.                 if ($donnees->NoEntreprise == $entreprise and $entreprise != "")
  25.                 {
  26.                         $template->assign_block_vars('liste_entreprises', array(
  27.                                         "No"                    =>      $donnees->NoEntreprise,
  28.                                         "RaisonSociale" =>      $donnees->RaisonSociale,
  29.                                         "defaut"                =>      'selected="selected"'
  30.                         ));
  31.                 }
  32.                 else
  33.                 {
  34.                         $template->assign_block_vars('liste_entreprises', array(
  35.                                         "No"                    =>      $donnees->NoEntreprise,
  36.                                         "RaisonSociale" =>      $donnees->RaisonSociale
  37.                         ));
  38.                 }
  39.                
  40.                 // on fait la liste des rendez-vous
  41.                 $sql2 = "SELECT         NoRdv, DateDebutRdv
  42.                                 FROM           rdv R INNER JOIN entreprise E ON R.NoEntreprise = E.NoEntreprise
  43.                                 WHERE          NoUser = ".$_GET['noUser']."
  44.                                        AND             R.NoEntreprise = ".$donnees->NoEntreprise."
  45.                                 ORDER BY       DateDebutRdv";
  46.                        
  47.                 if ($requete2 = $mysqli->query($sql2))
  48.                 {
  49.                         while($donnees2 = $requete2->fetch_object())
  50.                         {
  51.                                 // date de début
  52.                                 $anneeD         =       substr($donnees2->DateDebutRdv, 0, 4);
  53.                                 $moisD          =       substr($donnees2->DateDebutRdv, 5, 2);
  54.                                 $jourD          =       substr($donnees2->DateDebutRdv, 8, 2);
  55.                                 $heureD         =       substr($donnees2->DateDebutRdv, 11, 2);
  56.                                 $minuteD        =       substr($donnees2->DateDebutRdv, 14, 2);
  57.                                
  58.                                 // mise en forme "le jj/mm/aaaa a HHhMMmn"
  59.                                 $date   =       "le ".$jourD."/".$moisD."/".$anneeD. " a ".$heureD."h".$minuteD."mn";
  60.                        
  61.                                 $template->assign_block_vars('liste_entreprises.liste_rdv', array(
  62.                                                         "No"                    =>      $donnees2->NoRdv,
  63.                                                         "DateDebut"             =>      $date
  64.                                         ));
  65.                         }
  66.                 }
  67.         }
  68. }
  69.  
  70.  
  71.  
  72.  
  73. if ($_POST['action'] == 'add')
  74. {
  75.         if ($_POST['entreprise'] != '' and $_POST['raison'] != '' and $_POST['jourD'] != '' and $_POST['moisD'] != '' and $_POST['anneeD'] != '' and $_POST['heureD'] != '' and $_POST['minuteD'] != '' and $_POST['jourF'] != '' and $_POST['moisF'] != '' and $_POST['anneeF'] != '' and $_POST['heureF'] != '' and $_POST['minuteF'] != '')
  76.         {
  77.                 // nettoyage
  78.                 $nom            =       trim($_POST['nom']);
  79.                 $entreprise     =       trim($_POST['entreprise']);
  80.                 $raison         =       trim($_POST['raison']);
  81.                
  82.                 $jourD          =       trim($_POST['jourD']);
  83.                 $moisD          =       trim($_POST['moisD']);
  84.                 $anneeD         =       trim($_POST['anneeD']);
  85.                 $heureD         =       trim($_POST['heureD']);
  86.                 $minuteD        =       trim($_POST['minuteD']);
  87.                
  88.                 $jourF          =       trim($_POST['jourF']);
  89.                 $moisF          =       trim($_POST['moisF']);
  90.                 $anneeF         =       trim($_POST['anneeF']);
  91.                 $heureF         =       trim($_POST['heureF']);
  92.                 $minuteF        =       trim($_POST['minuteF']);
  93.  
  94.                 // sécurisation
  95.                 $nom            =       $mysqli->real_escape_string($nom);
  96.                 $entreprise     =       $mysqli->real_escape_string($entreprise);
  97.                 $raison         =       $mysqli->real_escape_string($raison);
  98.                 $noUser         =       $_GET['noUser'];
  99.  
  100.                 // mise en forme des champs datetime '0000-00-00 00:00:00'
  101.                 $dateDebut      =       $anneeD.'-'.$moisD.'-'.$jourD.' '.$heureD.':'.$minuteD.':00';
  102.                 $dateFin        =       $anneeF.'-'.$moisF.'-'.$jourF.' '.$heureF.':'.$minuteF.':00';
  103.  
  104.                 // enregistrement
  105.                 $sql =  "INSERT INTO rdv
  106.                                 VALUES('', $noUser, $entreprise, '$raison', '$dateDebut', '$dateFin')";
  107.  
  108.                 if($mysqli->query($sql))
  109.                 {
  110.                         MessageInfo("Le rendez-vous a été correctement ajouté.");
  111.                 }
  112.                 else
  113.                 {
  114.                         MessageErreur("Impossible d'enregistrer le rendez-vous.");
  115.                 }
  116.                
  117.                 // le template
  118.                 RemplirListesDeroulantes();
  119.                 $template->assign_vars(array(
  120.                                         "Label"         =>      "Ajouter un rendez-vous :",
  121.                                         "Bouton"        =>      "Ajouter",
  122.                                         "Action"        =>      "add"
  123.                 ));
  124.                 $template->pparse("FormRdv");
  125.                 $mysqli->close();
  126.                 exit();
  127.         }
  128.         else
  129.         {
  130.                 MessageErreur("Veuillez remplir tous les champs.");
  131.         }
  132. }
  133.  
  134. elseif ($_POST['action'] == 'modify')
  135. {
  136.         if ($_POST['rdv'] != '')
  137.         {
  138.                 $noRdv  =       $mysqli->real_escape_string($_POST['rdv']);
  139.                 $noUser =       $_GET['noUser'];
  140.  
  141.  
  142.                 $sql =  "SELECT NoEntreprise, RaisonRdv, DateDebutRdv, DateFinRdv
  143.                                 FROM   rdv
  144.                                 WHERE  NoRdv   = $noRdv
  145.                                        AND     NoUser  = $noUser";
  146.                                                                          
  147.                 $requete = $mysqli->query($sql);
  148.                 while($donnees = $requete->fetch_object())
  149.                 {
  150.                         // date de début
  151.                         $anneeD         =       substr($donnees->DateDebutRdv, 0, 4);
  152.                         $moisD          =       substr($donnees->DateDebutRdv, 5, 2);
  153.                         $jourD          =       substr($donnees->DateDebutRdv, 8, 2);
  154.                         $heureD         =       substr($donnees->DateDebutRdv, 11, 2);
  155.                         $minuteD        =       substr($donnees->DateDebutRdv, 14, 2);
  156.                        
  157.                         // date de fin
  158.                         $anneeF         =       substr($donnees->DateFinRdv, 0, 4);
  159.                         $moisF          =       substr($donnees->DateFinRdv, 5, 2);
  160.                         $jourF          =       substr($donnees->DateFinRdv, 8, 2);
  161.                         $heureF         =       substr($donnees->DateFinRdv, 11, 2);
  162.                         $minuteF        =       substr($donnees->DateFinRdv, 14, 2);
  163.                        
  164.                        
  165.                         $template->assign_vars(array(
  166.                                                 "No"                    =>      $noRdv,
  167.                                                 "Raison"                =>      $donnees->RaisonRdv,
  168.                                                
  169.                                                 "JourD"                 =>      $jourD,
  170.                                                 "MoisD"                 =>      $moisD,
  171.                                                 "AnneeD"                =>      $anneeD,
  172.                                                 "HeureD"                =>      $heureD,
  173.                                                 "MinuteD"               =>      $minuteD,
  174.                                                
  175.                                                 "JourF"                 =>      $jourF,
  176.                                                 "MoisF"                 =>      $moisF,
  177.                                                 "AnneeF"                =>      $anneeF,
  178.                                                 "HeureF"                =>      $heureF,
  179.                                                 "MinuteF"               =>      $minuteF,
  180.                                                
  181.                                                 "Label"                 =>      "Mettre a jour le rendez-vous :",
  182.                                                 "Bouton"                =>      "Mettre a jour",
  183.                                                 "Action"                =>      "update"
  184.                         ));
  185.                        
  186.                         RemplirListesDeroulantes($donnees->NoEntreprise);
  187.                 }
  188.  
  189.                 $template->pparse("FormRdv");
  190.                 $mysqli->close();
  191.         }
  192.         else
  193.         {
  194.                 MessageErreur("Ce rendez-vous n'existe pas.");
  195.         }
  196. }
  197.  
  198. elseif ($_POST['action'] == 'update')
  199. {
  200.         if ($_POST['entreprise'] != '' and $_POST['raison'] != '' and $_POST['jourD'] != '' and $_POST['moisD'] != '' and $_POST['anneeD'] != '' and $_POST['heureD'] != '' and $_POST['minuteD'] != '' and $_POST['jourF'] != '' and $_POST['moisF'] != '' and $_POST['anneeF'] != '' and $_POST['heureF'] != '' and $_POST['minuteF'] != '')
  201.         {
  202.                 <