par
furiouslol » 21 déc. 2008, 18:21
Pas de soucis pis je t'ai peut etre un peu embrouillé avec mes histoire de requete alors j'assume ^^
Oui le % c'est la syntaxe de sprintf(), que j'utilise de préférence quand je veux construire des chaine de caracteres qui comportent beaucoup de variables, ici une requete SQL, ca rend le code plus lisible je trouve, et donc plus facilement maintenable (et compréhensible)
Un exemple de sprintf
$mot = "world";
$chaine = sprintf ("Le mot contenu dans ma variable est : %s", $mot);
echo $chaine;
// ceci affiche "Le mot contenu dans ma variable est : world" a l'écran
il existe plusieurs sortes de %, ce sont des indication sur le formatage qu'on veut donner a la variable, en général on se sert de %s (s comme string), mais parfois on a besoi de formatter différement nos variables, comme par exemple pour un float qui contient beaucoup de chiffres apres la virgules, le %f permet par exemple de n'en afficher que 2 (mais la doc explique ca mieux que moi ^^)
D'ailleurs je viens de remarquer une erreur a ce sujet dans le code que je t'ai filé (je l'avais dit hein ^^)
remplace
// requete fonctionnant dans tous les cas
$sql_insert = "INSERT INTO spouk_scores (Jeu, Utilisateur, Score, Bonus, Bonus2, Bonus3, Bonus4, Bonus5)
VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )
ON DUPLICATE KEY UPDATE
Score = '%s',
Bonus = '%s',
Bonus2 = '%s',
Bonus3 = '%s',
Bonus4 = '%s',
Bonus5 = '%s' "
, mysql_escape_string($game_name)
, mysql_escape_string($user['id'])
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
);
par
// requete fonctionnant dans tous les cas
$sql_insert = sprintf ("INSERT INTO spouk_scores (Jeu, Utilisateur, Score, Bonus, Bonus2, Bonus3, Bonus4, Bonus5)
VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )
ON DUPLICATE KEY UPDATE
Score = '%s',
Bonus = '%s',
Bonus2 = '%s',
Bonus3 = '%s',
Bonus4 = '%s',
Bonus5 = '%s' ;"
, mysql_escape_string($game_name)
, mysql_escape_string($user['id'])
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
);

Pas de soucis pis je t'ai peut etre un peu embrouillé avec mes histoire de requete alors j'assume ^^
Oui le % c'est la syntaxe de sprintf(), que j'utilise de préférence quand je veux construire des chaine de caracteres qui comportent beaucoup de variables, ici une requete SQL, ca rend le code plus lisible je trouve, et donc plus facilement maintenable (et compréhensible)
Un exemple de sprintf
[php]$mot = "world";
$chaine = sprintf ("Le mot contenu dans ma variable est : %s", $mot);
echo $chaine;
// ceci affiche "Le mot contenu dans ma variable est : world" a l'écran[/php]
il existe plusieurs sortes de %, ce sont des indication sur le formatage qu'on veut donner a la variable, en général on se sert de %s (s comme string), mais parfois on a besoi de formatter différement nos variables, comme par exemple pour un float qui contient beaucoup de chiffres apres la virgules, le %f permet par exemple de n'en afficher que 2 (mais la doc explique ca mieux que moi ^^)
D'ailleurs je viens de remarquer une erreur a ce sujet dans le code que je t'ai filé (je l'avais dit hein ^^)
remplace
[php] // requete fonctionnant dans tous les cas
$sql_insert = "INSERT INTO spouk_scores (Jeu, Utilisateur, Score, Bonus, Bonus2, Bonus3, Bonus4, Bonus5)
VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )
ON DUPLICATE KEY UPDATE
Score = '%s',
Bonus = '%s',
Bonus2 = '%s',
Bonus3 = '%s',
Bonus4 = '%s',
Bonus5 = '%s' "
, mysql_escape_string($game_name)
, mysql_escape_string($user['id'])
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
); [/php]
par
[php] // requete fonctionnant dans tous les cas
$sql_insert = sprintf ("INSERT INTO spouk_scores (Jeu, Utilisateur, Score, Bonus, Bonus2, Bonus3, Bonus4, Bonus5)
VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )
ON DUPLICATE KEY UPDATE
Score = '%s',
Bonus = '%s',
Bonus2 = '%s',
Bonus3 = '%s',
Bonus4 = '%s',
Bonus5 = '%s' ;"
, mysql_escape_string($game_name)
, mysql_escape_string($user['id'])
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
, intval($score)
, intval($bonu)
, intval($bonu2)
, intval($bonu3)
, intval($bonu4)
, intval($bonu5)
);
[/php] :roll: