Pour faire défiler des objets dans une base de donnée, j'ai deux
images-flèches (prévious et next)
J'incrémente et je décrémente de "-1" et de "+1" dans la requête à
la base pour afficher mes objets, si l'id est zéro je n'affiche pas
l'image-fléche, idem pour le dernier objet.
Mais comme certain objets de ma base sont effacés cela ne marche plus.
Il me faudrait un paramêtre comme "précédent" et "suivant" pour la
requête sql à la place de -1 et +1 :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Surfoo
Il faut chercher s'il y a un élément avant et après l'élément en cours :
Pour le précedent :
SELECT id FROM oeuvre WHERE id < '$row_R_oeuvre['id']' ORDER BY id DESC LIMIT 0, 1
Pour le suivant :
SELECT id FROM oeuvre WHERE id > '$row_R_oeuvre['id']' ORDER BY id ASC LIMIT 0, 1
Et pour chacune des requetes tu regardes s'il y a un résultat (mysql_num_rows()>0) et dans ce cas tu affiche l'image adéquat. Ça t'évitera d'avoir ton "if ($row_R_oeuvre['id'] > 1)" et "if ($row_R_oeuvre['id'] < 145 )"
Baptiste.
Pour faire défiler des objets dans une base de donnée, j'ai deux images-flèches (prévious et next) J'incrémente et je décrémente de "-1" et de "+1" dans la requête à la base pour afficher mes objets, si l'id est zéro je n'affiche pas l'image-fléche, idem pour le dernier objet.
Mais comme certain objets de ma base sont effacés cela ne marche plus. Il me faudrait un paramêtre comme "précédent" et "suivant" pour la requête sql à la place de -1 et +1 :
Merci, quel code dois-je faire pour sauter de id 3 à l'id 6 par exemple ..
Il faut chercher s'il y a un élément avant et après l'élément en cours :
Pour le précedent :
SELECT id
FROM oeuvre
WHERE id < '$row_R_oeuvre['id']'
ORDER BY id DESC
LIMIT 0, 1
Pour le suivant :
SELECT id
FROM oeuvre
WHERE id > '$row_R_oeuvre['id']'
ORDER BY id ASC
LIMIT 0, 1
Et pour chacune des requetes tu regardes s'il y a un résultat
(mysql_num_rows()>0) et dans ce cas tu affiche l'image adéquat. Ça
t'évitera d'avoir ton "if ($row_R_oeuvre['id'] > 1)" et "if
($row_R_oeuvre['id'] < 145 )"
Baptiste.
Pour faire défiler des objets dans une base de donnée, j'ai deux
images-flèches (prévious et next)
J'incrémente et je décrémente de "-1" et de "+1" dans la requête à
la base pour afficher mes objets, si l'id est zéro je n'affiche pas
l'image-fléche, idem pour le dernier objet.
Mais comme certain objets de ma base sont effacés cela ne marche plus.
Il me faudrait un paramêtre comme "précédent" et "suivant" pour la
requête sql à la place de -1 et +1 :
Il faut chercher s'il y a un élément avant et après l'élément en cours :
Pour le précedent :
SELECT id FROM oeuvre WHERE id < '$row_R_oeuvre['id']' ORDER BY id DESC LIMIT 0, 1
Pour le suivant :
SELECT id FROM oeuvre WHERE id > '$row_R_oeuvre['id']' ORDER BY id ASC LIMIT 0, 1
Et pour chacune des requetes tu regardes s'il y a un résultat (mysql_num_rows()>0) et dans ce cas tu affiche l'image adéquat. Ça t'évitera d'avoir ton "if ($row_R_oeuvre['id'] > 1)" et "if ($row_R_oeuvre['id'] < 145 )"
Baptiste.
Pour faire défiler des objets dans une base de donnée, j'ai deux images-flèches (prévious et next) J'incrémente et je décrémente de "-1" et de "+1" dans la requête à la base pour afficher mes objets, si l'id est zéro je n'affiche pas l'image-fléche, idem pour le dernier objet.
Mais comme certain objets de ma base sont effacés cela ne marche plus. Il me faudrait un paramêtre comme "précédent" et "suivant" pour la requête sql à la place de -1 et +1 :
Les indices du tableau se suivant, tu peux aisément récupérer l'id précédent et suivant en décrémentant/incrémentant l'indice.
Par exemple, si tu es à l'enregistrement d'id 3, tu peux déterminer qu'il corresepond à l'indice 2 de tablo. Le précédent est à l'indice 2-1=1 soit l'id=$tablo[2-1]=$tablo[1]=2 Le suivant est à l'indice 2+1=3 soit l'id=$tablo[2+1]=$tablo[3]=6
Les tests pour savoir si tu es au début indice 0 du tableau et à la fin l'indice vaut n-1 (pour n correspondant à la taille du tableau) sont alors facile à faire.
Je pense que ca peut être une solution envisageable si le nombre d'enregistrements est peu élevé. Il est sans doute possible, de ne récupérer que les valeurs "autour" de l'id, ca dépend de ta boucle et de ce que tu comptes réellement faire.
Les indices du tableau se suivant, tu peux aisément récupérer l'id
précédent et suivant en décrémentant/incrémentant l'indice.
Par exemple, si tu es à l'enregistrement d'id 3, tu peux déterminer
qu'il corresepond à l'indice 2 de tablo.
Le précédent est à l'indice 2-1=1 soit l'id=$tablo[2-1]=$tablo[1]=2
Le suivant est à l'indice 2+1=3 soit l'id=$tablo[2+1]=$tablo[3]=6
Les tests pour savoir si tu es au début indice 0 du tableau et à la fin
l'indice vaut n-1 (pour n correspondant à la taille du tableau) sont
alors facile à faire.
Je pense que ca peut être une solution envisageable si le nombre
d'enregistrements est peu élevé. Il est sans doute possible, de ne
récupérer que les valeurs "autour" de l'id, ca dépend de ta boucle et de
ce que tu comptes réellement faire.
Les indices du tableau se suivant, tu peux aisément récupérer l'id précédent et suivant en décrémentant/incrémentant l'indice.
Par exemple, si tu es à l'enregistrement d'id 3, tu peux déterminer qu'il corresepond à l'indice 2 de tablo. Le précédent est à l'indice 2-1=1 soit l'id=$tablo[2-1]=$tablo[1]=2 Le suivant est à l'indice 2+1=3 soit l'id=$tablo[2+1]=$tablo[3]=6
Les tests pour savoir si tu es au début indice 0 du tableau et à la fin l'indice vaut n-1 (pour n correspondant à la taille du tableau) sont alors facile à faire.
Je pense que ca peut être une solution envisageable si le nombre d'enregistrements est peu élevé. Il est sans doute possible, de ne récupérer que les valeurs "autour" de l'id, ca dépend de ta boucle et de ce que tu comptes réellement faire.
-- Manu
Eric
Bonjour !
SELECT id FROM oeuvre WHERE id < '$row_R_oeuvre['id']' ORDER BY id DESC LIMIT 0, 1
Je ne suis pas sur que les apostrophes autour de $row_R_oeuvre['id'] soient ici nécessaires, on travaille sur des chiffres, pas sur des chaines de caractères. $row_R_oeuvre['id'] vient de la base de données, on peut considérer cette info comme plutôt fiable.
Et pour chacune des requetes tu regardes s'il y a un résultat (mysql_num_rows()>0) et dans ce cas tu affiche l'image adéquat. Ça t'évitera d'avoir ton "if ($row_R_oeuvre['id'] > 1)" et "if ($row_R_oeuvre['id'] < 145 )"
C'est vrai que ces valeurs en dur me font mal aux yeux.
Eric
Bonjour !
SELECT id
FROM oeuvre
WHERE id < '$row_R_oeuvre['id']'
ORDER BY id DESC
LIMIT 0, 1
Je ne suis pas sur que les apostrophes autour de $row_R_oeuvre['id'] soient
ici nécessaires, on travaille sur des chiffres, pas sur des chaines de
caractères.
$row_R_oeuvre['id'] vient de la base de données, on peut considérer cette
info comme plutôt fiable.
Et pour chacune des requetes tu regardes s'il y a un résultat
(mysql_num_rows()>0) et dans ce cas tu affiche l'image adéquat. Ça
t'évitera d'avoir ton "if ($row_R_oeuvre['id'] > 1)" et "if
($row_R_oeuvre['id'] < 145 )"
C'est vrai que ces valeurs en dur me font mal aux yeux.
SELECT id FROM oeuvre WHERE id < '$row_R_oeuvre['id']' ORDER BY id DESC LIMIT 0, 1
Je ne suis pas sur que les apostrophes autour de $row_R_oeuvre['id'] soient ici nécessaires, on travaille sur des chiffres, pas sur des chaines de caractères. $row_R_oeuvre['id'] vient de la base de données, on peut considérer cette info comme plutôt fiable.
Et pour chacune des requetes tu regardes s'il y a un résultat (mysql_num_rows()>0) et dans ce cas tu affiche l'image adéquat. Ça t'évitera d'avoir ton "if ($row_R_oeuvre['id'] > 1)" et "if ($row_R_oeuvre['id'] < 145 )"
C'est vrai que ces valeurs en dur me font mal aux yeux.
Eric
Cbc
Quelque chose du style :
$id = $row_R_oeuvre['id']; $query = " SELECT id FROM oeuvre ORDER BY id ASC LIMIT $id, {$id+1}";
ne devrait-il pas marcher?
Quelque chose du style :
$id = $row_R_oeuvre['id'];
$query = "
SELECT id
FROM oeuvre
ORDER BY id ASC
LIMIT $id, {$id+1}";