12-12-2007, 02:42 PM
Sephi-Chan a écrit :Lys91 a écrit :sprintf("SELECT nom, xp FROM joueur WHERE joueur_name = '%s' AND truc='%s' AND machin='%s' LIMIT %d, %d", $name, $truc, $machin, $start, $end);
$query='';
$query.='SELECT nom, xp FROM joueur ';
$query.='WHERE joueur_name =\''.$name.'\' ';
$query.='AND truc=\''.$truc.'\' ';
$query.='AND machin=\''.$machin.'\' ';
$query.='LIMIT '.$start.', '.$end;
Apres c'est une question de point de vue sur la lisibilite du code j'en convient et pour la concatenation avec quelques regles de bonne pratique ca pose peu de soucis.
Je ne pense pas posseder la verite mais une solution alternative tout a fait viable.
(clavier qwerty encore une fois dsl)
Encore une fois que je pense que ta solution n'apporte - objectivement - que du mauvais. Si tu penses qu'elle a un quelconque intérêt, n'hésite pas à expliquer pourquoi.
Voilà ce que peut donner une requête un poil plus complexe avec sprintf() :
Code PHP :<?php
sprintf("
SELECT nom, xp
FROM joueur
WHERE joueur_name = '%s'
AND truc='%s'
AND machin='%s'
LIMIT %d, %d",
$name,
$truc,
$machin,
$start,
$end
);
Je note que tu parlais des tests internes (avec l'opérateur ternaire, je suppose), c'est clairement un ennemi de la lisibilité ! On peut les faire avec sprintf(), mais c'est à mon avis - dans la plupart des cas une bêtise : si on veut de la clarté (en utilisant sprintf()), ce n'est pas pour la ruiner à coup d'opérateurs ternaires.
L'utilisation de sprintf() peut paraître plus coûteuse en ressources, mais je pense que c'est en fait économique puisqu'il évite de recourir à des variables intermédiaires puisque l'on peut utiliser des fonctions directement dans les arguments.
Je précise quand même que je n'ai rien contre toi, je poste dans le seul but de fournir des clés pour un code plus propre et lisible aux lecteurs.
Sephi-Chan, qui songe à se faire une userbar "Sprintf() user"...
@ X-ZoD > Je suggère de mettre les liens sous forme de liste, de manière à avoir quelque chose de clair. Ces URLs mises les unes à la suite des autre c'est... assez rebutant.
Aucun soucis, debattre me pose pas de soucis.
On peut aussi appelle une fonction dans la methode "concatenation"
[....]
$query.='AND machin=\''.ma_function($machin).'\' ';
[....]
Ou j'ai pas compris de quoi tu parlais ^^.
Le truc de Row est interessant aussi mais la pour le coup on perd un peu en lisibilite (imo).
On derive du sujet je pense qu'un modo pourrait sinder les post.
Si d'autre personne utilise d'autre methode je serai interesse de les connaitre.
PS : quel variable intermediaire ?