Actualites | Forum |Archives
Le magazine des décideurs et webmasters qui gagnent !
Inscription | Livre d'or | Plan du site | 15 visiteurs actifs
   
A la Une
Actualité
Dossiers
Communiqués
Coin Technique
Agenda des salons
Emploi
Echange de liens

Archives
Sélection
Expérience qui parle
Internet quotidien
Tous les dossiers

Forum
Forum SAM-MAG

Guides
Check-list de la promotion des sites
Promouvoir et référencer les sites web

Contact
Nous contacter
Newsletter
La protection des données personnelles


 
  Utilisation de printf et sprintf ?
Dossier "SAM l'Informaticien" du 24 juillet 6 août 2000 par Daniel Lucazeau

omment ne pas avoir de problèmes avec les quotes et double-quotes dans les chaînes que nous formatons. Nous sommes souvent amenés à créer des chaînes de requêtes SQL à proposer au SGBD.

Quand la requête est statique, c'est à dire qu'elle n'a aucune partie variable il n'y a pas de problème. On choisit par exemple d'encadrer la requête par des " (double-quotes) et toutes les constantes chaînes à l'intérieur par des simples quotes. On gère tout et on est tranquille.
 
Le problème surgit avec des requêtes dynamiques qui mélangent allègrement les parties constantes avec des parties issues de formulaires mis à la disposition des utilisateurs. J'utilise alors la technique suivante :
$MaChaine= sprintf( "ma_chaine_originale", valeur1, valeur2,..);
"ma_chaine originale" comprenant des %d et des %s.
 
PHP, JavaScript et HTML quand tout s'embrouille...

J'ai du avoir une fois à créer des boutons INPUT de façon dynamique (en PHP) avec la gestion du OnClick qui est lui-même une chaîne de caractères de code JavaScript, un des paramètres de la chaîne était de type chaîne. J'étais perdu dans l'imbrication des quotes et des doubles-quotes, je m'en suis sorti en reprenant la technique précédente : (je ne peux pas redonner l'original mais c'était plus complexe que cela
printf("<input type='Button' name='%s' onclick='return fonction( %s)'>", "uneValeur", '"uneAutreValeur"');
Ce qui en sorti dans le HTML donnera
<input type='Button' name='uneValeur' onclick='return fonction( "uneAutreValeur")'>
 
P
our aérer le code...

Depuis j'utilise cela régulièrement, je stocke mes chaînes avec les parties variables dans un fichier à part et je formate la chaîne finale avec printf et sprintf, mon code s'en trouve alléger, il est maintenable, je m'y retrouve mieux.
Et pour ne plus m'embarrasser avec les requêtes par exemple, j'ai même fait des fonctions avec un nombre variables de paramètres qui me renvoient ma chaîne de requêtes à exploiter avec mes classes d'accès aux données. En effet toutes les requêtes étant dans un fichier, une modification est immédiatement répercutée dans tous les modules. .
On retrouve là encore un piste de réutilisabilité, il est rare qu'une requête ne servent que dans un module, je ne vous en dis pas plus vous voyez bien les économies réalisables. Cela permet de partager aussi les développements entre plusieurs personnes le cas échéant.
 
Je préfère de loin cette technique à celle qu'autorise PHP qui consiste à inclure les variables dans un chaîne : ".... $var ...". On perd en lisibilité, en coloration syntaxique suivant les éditeurs et la chaîne doit absolument être encadrée par des double-quotes.
 
Paramétrage du logiciel...

Les logiciels que l'on trouve sur le net sont écrits comme cela, principalement pour les messages à destination de l'utilisateur, c'est un excellent moyen d'avoir ces messages en plusieurs langues.
Je vous laisse le soin de décortiquer certains outils qui maîtrisent cela à l'extrême.
Bon courage.

note : j'ai pris PHP comme support, mais les fonctions issues de C printf et sprintf existent en Perl par exemple.

Daniel Lucazeau
Ajornet.com
Chef de projet Internet
Développeur informatique

Tous droits réservés - Reproduction même partielle interdite sans autorisation préalable

 
 
Google
 
Web www.sam-mag.com
 

Copyright © ACORUS 2004. All Rights Reserved

- Sam-Mag.com Referencement-Sur-mesure - Referencer-Site-Web.com
Visibilite-Internationale.com - Referencement-Immobilier.net