Gros problème de logique php

Fermé
Flob23 - 24 mai 2013 à 07:51
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 27 mai 2013 à 01:18
Bonjour,

D'abord j'espère que vous serais indulgent j'ai pas une grosse xp en php

Je suis en train de construire un blog et je bute sur un problème que je n'arrive pas a résoudre. Je suis en train d'imaginer la pagination qu'aura mon site, j'aimerais qu'il y est 6 article par page et entre ces 6 articles j'aimerais qu'il y est 3 article au hasard tiré par sql. Sauf que j'ai n'ai aucune idée de la marche a suivre pour intégré ça dans ma code ?
Une illustration de ce que je souhaite : http://img841.imageshack.us/img841/2308/artba.jpg

Mes requête SQL ou j'ai déjà fait le rand
$sql ='SELECT * FROM articles DESC LIMIT 6 ';
$posts = $DB->query($sql);

$sql ='SELECT id,image FROM articles ORDER BY RAND() LIMIT 3';
$rand = $DB->query($sql);	


mon code php:

			<?php foreach ($posts as $post): ?>
            <h2><?php echo $post->titre; ?> </h2>
			<img src="<?php echo $post->image ?>"/>
			<a href='article.php?r=<?php echo ($post->id); ?>'><button>Lire la suite</button></a>
			<?php endforeach ?>

			<?php foreach ($rand as $rand): ?>
			<a href='article.php?r=<?php echo $rand->id ?>'/> <img src="<?php echo $rand->image ?>"/></a>
			<?php endforeach ?>



donc voila, comment je peux faire comprendre a php que je veux qu'il mette mes rand pile au milieu des 6 articles et non a la fin comme c'est le cas actuellement ? merci d'avance pour votre aide

4 réponses

Acid_ Messages postés 503 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 29 août 2014 158
24 mai 2013 à 08:11
Bonjour,

J'ai du mal à saisir l'intérêt d'avoir des articles disposés aléatoirement sur un blog.
Le but premier est bien d'afficher les articles du plus récent au plus ancien non ?
De plus, il faut s'assurer d'éviter les doublons d'une page à l'autre, chose qui n'est pas forcément aisée (Aussi bien pour le développeur que pour les potentiels visiteurs qui doivent voir d'un coup d'oeil s'il y a du nouveau contenu).
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
24 mai 2013 à 15:00
Salut !

Je suis d'accord avec Acid_ ! Ca n'a pas forcément de sens de les mettre en pleins milieu comme ca, mais tu peux très bien les mettre dans le footer ou dans le bas de ta sidebar, là ca a déjà plus de sens de mon point de vu ;-)
Après effectivement ca veut dire que les articles que tu tire pour le footer ne doivent pas déjà figuré sur la page que consulte l'utilisateur, et la ca "complique" la chose.

Donc à toi de nous dire ce que tu souhaites réellement après nos conseils, et on t'aideras :)
0
Salut a vous 2 et merci de vos réponse !

En fait je ne compte pas faire un blog lambda... mes articles seront des images.

Je compte regrouper les meilleurs images d'internet donc mon blog pourra se trouver très vite avec des milliers d'articles et des centaines de page. D'ou l'intérêt de mettre un bloc d'images aléatoire au milieu pour celui qui n'a pas forcément envie de se faire toute les pages. Cependant je retiens l'idée du footer qui est sympa

Sinon pour mon bloc au milieu je crois avoir trouvé mais cela semble compliqué... et pas super opti

Créer deux table article1 , article 2 qui contiendrons mes articles
Prendre les trois premier articles de article 1 du plus récent au plus ancien
les afficher sur mon blog en foreach
mettre ensuite en dessous donc ce fameux bloc aléatoire avec un rand sur article 1 et article 2 en limit 3
et enfin troisieme foreach sur ma table article 2 cette fois qui contiendra les 3 derniers articles de ma page.

J'ai bon ou y a moyen de faire plus simple?

bonne soirée !
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
27 mai 2013 à 01:18
Si c'est vraiment ce que tu veux faire ...

Tu fais deux requetes en BDD :
La première correspond à tes 6 articles, un order by te permettra de récupérer tes articles par la date
Ta deuxieme te cherche les 3 aléatoires en excluant les 6 id récupéré au dessus.

Ensuite soit tu fais ton foreach et tu affiches tes 6 articles, puis tes 3 articles et tu les places ensuite avec du css.
Soit tu boucles 3 fois sur ta première requete, ensuite un foreach sur ta deuxieme, et tu fini avec les trois derniers de la premiere requete
0