2009-07-27 7 views
0

J'ai un réseau social donc un blog est seulement vous pourriez dire un widget du site pour un utilisateur, de sorte que chaque utilisateur peut avoir un blog, je voudrais rendre ce blog aussi agréable que possible. Lorsque vous allez sur une page de blog d'un utilisateur, elle affiche tous les blogs du mois en cours.Comment les systèmes de blog font-ils cela?

Ma question, comment puis-je afficher une colonne sur le côté, comme ce Juillet 2009 Juin 2009 mai 2009 Avril 2009 Mars 2009 Février 2009

Le hic est il devrait seulement quelques mois de la liste depuis la l'utilisateur a rejoint le site jusqu'à ce jour, donc un utilisateur qui a rejoint il y a 2 ans à partir de maintenant aurait 24 de ces liens et un utilisateur seulement 1 mois ou plus ne verrait que 1?

Le système utilise php/mysql

Répondre

2

Supposons que vous:

  • veulent seulement prendre en mois de compte quand il y a un blog post de l'utilisateur
  • votre DB est MySQL

Vous pouvez essayer quelque chose comme ceci:

select concat(YEAR(date), '-', MONTH(date)) as month, count(*) as num 
from ab_post 
where user_id = 1 
group by YEAR(date), MONTH(date) 
order by YEAR(date) desc, MONTH(date) desc; 

Il sera:

    liste
  • les années/mois quand il a été un poste de l'utilisateur « 1 » (ce qui doit être dynamique, bien sûr)
  • pour chaque mois, donne le nombre de messages il y a

ce qui signifie que vous obtiendrez quelque chose comme ceci:

+--------+-----+ 
| month | num | 
+--------+-----+ 
| 2008-6 | 1 | 
| 2008-5 | 1 | 
| 2008-4 | 3 | 
| 2008-3 | 1 | 
+--------+-----+ 

chose à remarquer:

  • groupin g par année/mois
  • commande par date desc

Comme une note de côté, cela donnera mois à 1 chiffres de janvier à septembre: à vous de trouver le format dans l'aide de MySQL ;-)

Amusez-vous!

+0

Merci, c'est probablement la meilleure façon de le faire mais pour la performance chaque question compte et je pense que ce serait une requête supplémentaire, je stocke la date d'inscription des utilisateurs, pourrais-je faire quelques calculs pour déterminer les mois où ils ont été membre, même si un mois montrez-le – JasonDavis

+0

Comme je prends la date d'inscription des utilisateurs et la date d'aujourd'hui et retrun un tableau de mois entre d'une manière ou d'une autre – JasonDavis

+0

Si vous ne voiture e propos de l'affichage des mois sans post, votre solution est probablement la meilleure, oui :-) (mais, en tant qu'utilisateur final, je pense que c'est inhabituel - surtout si les mois sont des liens vers des pages qui affichent des messages de ce mois, ce qui signifie des pages sans poste); une autre solution, ne pas faire trop de demandes serait d'utiliser un mécanisme de mise en cache pour le "block" qui contient ces liens (évidemment, il y aurait un cache par utilisateur, et il doit être supprimé quand un post est créé/deleted/published/unpublished/...) –

1

Cela dépend de la façon dont votre base de données est structuré. Généralement, un article de blog a une date associée. Vous pouvez généralement interroger votre base de données pour obtenir une liste de mois uniques pour chaque utilisateur. Utilisez-vous un système OSS comme Wordpress, ou quelque chose de personnalisé? Pouvez-vous donner un aperçu de votre schéma?

+0

Je n'utilise aucun logiciel premade, c'est juste une table mysql de blog et il y a une colonne de date affichée ainsi qu'un userID posté ainsi je demande juste actuellement tous les blogs de ces utilisateurs mais je veux montrer une colonne le côté droit avec des liens pour voir par mois je pense que le moyen le plus simple serait probablement de calculer combien de mois ils ont été là depuis la date d'inscription qui est dans une variable de session – JasonDavis

Questions connexes