[PHP] requete simple

Fermé
JEAN JEAN - 20 avril 2009 à 17:45
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 - 21 avril 2009 à 08:47
Bonjour,
J'ai un soucis vraiment etrange sur une requete des plus simples..

voilà ma requete

$sql_derniers_coms = "SELECT * FROM coms WHERE type='news' ORDER BY id DESC LIMIT 0,3";
                            $derniers_coms = mysql_query($sql_derniers_coms);
                            $donnees4 = mysql_fetch_array($derniers_coms);


je voudrais donc afficher les 3 derniers commentaires
or je susi obligé de mettre LIMIT 0,4
pour obtenir 3 commentaires et ce n est pas les 3 derniers mais les 3 avant derniers (dernier-1 ; dernier -2 et dernier -3)

si l erreur est deja arrivée a l un d entre vous alors je serais heureux que vous m'expliquiez la solution
ou si tout simplement ja i une erreur dans mon code

je précise que j ai supprimé le premier commentaire dans ma table, mais bon.. ca devrait n avoir rien avoir

merci!
A voir également:

4 réponses

Bonjour

Lis la doc mysql, il y a des choses pas claires au niveau de l'optimisation avec LIMIT, par exemple :
Si vous utilisez LIMIT # avec la clause ORDER BY , MySQL va arrêter de trier dès qu'il a trouvé la première # au lieu de trier toute la table.
Ça va peut-être mieux en utilisant HAVING au lieu de WHERE
0
arf même avec having j ai le même problème
j irai me renseigner dans la doc mysql, mais si quelqu'un à eu le même soucis n hesitez tout de même pas à me dire vos solutions

merci
0
Personne d'autre?
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
21 avril 2009 à 08:47
A savoir, lorsque tu utilises mysql_fetch_x() le pointeur est automatiquement déplacé sur la ligne suivante.

Plus clairement :
$sql = "SELECT id, a, b FROM unetable ORDER BY id DESC LIMIT 3';
$query = mysql_query($sql);
                            
$donnees = mysql_fetch_array($query); // Ici on exploite la 1ère ligne et le pointeur est déplacé sur la seconde

while( $ligne = mysql_fetch_array($query) ) // n'affichera que 2 résultats
{
    // Code
}
Si tu as réellement besoin d'utiliser une première fois mysql_fetch_array(), il faut que tu déplaces le pointeur sur la 1ère ligne avec mysql_data_seek().
0