Bonsoir,

J'aimerais organiser les posts de mon blog, (le plus récent en haut et donc les plus anciens en dessous), vu que j'ai l'intention d'en poster souvent j'ai décidé de me baser les secondes entre chaque post (car je ne peux pas faire d'order by avec ma requête).
J'utilise cette requête :

$req = $cnx->query("SELECT * FROM posts")->fetchAll();

Ma question est donc : Selon moi comme je pourrais m'y prendre pour utiliser les secondes pour organiser mes posts ?

12 réponses


Huggy
Réponse acceptée

Si on suit @slk + @Carouge10
il suffit de trier par l'id (autoincrement) en mode descendant

$req = $cnx->query("SELECT * FROM posts ORDER BY id DESC")->fetchAll();

En pratique on ne récupère jamais toute une table, on pagine par 10 ou 20 à la fois (LIMIT)

keulu
Réponse acceptée

$req = $cnx->query("SELECT * FROM posts ORDER BY created DESC")->fetchAll(); me parait le mieux effectivement.

created peut etre une colonne de type "timestamp" ou encore "datetime" peut importe.

Salut,

Ça me parait impossible sans 'ORDER BY',
pourquoi est-ce que tu ne peux pas l'utiliser ?

Bonjour,

J'attends aussi de savoir la raison.
Par contre cela est possible de faire ce que tu demandes sans "order by".

On sait que quand on fait une insertion dans la BDD, celui-ci est mis en dernier. Donc ils sont trier du plus ancien au plus récent.
Il suffit, une fois les données récupérer de la BDD, d'inverser le tableau contenant les résultats afin d'avoir le bonne ordre.

Salut,

La solution d'un ORDER BY sur la date est bien mieux que sur l'id parce que tu ne contrôles pas l'id. Si tu veux modifier l'ordre d'apparition, tu ne peux pas.

@huggy

Sauf que là, tu ne réponds pas à sa demande car il ne peut pas utiliser "order by". Pourquoi, nous ne le savons pas encore.

@Carouge10 ah merde !!! en effet
du coup il ne lui reste que la solution de trier son tableau
et il vaut mieux réfléchir au type de fetch, éviter fetch_both qui complique la structure du tableau

Salut,
Si tu ne peux pas utiliser ORDER BY, parcours tes resultats insères chacun d'eux dans un même tableau [strtotime(ma date) => mon resultat]

Laznet
Auteur

Bah "je ne peux pas", parce que j'ai fais confiance a mon IDE, celui-ci soulignait "Order by", et que ça me semblait drole d'appliquer un order by sur ce type de requête. Oui il n'y a pas de réel raison.

Il indique quel erreur pour le ORDER BY ?
Du coup , vous pouvez l'utiliser comme le montre Huggy. Soit par l'id, soit par la date.

C'est quoi ton IDE ?
Il faut qu'un IDE soit très intelligent pour analyser le contenu des chaines et en déduire le langage utilisé dedans (ici SQL) et de quel SGBD il s'agit (syntaxe différente ...)

Soit par l'id, soit par la date.

Non, par la date. Il n'y a pas de raison de le faire par l'ID. Cf mon message précédent.