Creer Application WEB

  • View
    20

  • Download
    0

Embed Size (px)

Text of Creer Application WEB

  • Crationd'uneapplicationWEBavecPHP/MySQL

    1

  • Crationd'uneapplicationWEBavecPHP/MySQL

    CreruneapplicationWEBavecPHP/MySQL

    ParPhilippeBousquet

    Copyright(c)20032008PhilippeBousquet.

    2

  • Crationd'uneapplicationWEBavecPHP/MySQL

    Celivrelectroniqueestunerditiond'unarticledeprparationd'uneconfrencequej'avaiseffectuaulyceCaslerTalenceen2003/2004danslecadredesconfrencesdel'ABUL.

    CeLivreestdistribuselonlestermesdelaGNUFreeDocumentationLicense.Copyright(c)20032008PhilippeBOUSQUET

    3

  • Crationd'uneapplicationWEBavecPHP/MySQL

    TabledesmatiresI. Introduction 5II. Lemodlededonnes 6III. Crationdelabasededonnes 11IV.Maquettagedel'application 21V. LeXHTML 23VI.LespagesduforumenXHTML 36VII.LamiseenformeparCSS 41VIII.Programmationdel'application 61IX.LelangagePHP 62X. L'applicationmyForum 81XI.Rfrences 104

    4

  • Crationd'uneapplicationWEBavecPHP/MySQL

    I.Introduction

    Autraversdecelivre,nousallonsvoir lesdiffrentestapespourcreruneapplicationWEB, pour cela nous nous proposons de crer un forumde discussion bas sur lestechnologiessuivantes:

    MySQLPourlestockageetlagestiondesdonnes

    XHTMLetCSSPourlerendudenospagesHTML

    PHPPourlaprogrammationdespartiesdynamiquesdenotreapplication

    5

  • Crationd'uneapplicationWEBavecPHP/MySQL

    II.Lemodlededonnes

    Avantdeselancerdanslaprogrammation,ilconvientdebiendterminerl'ensembledesdonnes ainsi que les liaisons qu'elles ont entre elles. En effet la programmation nereprsentequ'peuprs20%dans lacrationd'uneapplication, lerestetantpartagentrel'Etudedecequel'onveutraliseretlestestsfinaux.

    Dfinitiondesfonctionnalitsdel'applicationNousdevonsdansunpremiertempsdoncbiendfinircequenotreapplicationestcensefaire.Unforumdediscussionestenfaitunmcanismepermettantdesutilisateursdediscutersurdessujetsdiverstraversdesmessagescrits.

    Lesutilisateursdoiventpouvoircrerdenouveauxsujetsdediscussions,ilsdoiventpouvoirlirelessujetsdesautresutilisateursetbienentendupouvoiryrpondre.

    OrganisationgnraledesdonnesUnefois les fonctionnalitsfiges, nousdevonsorganisernosdonnesafindepouvoirconstituernotrebasededonnes.C'estcelleciquiseralecurdenotreapplication,doncnousdevonsyconsacrerunegrandeattentionpourquecellecinesoitpasmalconue,cequirendraitnotreapplicationmoinsfonctionnelle.

    Dansl'tapeprcdentenousavonsvuapparaitretroisnotionsdistinctes:

    L'utilisateurc'estunepersonnequimettraetliradesmessages. Lesujet ils'agitdupointdedpartdeladiscussion,ilregroupelesmessagesle

    concernant. Lemessage c'est l'objetquipermetauxutilisateursdes'exprimersurunsujet

    donn.

    Doncnousvoyonsiciquenotreapplicationdevraaumoinsgrercestroisentits.Doncnousdevronscrertroistablespourconstituernotrebasededonnes.

    Cependantpourquenotreapplicationsoitmoinsrbarbative,danslesensouauboutd'unmomentlesutilisateursrisquentdeseperdredanslajungledessujets,nousallonsintgrerunenouvellenotion:Lacatgorie.

    Eneffetnousallonsdciderderegroupernossujetsparcatgories,ceaurapoureffetquenosutilisateur,aulieudelancerunediscussiondanslevide,nousallonsleurproposerdescatgoriesdanslesquellesilspourrontcrerleurssujetsdediscussions.

    6

  • Crationd'uneapplicationWEBavecPHP/MySQL

    Parexemple:

    Utilisateur :darken

    Catgorie :technique

    Sujet :envoyerdesmailsavecOO

    Message : "Il yabiendansoutils / options/programmesauxiliaireslapossibilitdechoisirunclientdemessageriepardfaut.Maisjen'arrivepassavoircommentenvoyerdesmails....."

    NousauronsdoncquatreTablesdansnotrebasededonnes:

    utilisateurs:quirassembleralesinfossurlesutilisateurs categorie:quilistelensembledescatgoriesduforum sujets:contiendralessujetsdesdiffrentesdiscussions messages:contiendratouslesmessagesmisparlesutilisateurs

    OrganisationgnraledesdonnesMaintenantquenousavonsdterminquellestablesconstituerontnotrebasededonnes,ilnousfautdfinirlesinformations(champs)quecontiendrontchacunedestables.

    TableUtilisateursCettetablecontientlesutilisateursayantaccsauforum,chaqueutilisateurdevradansunpremier temps, passer par uneprocdured'inscriptionafindepouvoir utiliser le forum.Nousauronsdoncbesoinsdesinformationssuivantes:

    codeutilisateur:ils'agitdel'identifiantdel'utilisateur,celuicidoittreunique

    motdepasse:ncessaireaulogindel'utilisateur

    email :cetteinformationestutilepourrenvoyerlemotdepasse l'utilisateurquil'auraitoubli

    nom et prenom : cesdeux informationsnesont pasvraiment utilesmais il esttoujoursintressantdelespossder

    7

  • Crationd'uneapplicationWEBavecPHP/MySQL

    TableCategoriesCettetablecontientlesthmesdediscussionsduforum,chaquesujetdediscussionseraenglobdansl'undesthmesprsententable.Cettetableneseradisponiblequ'enlectureseule,c'estdirequec'estleDBAquiajouteralesthmesventuelsdanslatable,iln'yaurapasdemisejourparprogramme.

    Peud'informationssontncessairespouridentifierunthme:

    unnumeroidentifiant:ils'agitd'unnumroautoincrmentquipermetd'identifierunthme,cenumroestunique

    unnom : Il s'agitdunomduthme,parexemple:Devel(pourunthmesur ledveloppement)

    unedescription:cetteinformationpermetd'expliqueruntantsoitpeulethme,parexemple:"Discussionssurledveloppementdelogiciellibres"

    TableSujetsCettetablecontient l'ensembledessujetsdu forum,Elledoit possder les informationssuivantes:

    un numero d'identifiant : il s'agit d'un numro autoincrment qui permetd'identifierunsujet,cenumroestunique

    untitre:titrequidcritlesujet

    datecreation:ladatedecrationdusujet

    heuredecreation:l'heuredecrationdusujet

    Cependant un sujet est cr par un utilisateur, il est intressant de connaitre cetteinformation,doncnousajoutons:

    codeutilisateur:c'estlecodedel'utilisateurayantcrlesujet,ildoitexisterdanslatableusers.

    Deplusnousavonsprcis qu'unsujet tait enrapport avecunecatgoriedonccetteinformationdoittregalementdanslatable:

    identifiant catgorie : s'est l'identifiant de la catgorie laquelle le sujet estrattach,lacatgoriedoitexisterdanslatablethmes.

    8

  • Crationd'uneapplicationWEBavecPHP/MySQL

    TableMessagesCettetablecontientl'ensembledesmessagesduforum,Elledoitpossderlesinformationssuivantes:

    un numero d'identifiant : il s'agit d'un numro autoincrment qui permetd'identifierunmessage,cenumroestunique

    untitre:titrequidcritlemessage

    untexte:ils'agitducorpsdumessage

    datecreation:ladatedecrationdumessage

    heuredecreation:l'heuredecrationdumessage

    Cependant unmessageest cr parunutilisateur, il est ncessairedeconnaitrecetteinformation,doncnousajoutons:

    codeutilisateur :c'estlecodedel'utilisateurayantcrlemessage,ildoitexisterdanslatableusers.

    Deplus nousavonsprcis qu'un messagetait en rapport avecunsujet donccetteinformationdoittregalementdanslatable:

    identifiantsujet:s'estl'identifiantdusujetauquellemessageestrattach,lesujetdoitexisterdanslatablesujets.

    9

  • Crationd'uneapplicationWEBavecPHP/MySQL

    LastructurecompltedelabasededonnesNousavonsdoncdfinit,defaonthoriquelastructuredenotrebasededonnes,voicileschmagnral:

    10

  • Crationd'uneapplicationWEBavecPHP/MySQL

    III.Crationdelabasededonnes

    Maintenant quenousavonsdfinis lesdiffrentesdonnesquenotreapplicationdevragrer,nousallonscrerphysiquementnotrebasededonnes.

    PourcelanousallonsutiliserleSGBDMySQL,quiestl'undesplusconnudanslemondeduWEBetdulogiciellibre.

    Afindefaciliter,lamanipulationdeMySQL,nousallonsutiliserPhpMyAdmin.

    Cetoutil,critenPHP,permetdegrersesbasesdedonnessansavoirbesoind'unegrandeconnaissancedeMySQL.Deplusdufait qu'il estcrit enPHP(doncsurvotreserveurHTTP)vouspouvezsurtoutgrervosbasesdistance.

    PrparationetconfigurationIln'estpasrecommandd'utiliserle"compte"administrateurMySQL(root)pourmanipulerunebasededonnesdoncnousallons dans le client MySQL, crer unutilisateur quipermettradegrernotrebasededonnes(crationdetable,ajoutd'enregistrements,...).

    Premirement,ilfautseconnecterMySQLentantquerootvialeclientMySQL,danslebutdecrernotrebaseetd'ajouterl'utilisateur(quipermettradegrerlabasesousPhpMyAdmin):

    [[email protected]]$mysqlurootpEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis1toserverversion:4.0.15

    Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.

    mysql>

    Ilfautmaintenantcrernotrebasededonnes:

    mysql>createdatabasemyforum;QueryOK,1rowaffected(0.00sec)

    Nousallonsmaintenantcrerl'utilisateurquiseraleDBAdenotrebasededonnes,nousallonsdoncnouspositionnersurlabasemyforum,puisdonnerl'utilisateurwwwadmintouteslesautorisationssurcettebase:

    mysql>grantallprivilegesonmyforum.*[email protected];QueryOK,0rowsaffected(0.82sec)

    mysql>grantallprivilegesonmyforum.*towwwadmin;QueryOK,0rowsaffected(0.82sec)

    11

  • Crationd'uneapplicationWEBavecPHP/MySQL

    NouspouvonsdoncmaintenantquitterleclientMySQL:

    mysql>quitBye[[email protected]]$

    Donnonsmaintenantunmotdepassepourl'utilisateurwwwadmin:

    [[email protected]]$mysqladminpuwwwadminpassword'azerty'Enterpassword:[[email protected]]$

    VrifionsmaintenantquelaconfigurationdePhpMyAdmin,afinquelorsquel'onseconnecteMySQLviaPhpMyAdminildemandeunnomd'utilisateuretunmotdepasse.danslefichier/var/www/html/phpMyAdmin/config.inc.phpRemplacerlaligne:

    $cfg['Servers'][$i]['auth_type']='config';

    Par:

    $cfg['Servers'][$i]['auth_type']='http';

    OnpeutmaintenantceconnecterPhpMyAdminviavotrenavigateurprfr:http://localhost/phpMyAdmin:

    12

  • Crationd'uneapplicationWEBavecPHP/MySQL

    CrationdenostablesMaintenantquel'onestconnectMySQLsousPhpMyAdmin,nousallonsdonccrernostablesdansnotrebaseMyForum:pourcelaslectionnonslabase"myforum".

    Nousarrivonssuruncranquinousproposedecrerunenouvellet