Bonjour,
J'ai créé un site avec consultation d'une base de données. Je decouvre actuellement php et mysql aussi mon travail n'est il pas pertinent. J'ai décidé de revoir mon travail et c'est durant cette revision que l'envie d'utiliser des classes m'est venue.
Je tiens, a ce niveau, a preciser que mon site n'a aucune finalité si ce n'est me faire decouvrir php.
Mon probleme, quant a lui concerne la conception même des classes que je souhaiterai utiliser : mon manque d'experience ou mes difficultés a cerner mon probleme font que je ne trouve pas de doc donnant une methode complete de la marche que j'aimerai suivre. Même si certaines m'ont donné des pistes de reflexions interessantes je me trouve actuellement a critiquer l'utilité de telles classes (car je ne comprends pas tout ^^)
Mon post est assez long j'en suis desolé, je vais presenter une page que je possede. l'utilisation d'une classe pour cette page et m'arreterai la pour ne pas devenir trop illisible :
une de mes pages consulte une table de ma base et affiche et mets en page tous ses champs :
ps: il est fort probable que sous cette forme mon travail ne soit pas structuré ou pro n'hesitez pas a critiquer les faiblesses de mon travail
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 <?php ob_start("ob_gzhandler"); require("connection.php"); require("head.html"); ?> <div id="contenu"> <h2>Nos partenaires</h2> <p>Un merci a tous ceux qui contribuent a la santé de notre club.</p> <?php require("script/fonction.php");//fonction contient la class abstraite utilitaire //affiche les partenaires $REQUET="select * from partenaire"; if($RESULT=mysql_query($REQUET)){ while($LIGNE=mysql_fetch_object($RESULT)){ $NOM=$LIGNE->par_nom; $DESCR=$LIGNE->par_descr; $IMG=$LIGNE->par_img_id; $URL=$LIGNE->par_url; if(!empty($IMG)){ $IMG=utilitaire::chemin_Img($IMG);//chemin_Img crée le chemin de l'image voulue $IMGECHO="<img src=\"$IMG\" alt=\"logo de $NOM\" >"; } else{ $IMGECHO= "photo pas encore en ligne"; } $AFFICHAGE="<h3>$NOM</h3>"; $AFFICHAGE.= "<div class=\"partenaire\">$IMGECHO <i>$DESCR</i>"; if(!empty($URL)){ $AFFICHAGE.=" <br/>lien direct : <i><a href=\"$URL\">$NOM</a></i>"; } $AFFICHAGE.= "</div>"; echo $AFFICHAGE; } } else{ echo"echec requete"; } require("footer.html"); ?>
Admettons que je souhaite créer une classe partenaire, quelles sont les questions a se poser?
dois je créer une classe correspondant a tous les champs de la table que je stockerai ds un tableau parcouru par les methodes de la base? (ça me parait moche et je pense mal formuler l'idée.)
A l'heure actuelle je pense a quelque chose ressemblant a ceci :
La premiere version sort tout seul tous les partenaires qu'il met en page (une seule requete). La je ne sors qu'un seul partenaire a la fois. Ce qui pose plusieurs problemes selon moi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class partenaire{ private $OBJET //je ne crée pas de constructeur function get_id($ID){//on sort les infos d'un seul partenaire $REQUET="select * from partenaire where $ID=part_id"; $RESULT=mysql_query($REQUET); $OBJET=mysql_fetch_object($RESULT); } function nom(){ return $OBJET->part_nom; } //etc pour le reste }
Comment savoir que tous mes partenaires ont été bien affiché ?
Voici en l'etat actuel de mes connaissances l'equivalent avec classe de mon probleme. Evidement l'avantage est que je peux maintenant utiliser cette classe sur d'autres pages ou je n'ai besoin que d'un partenaire particulier , l'inconvenient ici est le nombres élevé de consultation de la base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $PARTENAIRE=1;//pour entrer dans la boucle $I=1; while($PARTENAIRE){ $PARTENAIRE=new partenaire; $PARTENAIRE->get_id($I);//soit 20 partenaires alors j'ai 20 requetes :'( affichage($PARTENAIRE);//s'occupe de la mise en page peut mm etre //une methode de la classe donc plutot $PARTENAIRE->affichage() $I+=1; }
Je m'arrete la en remerciant ceux qui ont lu jusqu'au bout (en esperant etre interessant) N'hesitez pas a critiquer ou commenter ce que je viens d'ecrire cela m'aiderai beaucoup.
Merci d'avance.
Partager