Peut-on m'expliquer cette synthaxe svp (sprintf)

Répondre
rover
le 14/08/2008 à 12:14
rover
$req_adduser = sprintf("INSERT INTO ".DB_PREFIX."users
(groupval, pwd, mail, firstletter, activation)
VALUES
('subscriber', '%s','%s','%s', '%s');",
md5($randpwd), $email, strtolower($email[0]), $randactivation);

Je ne comprends pas la détermination des VALUE (.....) et leurs liaison avec les variables qui suive );", $var...

Merci d'avance
Rover
diablo
le 14/08/2008 à 12:52
diablo
cf la doc -> http://fr.php.net/manual/fr/function.sprintf.php

sachant que %s => chaine de caractère

en (très) gros c'est de la concaténation :/
jamais bien compris à quoi pouvait servir *printf en php, mais bon ...
.:[ UTB ]:. Diablo xo0 Au royaume des aveugles, les bornes sont rois...
LupusMic
le 14/08/2008 à 16:20
LupusMic
(diablo) L'utilité est fondamentale.

Premièrement, concaténer des chaîne est au mieux une obfuscation du code, au pire un trou de performance. En C++, l'opérateur d'injection et l'opérateur de concaténation ont aussi été pensés pour jeter aux gémonies les fonctions *printf. Mais le problème de performances, le manque de lisibilité et l'aspect pratique des formats fait que le standard comportera bientôt à nouveau cette fonctionnalité indispensable (actuellement il faut utiliser boost::format).

L'opérateur de concaténation alloue une nouvelle chaîne à chaque concaténation.

sprintf analyse la chaîne de format, analyse les paramètres qui lui sont fournis, alloue une chaîne, et écrit dedans.

L'autre avantage c'est qu'on peut aussi formater la chaîne. Ce peut être utile pour produire des fichiers CVS à champs fixe.

Sinon, pour la consultation de la documentation, je suis bien d'accord. Tout est exprimé en long et en travers dans la documentation, avec moults exemple. De plus, *printf est un standard en programmation, il faut le connaître.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
rover
le 15/08/2008 à 18:54
rover
Merci beaucoup j'y vois plus clair.
Je vis donc tenter de m'y atteler aussi.

smiley
Rover
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours