Une galerie de photo optimisée ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Une galerie de photo optimisée ?

par Ryle » 30 nov. 2006, 15:46

Toutafé ! :)
Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner.
http://dev.mysql.com/doc/refman/5.0/fr/select.html

par VaN » 30 nov. 2006, 15:44

Par ailleurs, m'est avis que tu dois avoir un soucis avec ton limit, qui va t'afficher de plus en plus d'enregistrement à chaque page au lieu de n'en ramener que 15 à chaque fois ;)
J'eessaye de comprendre ta phrase. Est ce que j'aurai mal lu la doc sur LIMIT ? la deuxieme valeur indique le nombre de ligne à prendre, et non la ligne a laquelle s'arreter ?

Je devrai donc l'utiliser comme ceci ?
LIMIT ".($page - 1) * $displayed.",".$displayed;

par MS-DOS_1991 » 29 nov. 2006, 18:55

Moi je verrais bien une seconde requête qui ne ferait qu'un count(*) (sans limit donc) pour connaitre simplement le nombre de résultat total en base :)
Je dirais même plus : COUNT (photo_id), pour ne compter les occurrences d'un seul champ indexé, ce qui s'avère (un peu) plus rapide que de compter tous les champs, surtout s'il y a beaucoup d'enregistrements ;)

par Ryle » 29 nov. 2006, 17:13

Moi je verrais bien une seconde requête qui ne ferait qu'un count(*) (sans limit donc) pour connaitre simplement le nombre de résultat total en base :)
C'est généralement la requête la plus optimisée pour une base de données :)

Par ailleurs, m'est avis que tu dois avoir un soucis avec ton limit, qui va t'afficher de plus en plus d'enregistrement à chaque page au lieu de n'en ramener que 15 à chaque fois ;)

Une galerie de photo optimisée ?

par VaN » 29 nov. 2006, 16:43

Bonjour,

je travaille sur une galerie de photos, et j'aimerais rendre l'affichage de cette galerie le moins lourd possible en requetes pour le serveur.

J'affiche 15 photos par page. Si il reste des photos à afficher, j'affiche un lien 'suivant'.

Si $page > 1, j'affiche également un lien précédent.

Or, j'ai un petit problème. Ma requête qui va chercher les photos ds la base est la suivante :
$sql =	"SELECT *
				FROM PHOTOS
				WHERE photo_style_id = '".$_GET['id']."'
				ORDER BY photo_id
				LIMIT ".($page - 1) * $displayed.",".$page * $displayed;
les variables :
$page : le numéro de la page en cours.
$displayed : le nombre de photos affichées par page (ici, 15)

Le problème est que je n'arrive plus à savoir si il y'a plus de 15 photos ds ma base. A l'origine, je récuperais ce nombre de photos total avec une requete sans LIMIT, et un compteur $count qui s'incrémentait à chaque tour de boucle. si $count > 15, je fermais la boucle, et affichait mon lien 'suivant'. J'ai changé de requête pour avoir quelques chose de plus propre.

Suis-je obligé de rajouter une deuxième requete, sans LIMIT, pour connaitre mon nombre max de photos ? Puis-je alors supprimer ma reqûete avec LIMIT, et garder un système de 'suivant/précédent' qui fonctionne ?

Selon vous, comment se fait une galerie, au niveau des requêtes ?