@Cdie :
Stocker une date dans un VARCHAR est à mon sens une grosse erreur, il y a le type date pour cela.
Tu gagneras un temps précieux à l'utiliser. La requête que je te proposais ne fonctionnera pas avec un VARCHAR (désolé d'avoir oublié l'année, Gibozsec a apporté l'info)
@gibozsec :
Pour finir, je te conseil d'utiliser php plutôt que MySql, une requête ou il n'y a pas d'appel à des fonctions est forcement plus rapide qu'une ou il y a des fonction. En plus, l'utilisation de NOW() empêche l'utilisation de la cache MySql.
=> pour le coup certainement, encore que ça ne soit pas gagné, surtout avec l'utilisation de 3 fonctions PHP + l'assignation aux variables.
De toute façon ça doit être négligeable et il reste difficile de se faire une idée là dessus sans connaitre le contexte (structure de la DB, taille de la table, fréquence des appels, etc ...)
Autre point sur lequel j'ai un gros doute, c'est la mise en cache d'une requête sur une date avec un joker.
Il me semble, mais je n'en suis pas certain, que le moteur mySQL mettra en cache un "LIKE '2010-02-27'" mais pas un "LIKE '2010-02-%'" ... à tester.
Bref, je préfère intégrer le traitement en SQL, je trouve cela plus "propre", mais c'est une question de goût.
Selon moi l'optimisation n'est pas qu'une question de rapidité d'exécution, mais également de lisibilité du code, de réutilisation, etc ... etc ... quitte à perdre qq centièmes.
Si l'on voulait réellement optimiser :
$tab = explode("/",date("d/m/Y",time()));
$mois = $tab[1];
$an=$tab[2];
$filtre = "$mois/$an";
$data=
mysql_query("SELECT
* FROM tachat WHERE pseudo = '$_SESSION[pseudo]' AND date LIKE '%$filtre%'") or die(mysql_error());
$nombre =
mysql_fetch_row($data);
en bleu :
c'est totalement inutile de procéder ainsi, autant mettre un date('Y') et un date('m') directement dans la requête et supprimer ces lignes.
en orange :
les fonctions mysql_* sont dépassées, mieux vaut utiliser PDO ou mysqli.
en rouge :
Ne vaut il pas mieux sélectionner les champs dont tu as réellement besoin ? (c'est peut être déjà le cas ?)
+ ce qui a déjà été dit concernant le premier % et le die.
Par ailleurs le nom de ta variable $nombre laisse penser à d'autres pbs.
Que souhaites tu faire au juste ?
Cordialement,
Kohntark -