Bonjour à tous,
je suis en train de me réaliser une galerie photo,
et j'aimerais faire un système qui me permet de passer d'un album à un autre facilement,
ça se présenterais dans ce style :
<-- Album paysage // Album actuel // Album sport mécaique -->
( mais stylisé bien sur ;-) )
Je pensais pour cela, faire une requête afin de récupérer les categorie, et le stocker dans $records
$records = $this->query("
SELECT id, title, meta_title
FROM {$this->table}
");
cette requète me retourne :
array (size=4)
0 =>
object(App\Entity\Photographie_categoriesEntity)[9]
public 'id' => string '1' (length=1)
public 'title' => string 'Animaux' (length=7)
public 'meta_title' => string 'animaux' (length=7)
1 =>
object(App\Entity\Photographie_categoriesEntity)[10]
public 'id' => string '2' (length=1)
public 'title' => string 'Sport de contact' (length=16)
public 'meta_title' => string 'sport-de-contact' (length=16)
2 =>
object(App\Entity\Photographie_categoriesEntity)[11]
public 'id' => string '3' (length=1)
public 'title' => string 'Nature' (length=6)
public 'meta_title' => string 'nature' (length=6)
3 =>
object(App\Entity\Photographie_categoriesEntity)[12]
public 'id' => string '4' (length=1)
public 'title' => string 'sport mecanique' (length=15)
public 'meta_title' => string 'sport-mecanique' (length=15)
je pourrais parcourir le tableau dans un foreach, mais je voudrais qu'il me cible l'album en cours, puis selement me laisser la possibilité d'accéder à l'album précédent ou le suivant.
Le problème, c'est que je voulais placer le curseur de lecture au bon endoit dans le array
current( $records );
Et après faire un next et prev :
next( $records );
prev($records );
Mais si j'ai bien compris ce n'est pas possible de déplacer un curseur dans un array();
Quelqu'un aurait une piste pour m'éguiller ?
D'avnce merci :-)
Bonsoir,
Pourquoi ne pas utiliser la clause LIMIT ?
Et gérer le cas ou tu es sur la 1ère et la dernière "page"
@Carouge10 ca fonctionne niquel en utilisant le LIMIT, mais il faut le combiner au ORDER BY id pour me avoir a chaque fois la bonne ligne,
voila comment j'ai fait :
$prev = $this->query("
SELECT id, title, meta_title
FROM {$this->table}
WHERE id < $current_id
ORDER BY id DESC
LIMIT 1
");
$next = $this->query("
SELECT id, title, meta_title
FROM {$this->table}
WHERE id > $current_id
ORDER BY id ASC
LIMIT 1
");
si il y a d'autre soltion peut etre plus propre je suis prenneur :-)
Après quelques recherche la bonne pratique ( je penses ) serais d'utiliser les requete sql en utilisant un : WHERE id < $current_id
$prev = $this->query("
SELECT id, title, meta_title
FROM {$this->table}
WHERE id < $current_id
");
Maintenant le problème, c'est qu'il me retourne tous les élément inférieur à ID
la solution serais d'utiliser un max( id )
$prev = $this->query("
SELECT max( id ), title, meta_title
FROM {$this->table}
WHERE id < $current_id
");
le problème c'est qu'il le retoune dans mon tableau le max( id ) :
array (size=1)
0 =>
object(App\Entity\Photographie_categoriesEntity)[10]
public 'max( id )' => string '1' (length=1)
public 'title' => string 'Animaux' (length=7)
public 'meta_title' => string 'animaux' (length=7)
et ça me fait planter les function que j'utilise après
"ce site est là pour vous présenter mon travail"
merci pour tes remarques, c'est toujours agréable d'avoir des retours, qu'il soit possible ou non.
je suis
Merci pour la correction du texte, et les remarques, je suis d'accord avec tous ce les points, le seul auquel j'avais penses c'etait pour le public dans les URL.
Je vais apporter les modifications rapidement.
Encore merci :-)