begin process at 2012 05 27 18:07:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > PORTAGE PDO DE MES ANCIENNES PUBLICATIONS

PORTAGE PDO DE MES ANCIENNES PUBLICATIONS


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Classé sous :sql, mysql, oracle, php, requête Niveau :Initié Date de création :09/12/2008 Date de mise à jour :15/10/2009 22:42:18 Vu / téléchargé :2 464 / 105

Auteur : 8Tnerolf8

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 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_mondanite s.php

Source

  • <?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"=>'&lt;&lt;&lt;',
  • "X pages avant"=>'&lt;&lt;',
  • "Page precedente"=>'&lt;',
  • "Page_suivante"=>'&gt;',
  • "X pages apres"=>'&gt;&gt;',
  • "Derniere Page"=>'&gt;&gt;&gt;',
  • "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 &agrave; 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&eacute; (Paix &agrave; leur &acirc;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 &agrave; 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>
<?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"=>'&lt;&lt;&lt;',
                  "X pages avant"=>'&lt;&lt;',
                  "Page precedente"=>'&lt;',
                  "Page_suivante"=>'&gt;',
                  "X pages apres"=>'&gt;&gt;',
                  "Derniere Page"=>'&gt;&gt;&gt;',
                  "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 &agrave; 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&eacute; (Paix &agrave; leur &acirc;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 &agrave; 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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

15 octobre 2009 22:26:25 :
Version 2 : Implémentation d'une classe d'objet
15 octobre 2009 22:42:18 :
Je me suis trompé dans le zip à téletransmettre.

 Sources du même auteur

CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC...
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ...
GÉNÉRATEUR HTML DE MAP POUR IMAGE CLIQUABLE
EQUIVALENT DE INNERHTML JAVASCRIPT, MAIS GLOBAL
GÉNÉRATEUR SQL D'INSERTION OU DE MISE À JOUR

 Sources de la même categorie

Source avec Zip ORM : DAO, ACTIVERECORD ET DBLIST par Reldan
Source avec une capture CET EXTRAIT PERMET D'AJOUTER DANS UN TABLEAU UNE AGRÉGATION ... par Denis007
EXPORT DE BASE AU FORMAT CSV par remib74
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip Source avec une capture PAGINATION JAVASCRIPT PHP MYSQL par cod57
Source avec Zip Source avec une capture GESTION DE SCOLARITÉ [PHP] ET [MYSQL] par ayoubshadow
Source avec Zip Source avec une capture CONVERTIR BASE FIREBIRD EN MYSQL par castelfrederic29

Commentaires et avis

Commentaire de aKheNathOn le 09/12/2008 18:10:14

Je viens de lire ton code - c'est assez mal organisé.

- Déjà regardes comment tu peux le refaire en objet, en plus vu les blocks de php dans les fonctions tu dois encore plus découper en fonctions.

- Tu mélanges du PHP avec du HTML et vu que t'as pas de classes ça limite la réutilisation / adaptation en tant que tel

- Tu ne gères pas les erreurs correctement - au lieu de faire un echo 'Erreur ... oups ...' fais plûtot un threw new Exception('description'); et c'est au niveau du controleur que tu décideras de la catcher ou de l'ignorer ou autre.

Pour moi une piste serait de reprendre from skratch ton code en te disant j'ai quoi comme entités (un peu comme en merise pour les bases de données). Alors tu as :

SQL.php :
- Un connecteur (qui est un singleton)
- Un Requetteur
- Un Analyseur de Requettes

TRI.php  :
- Une liste de résultats

Y'à pas mal de taf avant que ton code puisse être repris en tant qu'outil indépendant.

Bonne prog et bon courage,
Akh

Commentaire de 8Tnerolf8 le 09/12/2008 20:09:25

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 <body> 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.

Commentaire de aKheNathOn le 10/12/2008 10:14:01

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 '<p align="center" class="Votre style">Pages :</p><p align="center">';
  }
  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

Commentaire de 8Tnerolf8 le 10/12/2008 19:20:14

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.

Commentaire de aKheNathOn le 16/10/2009 09:50:00

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.

Commentaire de 8Tnerolf8 le 16/10/2009 18:42:44

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

mysql et php [ par nico606 ] Salut g un probleme je debute en php et je viens de charger un espace membre pour mon site il est evidemment en php et Mysql y a une page d'installati Pb syntax php mysql+systèmes fichiers [ par XFLR6 ] hellodsl pour ce titre un peu bizarre, mais je savais pas quoi mettre d'autre pour qualifier mon problème ...alors voila ;je V vous montrer un bout du tjr probleme de sessions. [ par Zebra1928 ] Hi all;j'ai toujours un probleme de sessions.qlq peut m'aider SVP ??, mon code est le suivant:******************************************************** Requête SQL [ par lagombe ] Bonjour à tous,voilà, j'ai une requête SQL qui me renvoie 5 lignes quand je l'éxécute avec phpmyadmin puis lorsque je l'utilise dans du code php (avec php/pear/mysql [ par manymal ] Bonjours &#224; toi source de connaissances. j'ai une erreur : "Fatal error: Call to a member function on a non-object in c:\program files\easyphp Problème de requête MySQL [ par kechidasamir ] Voila je veux cr&#233;e un formulaire ou je peux insert des champs nouveaux dans ma base de donnez qui existe d&#233;j&#224;. Ce formulaire &nbsp;</sp Problème requête MySQL [ par albator77 ] Bonjour,Je d&#233;bute en PHP, et j'ai un probl&#232;me :Si je fais la requ&#234;te suivante, il n'y a pas de probl&#232;me :$result_sql = mysql_query Requête SQL PHP-Access [ par fgiuliano ] Bonjour &#224; tout,J'ai un petit probl&#232;me. Je d&#233;bute dans la programmation en PHP et j'aimerai savoir pour commencer comment effectuer une Problème gestion quantité caddy php [ par kida28 ] KidaBoujour &#224; tous,J'ai un souci pour g&#233;rer la quantit&#233; dans mon caddie php.Voil&#224; l'errue qu'il m'affiche:Si vous avez une id&#233 utiliser $nomtable dans mes requettes [ par laubro ] Bonjour,Pour des raison de doublons, je voudrais pouvoir utiliser dans mes requette un $nomdematable en le configurant dans mon conf.php apparament &#


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales