Portage pdo de mes anciennes publications

Soyez le premier à donner votre avis sur cette source.

Vue 4 011 fois - Téléchargée 227 fois

Description

Comme je l'avais dit précédemment à AKHENATHON :

"Je reviendrai lorsque j'aurai quelque chose de consistant à soumettre".

Voilà qui est fait avec une classe d'bjet qui permet d' :

- Effectuer des opérations SQL SELECT, INSERT, UPDATE ou autre sur des base MySQL ou Oracle
- Exporter à l'écran ou dans un fichier un jeu d'enregistrements au format brut, en HTML ou en valeurs séparées par un caractère délimiteur (ex. le csv)

Vous trouverez dans le fichier zip PDO_Lekod.php qui contient deux classes d'objets :
- Err_PDO_Lekod qui gère les exceptions PDO_Lekod
- PDO_Lekod qui fait le reste

Quelques précisions :

- Toute valeur relative aux champs ou au valeur des champs du formulaire est cryptée.
Les fonctions GenerationCle, Crypte et Decrypte ne sont pas de moi, et je prie à l'auteur de ces dernières de bien vouloir m'excuser de ne pas pouvoir l'identifier pour lui rendre hommage.

Bibliothèques requises :

- php_exif
- php_pdo
- php_pdo_mysql
- php_pdo_oci
- php_pdo_oci8
- php_mbstring

LIMITATIONS Oracle concernant la page d'affichage de renseignements

Pour l'élaboration du SQL ne pas imbriquer des fonctions à l'intérieure d'autres fonctions
Exemple : CONCAT('a',CONCAT('b','c')) => Dans ce cas, il faut utiliser un Alias (exemple : CONCAT('a',CONCAT('b','c')) Toto)

Vous trouverez dans la section "Source" le code qui a permis d'implémenter http://www.vipere.lekod.com/francais/pdo_mondanites.php

Source / Exemple :


<?php
include('PDO_Lekod.php');

$Form= new PDO_Lekod('Mon serveur','Ma base','Mon login','Mon mot de passe');

Function xtTraiter($nompage)
{
     $nompage = strtolower($nompage);
     $nompage = eregi_replace("[àâä]","a",$nompage);
     $nompage = eregi_replace("[îï]","i",$nompage);
     $nompage = eregi_replace("[ôö]","o",$nompage);
     $nompage = eregi_replace("[ùûü]","u",$nompage);
     $nompage = eregi_replace("[éèêë]","e",$nompage);
     $nompage = eregi_replace("[ç]","c",$nompage);
     $nompage = eregi_replace("[@_:'~\\\/\\.\"-]","_",$nompage);
     $nompage = eregi_replace(":space:","_",$nompage);
     return $nompage;
}

function Decimale_fr($Variable)
{
$Variable=eregi_replace("[.]",",",$Variable);
return $Variable;
}

//Ajout des textes de début et de fin
$Form->Proepilogue(
  '<h1 align="center">C\'est pire qu\'un hall de gare !</h1>
  <p align="left">Voici, depuis le début de la partie, tous les <span class="Accentuation">intrépides
  Vipernautes</span> qui, courageusement, décidèrent de se
  lancer à la conquête du corps de <span class="Accentuation">Florent B.</span>,<br>ainsi que les
  <span class="Accentuation">immondes couards</span> qui abandonnèrent
  leurs troupes à une mort certaine après avoir déserté
  leur poste de haut commandant en chef.<br></p>',
  '<p>Si vous ne vous trouvez pas dans cette liste, c\'est qu\'à coup sûr,
  <span class="Accentuation">vous ne vous êtes pas inscrit(e)</span>.</p>'
);

$Gest_lignes=array("Max liste"=>100,"Pas liste"=>10,"Classe"=>'Pas_Bouton');
$Gest_liens=array("Nbre liens"=>1,"Max lien"=>100,"Pas lien"=>10,"Classe"=>'Pas_Bouton');
$Gest_pages=array(
                  "Premiere Page"=>'<<<',
                  "X pages avant"=>'<<',
                  "Page precedente"=>'<',
                  "Page_suivante"=>'>',
                  "X pages apres"=>'>>',
                  "Derniere Page"=>'>>>',
                  "Infobulle premiere Page"=>'Première page',
                  "Infobulle X pages avant"=>' pages avant',
                  "Infobulle page precedente"=>'Page précédente',
                  "Infobulle Page X"=>'Page ',
                  "Infobulle page_suivante"=>'Page suivante',
                  "Infobulle X pages apres"=>' pages après',
                  "Infobulle derniere Page"=>'Dernière page',
                  "Liaison entre page"=>' - ',
                  "Style paragraphe"=>'align="center"',
                  "Style page actuelle"=>'',
                  "Style lien"=>'style="text-decoration:none;"'
                 );

$Form ->Init_form('Form_PDO','GET','','','SELECT t_carnets.Evt, t_carnets.Pseudo,DATE_FORMAT(t_carnets.Date,\'%d/%m/%Y %H:%i\') ladate FROM t_carnets',
'Date','DESC',true,$Gest_pages,$Gest_lignes,$Gest_liens,'<p align="center"><span class="Accentuation">Ben, au regard de vos choix de filtrage,<br>y a pas grand chose à afficher</span></p>',
array('Cellule1','Cellule2')
                 );

/*On ajoute un motif de recherche sur les conditions AVANT de déclarer les contrôles impactés par les motifs
car les motifs sont ajoutés à la valeur du contrôle lors de sa création*/

$Form->Renseigne_joker("T_Saisie",'', '%');//pour faire par exemple Pseudo LIKE 'fl%'
//$Form->Renseigne_joker("H_test2",'_', '_');//pour faire Pseudo = '_titi_'

//Les boutons radio
$Form ->Ajoute_option("O_Evt",$Form->Lit_tout_enr(),true,"Evt",'=','',"Tous les mouvements",true,"Bouton");
        //$Form ->Ajoute_option("O_Evt","Arrivee",false,"Evt",'=','',"Bienvenue &agrave",true,"Bouton","http://".$_SERVER['SERVER_NAME']."/Forum/images/smiles/6.gif");
        //$Form ->Ajoute_option("O_Evt","Depart",false,"Evt",'=','',"Ils nous ont quitté (Paix à leur âme)",true,"Bouton","http://".$_SERVER["SERVER_NAME"]."/Forum/images/smiles/24.gif");*/
$Form ->Ajoute_option("O_Evt","Arrivee",false,"Evt",'=','',"Bienvenue à",true,"Bouton","http://www.vipere.lekod.com/Forum/images/smiles/6.gif");
$Form ->Ajoute_option("O_Evt","Depart",false,"Evt",'=','',"Ils nous ont quitté (Paix à leur âme)",true,"Bouton","http://www.vipere.lekod.com/Forum/images/smiles/24.gif");
//Les listes déroulantes
$Form ->Ajoute_liste("S_Lettre","SELECT DISTINCT UCASE(LEFT(CONVERT(`t_carnets`.`Pseudo` USING utf8 ),1)) AS Champ FROM t_carnets ORDER BY Champ","SELECT DISTINCT UCASE(LEFT(CONVERT(`t_carnets`.`Pseudo` USING utf8 ),1)) AS Champ FROM t_carnets ORDER BY Champ",
   "UCASE(LEFT(CONVERT(`t_carnets`.`Pseudo` USING utf8 ),1))","=","Tout","","Uniquement les Vipernautes dont l'initiale est",false,"Bouton");
$Form ->Ajoute_liste("S_Date","SELECT DISTINCT LEFT(Date,10) AS Champ FROM t_carnets ORDER BY Champ","SELECT DISTINCT concat(substring(Date,9,2),'/',substring(Date,6,2),'/',substring(Date,1,4)) AS Champ FROM t_carnets ORDER BY LEFT(Date,10)",
   "LEFT(Date,10)","=","Tout","","Uniquement les mouvements de la journée du",false,"Bouton");

//La zone de texte
$Form ->Ajoute_texte("T_Saisie","Pseudo","LIKE","","","Dont le nom du Vipernaute commence par ",false,"Bouton","Bouton","",50,50);

//Les cases à cocher
$Form ->Ajoute_case("C_AM","CONVERT(TIME(date),SIGNED)","<=",120000,false,"","Tous les évènements arrivés avant midi",true,"Bouton");
$Form ->Ajoute_case("C_PM","CONVERT(TIME(date),SIGNED)",">",120000,false,"","Tous les évènements arrivés après midi",true,"Bouton");

//Les zones invisibles
//$Form->Ajoute_hidden('H_test2','Pseudo','oueur ','LIKE');

//L'odre d'apparition des contrôles de filtre dans le formulaire
$Form->Init_ordre('H|O|L|T|C','<td align="center">|<table>');
//$Form->Init_ordre(array("T_Saisie","C_AM","S_Lettre"),array('<table>','<td align="center">','<td align="center">'),true);
//Les images pour les boutons de tri
$Form ->Init_Img_tri(array(
          'http://www.vipere.lekod.com/Images/Fleches/Haut.gif',
          'http://www.vipere.lekod.com/Images/Fleches/Haut_mvt.gif'
        ),
   array(
          'http://www.vipere.lekod.com/Images/Fleches/Bas.gif',
          'http://www.vipere.lekod.com/Images/Fleches/Bas_mvt.gif'
        ),
   array(
          'Tri croissant',
          'Tri décroissant'
        )
);
//Les boutons de tris
$Form ->Ajoute_tri("B_Tri_Evt","Evt",true,"Evènement",true,"Accentuation");
$Form ->Ajoute_tri("B_Tri_Joueur","Pseudo",true,"Vipernaute",true,"Accentuation");
$Form ->Ajoute_tri("B_Tri_Date","Date",true,"Date de l'évènement",true,"Accentuation");
?>
  <html dir="LTR">
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="Title" lang="fr" content="PDO Lekod">
  <meta name="Identifier-url" content=".http://www.vipere.lekod.com">
  <meta name="Description" lang="fr" content="Jeu de strategie dans lequel vous devez envahir un corps humain grace a une armee de virus polymorphes.">
  <meta name="keywords" lang="fr" content="jeu,jouer,en ligne,strategie,virus,vipere,polymorphe,gratuit,corps,humain,corps humain,anatomie,planche,planche anatomique,organes,dedecine,sante,conversion de devises,devises,conversion,devise">
  <meta name="Category" content="Jeu">
  <meta name="Author" lang="fr" content="Florent Benetiere">
  <meta name="Reply-to" content="webmestre@lekod.com">
  <meta name="Copyright" content="Florent Benetiere">
  <meta name="revisit-after" content="8">
  <meta name="Robot" content="index,follow,all">
  <meta http-equiv="pragma" content="no-cache">
  <TITLE>Carnets mondains PDO de V.I.P.E.R.E.</TITLE>
  <style>
  <!--
  body {
  font-weight:normal; font-size:12pt; color:#C0C000; background-color:#001E00; background-image:url('http://<?php echo $_SERVER['SERVER_NAME'] ?>/Images/Fond.jpg'); background-repeat:repeat; background-attachment:fixed;
  scrollbar-face-color: #012901;
  scrollbar-shadow-color: #004000;
  scrollbar-highlight-color: #539054;
  scrollbar-3dlight-color: #539054;
  scrollbar-darkshadow-color: #002000;
  scrollbar-track-color: #539054;
  scrollbar-arrow-color: #FFFF00;
  }
  a:visited { font-style:italic; font-weight:bold; color:#FFCC33; }
  a:link { font-weight:bold; color:#FEA70C; }
  a:hover { font-weight:bold; color:#FFFF00; }
  h1 { color:#FEA70C; text-align:center; text-decoration:underline;}
  h2 { color:#FFCC33;text-align:center;text-decoration:none;}
  TABLE,TD,TR
  {
  CURSOR: auto;
  border: 0pt none;
  valign:"middle";
  }

  /***** menu CSS *****/
  @media print {
  	.menu, .ssmenu {
  		visibility:hidden;
  	}
  }
  .Cadre_int
  {
  	border: medium inset #FFFF00;
  }

  .Cadre_ext
  {
  	border: medium outset #FFFF00;
  }

  .menu, .ssmenu {
  	background-color:#FFFF3F;
  	font-size:10pt;
  	font-weight:bold;

  	border:1pt solid #FFFF00;
  	width:15em;
  	margin:1em;
  }
  .menu {
          background-image:url(http://<?php echo $_SERVER['SERVER_NAME'] ?>/Images/Menu/Menu.jpg\');
  	text-align:center;
  }
  .ssmenu {
          background-image:url(http://<?php echo $_SERVER['SERVER_NAME'] ?>/Images/Menu/Ss_menu.jpg\');
  }

  .ssmenu ul, .ssmenu li {
  	/*Les items (les <li>) des sous-menus, notamment pour enlever les puces des liste */
  	padding:0;
  	margin:0;
  	list-style-type:none;
  }

  .menu a, .ssmenu a, .menu a:visited, .ssmenu a:visited {
    font-style:normal;
    color:#004000;
  	padding:2pt 1pt;
  	text-decoration:none;
  	display:block;
  	margin:0pt;
  	width:100%;
  }
  html>body .menu a, html>body .menu a:visited, html>body .menu a:hover, html>body .menu a:active,
  html>body .ssmenu a, html>body .ssmenu a:visited, html>body .ssmenu a:hover, html>body .ssmenu a:active {
          width:auto;
  }

  .ssmenu ul:hover, .ssmenu a:hover, .ssmenu a:focus, .menu a:hover, .menu a:focus {
  	background-color:#003300;
  	color:#FFFF00;
  	text-decoration:none;
  }

  .menu a:hover, .menu a:focus {
          background-image:url('http://<?php echo $_SERVER['SERVER_NAME'] ?>/Images/Menu/Menu_over.jpg\');
  }
  .ssmenu ul:hover, .ssmenu a:hover, .ssmenu a:focus {
          background-image:url(http://'<?php echo $_SERVER['SERVER_NAME'] ?>/Images/Menu/Ss_menu_over.jpg\');}

  img {
  	border:none;
    align:"absmiddle";
  }
  .Titre { font-size:24pt; color:#FEA70C; text-decoration:underline; }
  .Accentuation { font-weight:bold; color:#FEA70C; }
  .Bouton { font-weight:bolder; font-size:10pt; color:#004000; background-color:#FEA70C; background-image:url(http://<?php echo $_SERVER['SERVER_NAME'] ?>/Images/Bouton.jpg\'); border-color:rgb(255,204,0);}
  .Style_Bouton {  font-weight:bolder; font-size:10pt; color:#004000; background-color:#FEA70C; background-image:url(http://<?php echo $_SERVER['SERVER_NAME'] ?>/Images/Bouton.jpg\'); border-color:rgb(255,204,0); border-style:outset; }
  .Pas_bouton {  font-weight:bolder; font-size:10pt; color:#004000; background-color:#FEA70C; border-color:#FFCC00; border-style:outset; }
  .Cellule1 {  font-weight:normal; color:#C0C000; background-color:#003300;border: medium inset #FFFF00;}
  .Cellule1 a:link{ font-weight:normal;color:#C0C000;}
  .Cellule1 a:hover,.Cellule1 a:focus{font-weight:bold;color:#FFFF00;text-decoration:none;}
  .Cellule2 {font-weight:normal;color:#C0C000;background-color:#324E00;border:medium inset #FFFF00;}
  .Cellule2 a:link{font-weight:normal;color:#C0C000;}
  .Cellule2 a:hover,.Cellule2 a:focus{font-weight:bold;color:#FFFF00;text-decoration:none;}
  .Livre1 {font-weight:bold;color:#FF4E00;background-color:#00FF00;}
  .Livre2 {font-weight:bold;color:#00FF00;background-color:#FF4E00;}
  .Texte_normal {color:#C0C000}
  .Pas_bords {border: 0pt none;}
  .Table2{CURSOR: auto;border: medium outset #FFFF00;}
  .Cases,.Cases_d,.Cases_g,.Cases_h,.Cases_b,.Cases_d_h,.Cases_g_h,.Cases_d_b,.Cases_g_b{border: medium inset #FFFF00;}
  .Cases_d,.Cases_d_h,.Cases_d_b{border-right:none;}
  .Cases_g,.Cases_g_h,.Cases_g_b{border-left:none;}
  .Cases_h,.Cases_d_h,.Cases_g_h{border-top:none;}
  .Cases_b,.Cases_d_b,.Cases_g_b{border-bottom:none;}
  .Annotation{font-size:8pt; color:#C0C000;text-align:center;}

  -->
  </style>
  </head>
  <body>

<?php
//On exporte la page
$Form->Exporte_html('Ecran','UTF-8',false,true,null,'Et maintenant une exportation CSV de la table des mondanités');
//Comme mis ci-dessus on fait une exportation CSV de la table
$Form->Exporte_CSV($Form->Sel('SELECT Pseudo,Evt,Date FROM t_carnets ORDER BY Pseudo,Date'));
?>
<div id="Xiti" style="width:39px; height:25px; position:absolute; left:00px; top:0px; z-index:0;">
<a href="http://www.xiti.com/xiti.asp?s=mon_compte_xiti" title="WebAnalytics" TARGET="_blank">
<script type="text/javascript">
<!--
Xt_param = 's=mon_compte_xiti&p=Mondonites_PDO';
try {Xt_r = top.document.referrer;}
catch(e) {Xt_r = document.referrer; }
Xt_h = new Date();
Xt_i = '<img width="39" height="25" border="0" alt="" ';
Xt_i += 'src="http://le_serveur_xiti/hit.xiti?'+Xt_param;
Xt_i += '&hl='+Xt_h.getHours()+'x'+Xt_h.getMinutes()+'x'+Xt_h.getSeconds();
if(parseFloat(navigator.appVersion)>=4)
{Xt_s=screen;Xt_i+='&r='+Xt_s.width+'x'+Xt_s.height+'x'+Xt_s.pixelDepth+'x'+Xt_s.colorDepth;}
document.write(Xt_i+'&ref='+Xt_r.replace(/[<>"]/g, '').replace(/&/g, '$')+'" title="Internet Audience">');
//-->
</script>
<noscript>
Mesure d'audience ROI statistique webanalytics par <img width="39" height="25" src="http://http://le_serveur_xiti/hit.xiti?s=309208&p=" alt="WebAnalytics" />
</noscript></a>
</div>
</body>
</html>

Conclusion :


Pour diverses raisons, je me vois contraint d'abandonner "temporairement" le développement de www.vipere.lekod.com et, de ce fait, vous tire ma révérence.

Florent Bénetière

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
30
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
17 novembre 2009

Bonsoir Akhénaton

Je te remercie d'avoir analysé ma classe d'objet.
La où effectivement nous n'avons pas le même point de vue, c'est sur la notion d'un objet.

Autant je suis d'accord avec toi que l'on construit une base de données de telle sorte qu'il y ait le moins de redondance possible dans les enregistrements, autant je vois un objet comme une entité possédant tout ce qui est nécessaire pour atteindre un but fixé.

C'est pour cela que je n'ai créé qu'une seule classe d'erreur. Celle-ci gère les différents type de problématiques que tu as ennoncé dans ton commentaire.

Quant à la classe elle même, elle gère plusieurs choses mais, au final, n'est faite que dans un seul but : Requêter et afficher des enregistrements.

Je comprends ton point de vue qui se veut le plus universel possible quant à l'exploitation et à la réutilisation des modules de classe.

Concernant l'impossibilité de générer la documentation à partir de mes commentaires, j'en suis désolé.

Merci encore pour tes critiques et suggestions constructives.
Messages postés
276
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013

Salut,

Je viens de regarder la mise à jour, c'est mieux mais pas assez.

Déjà les points positifs :
- Tu as beaucoup documenté ton code avec des exemples
- Tu as une classe de gestion des erreurs

Remarques sur le style :
La documentation est bien mais pas exploitable car pas possible de la générer avec phpDoc ou doxygen. Le mieux serait que tu jettes un coup d'œil sur ces librairies, elles t'expliquent comment formater tes commentaires pour un générer une documentation online ou papier à partir de ton code. Utilises phpDoc il est implémenté dans Zend avec l'intellisense et donc on appelant une fonction t'as l'aide qui s'affiche automatiquement.

Remarques sur le fond :

T'as des classes, mais c'est toujours la même chose qu'avant. Je m'explique en prenant chaque élément en exemple :

-- Les erreurs :

Tu as commencé une gestion des Exception, c'est très bien, même parfait, mais tu n'as qu'une seule classe qui gére tout, du coup elle son utilisation est limitée.

Actuellement tu peux faire ceci :

try {
...fonction();
} catch(Err_PDO_Lekod $err) {
...gestion ?...
}

Ton erreur peut être de X types différents, donc dans ta gestion d'erreurs tu ne sais pas quoi faire à moins de tester le message. Les exceptions sont prévues autrement :

Pour chaque type d'erreur tu devrais avoir une classe :

class ExEcritureImpossible extends Exception ...
class ExVarNoNull extends Exception ...
... etc ... selon le nom de types d'erreurs

Ton code deviendra alors :

try {
...fonction();
} catch(ExEcritureImpossible $err) {
...que faire si pb d'écriture
} catch(ExVarNoNull $err) {
...que faire si pb de variables non définie
} catch(Exception $err) {
...que faire si autre problème
} finaly {
...que faire après un pb
}

-- La classe PDO_Lekod

Quand tu fais une classe, et qu'on te demande ce qu'elle fait, tu dois pouvoir répondre par un seul truc, elle fait ceci ou cela. Ta classe parcontre fait : la connexion à la base, le requettage, l'execution des requettes, la génération du formulaire, l'encryptage et décryptage ...etc...

Pour être plus précis je vais plus parler de POO mais de création d'une base de données. Lorsque tu fais une table elle stocke quoi ? Une seul type de truc : un utilisateur, une page, une news ...etc... Il te viendrais pas à l'idée de faire une table dans laquelle tu y mets tous les champs : infos user, infos page ... etc ...

Par analogie c'est la même chose en programmation objet, la découpe est similaire, chaque entité ayant un rôle spécifique aura une classe spécifique. Les objets pourront communiquer entre eux ... à travers soit des instances, soit à travers des appels statiques.

Là ou l'analogie s'arrête c'est au niveau de l'héritage et de la spécialisation.

Tu une classe exception, elle définit sa structure (comme une table dans une base)

Tu as plusieurs types d'erreurs, donc chaque type hérite de la classe exception en re-définissant des valeurs ou des fonctions.

C'est pas encore ça, mais c'est un début, donc bonne continuations.
Messages postés
30
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
17 novembre 2009

Bonsoir Akhénaton

Effectivement, mon code pour tri.php a été écrit pour un besoin précis : Faire des formulaires pour trier et filtrer des données. Je n'ai effectivement pas été plus loin. J'essaye de développer un jeu en ligne et mon but étant de le réaliser au plus tôt, je pourvois à mes besoins en développant mes outils.
Si je pense que ces outils peuvent être utiles à d'autres, je les publie en espérant que cela pourra aider quelqu'un.
Etant seul pour tout faire, tu comprendras que je pare au plus pressé.

Merci encore pour ton investissement quant à l'élaboration d'une classe à partir de mon package.
Je vais déroger aux règles précitées et élaborer une ou plusieurs classes qui prennent en compte MySQL et Oracle.

Je prends note de tes commentaires et reviendrai lorsque j'aurai quelque chose de consistent à soumettre.
Messages postés
276
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013

Lut, je pense que ce soit le css ou le js, tu devrait les mettre dans des fichiers à part. Pour la partie HTML tu est dans des fonctions qui comportent le html et le php donc c'est mélangé, je t'assure. Ce que tu pourrais faire, c'est avoir deux classes différentes, une contenant les données, et une autre contenant la mise en page.

Je m'explique :

La classe de tri :

abstract class BaseTri {
private $nbPages
...
}

En entrée tu aurais les paramètres de ton construct le s arguments de ta fonction, et cette fonction ne ferais que du calcul sur les variables que tu instance dans ta fonction.

Ensuite tu aurais une classe d'affichage :

class Tri extends BaseTri {
public function Header() {
return 'Pages :

';
}
public function __toString() {
...
}
}

Dedans tu définis son affichage - attention si tu veux qu'elle joue le role de template ne mets que des boucles du html ou bien des données provenant de la base. Exploses au max les fonctions, genre les les pages, header, footer ...

Alors maintenant ton code peut être repris et adapté sans que j'ai besoin de modifier tes fonctions :

class MonTri extends Tri {
public function Header() {
return 'Toto : ';
}
}

Et maintenant à moi de choisir quel affichage je veux :

echo new Tri(...);
ou bien
echo new MonTri(...);

Ton code est trop linéaire et donc spécifique à un besoin précis, exploses le au max pour qu'il soit plus générique.

Akh
Messages postés
30
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
17 novembre 2009

Bonsoir Akhénaton

Je te remercie d'avoir pris le temps d'analyser et de suggérer des optimisations pour mon package PDO.
Je vais voir ce que je peux faire.

Néanmoins, je ne suis pas d'accord lorsque tu dis que je mélange HTML et PHP.
J'ai effectivement dans le guide de mise en place laissé sous-entendre qu'il y en avait car il est fort possible d'inclure mes fonctions au beau milieu de HTML.

La fonction function Init($Entete="",$Pied="") permet justement de ne passer que par du PHP; Il suffit pour cela de renseigner la valeur $Entete et $Pied.

Sur mon site, j'ai déja une fonction similaire qui renseigne les metas, le javascript commun et les liens js et css, ainsi qu'une autre pour la navigation du site et la fermeture des balises et <html>.
C'est pour cela que dans mon guide je ne montre que le texte qui apparaît avant les filtres et boutons de ma feuille Mondanites.php.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.