affichage de lignes (bdd) mais sans numero d'id

Nat
Petit nouveau ! | 7 Messages

19 mars 2009, 00:03

Bonjour,

J'essaye de faire un script mais j'ai beau tourner le problème dans tous les sens, je ne vois pas comment faire.

Je veux afficher sur ma page 4 images (par url) dans un tableau de 4 cases (2 colonnes - 2 lignes).
mais les images dans ma bdd auront une date de validité, et elles seront effacées de ma bdd dès que la date sera dépassée. le changement se fera 3 fois par semaine (jusque là ça va)
je vais utiliser 2 tables, une pour mes images et une autre pour les infos d'affichages

Mais je veux afficher 4 images et au prochain changement 4 autres images....etc....
le seul problème c'est que quand les lignes vont être effacées de ma table, les id aussi, je ne peux donc pas "jouer" sur les "id" pour mon affichage.
et du coup, je ne sais pas comment faire.

a moins de faire un affichage aléatoire, mais dans ce cas là, je ne voudrais pas que des images reviennent dans la semaine, il faudrait qu'elle s'affichent une seule fois par semaine.

Y'a t'il un moyen pour lui dire d'afficher 4 lignes , et ensuite les 4 suivantes...etc.... ?

Pour simplifier le problème, je me suis dit que j'allais faire ça d'abord avec une seule image, mais même là je ne vois pas comment faire.

en fait, ma question de départ, c'est : peut on afficher une ligne d'une table sans lui préciser un champs ? par exemple, je veux afficher la troisième ligne de ma table (mais pas l'id n°3)

J'espère que c'est compréhensible, parce que moi c'est mélangé là dans mon cerveau :D

Merci
Nat

Eléphant du PHP | 254 Messages

19 mars 2009, 08:01

Salut

Oui c'est un peu confus :)

Mais peut être que ceci peut t'aider

Code : Tout sélectionner

SELECT * FROM table LIMIT 5,10; # Retourne les enregistrements 6 à 15

Nat
Petit nouveau ! | 7 Messages

19 mars 2009, 13:07

salut,

oui j'y avais pensé, mais le problème avec limit, si j'ai bien compris c'est que je vais devoir en faire une page complète :D

..limit 0,4
..limit 4,8
..limit 8,12
etc..etc....

à moins qu'on puisse mettre une variable dans limit ?
je croyais que non, j'avais encore rien trouvé la dessus dans mes recherches, mais il semblerai que c'est possible, je viens de tomber sur une page ou quelqu'un l'a fait.
ça résoudrait mon problème du coup.

je vais tester avec ça.

Merci
Nat

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 mars 2009, 16:57

Alors petite précision concernant le LIMIT, tu spécifies le nombre d'enregistrements à afficher et à partir duquel tu veux les afficher :
limit 0,4 : affiche 4 éléments à partir de l'élément 0
limit 4,4 : affiche 4 éléments à partir de l'élément 4
Alors que
limit 8,12 va afficher 12 éléments à partir du 8ème élément :)

Quoi qu'il en soit, ta requête SQL n'est au départ rien de plus qu'une chaine de caractère que php va transmettre à ta base de données. Tu peux donc très bien exploiter cette chaine avec php en modifiant ou en calculant une partie de celle-ci.

Autre solution, tu peux aussi tout simplement te contenter d'afficher les 4 dernières images ajoutées en base en triant ta requête par id décroissant et en affichant toujours les 4 premiers résultats de cette requête :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Nat
Petit nouveau ! | 7 Messages

19 mars 2009, 17:21

ah oui :D j'avais pas fait attention.
t'as bien fait de le préciser, dans ce cas là je serai à 8,4 et non 8,12 :D

le coup des 4 dernières images, ça n'ira pas, vu que je vais changer l'affichage tous les 2 jours et je ne vais pas en rajouter tous les jours.
De plus je veux faire un roulement sur toutes les images de la base.

Finalement ça va s'avérer beaucoup plus difficile que ce que je pensais. :D

j'aurai donc un limit $d,4 avec $d qui va varier de 4 en 4 et qui va revenir à zéro quand on aura atteint la fin de la table.
là ou ça va se corser, c'est quand il ne restera par exemple que 2 lignes à la fin;
il va falloir donc que je mette une condition de test pour lui dire, s'il reste deux lignes, affiche les deux dernière et les 2 premières...et pareil s'il reste une ligne et 3 lignes...
ou alors peut être plus simple, j'ignore carrément s'il reste moins de 4 lignes à la fin et je repars au début. les images s'afficheront de toutes façons à un moment ou à un autre vu que j'en rajouterai toujours...oui je crois que ça me va bien comme solution ça :D

bon ben au boulot :D

Merci

edit: j'ai fini par réussir avec un petit calcul sur ma variable $d (pour limit) et une comparaison avec le nombre de lignes de ma table.
finalement le plus dur, ça a été d'afficher dans le tableau.
pas facile ça :D

j'ai fini par recopier un bout de code que j'ai trouvé auquel je n'ai absolument rien compris, mais ça fonctionne alors c'est l'essentiel. :D
Nat