La jointure de tables dans MySql pour stocker vu l'article id
Question
J'ai un site Joomla que je développe et je suis un novice quand il s'agit de MySql.J'ai besoin d'être en mesure de faire le suivi du nombre d'articles d'un utilisateur a consulté et ensuite être capable d'afficher le nombre total d'articles consultés sur le devant de la fin de la page (par exemple si l'utilisateur a consulté 3 articles, il faut juste l'écho de la valeur " 3 " pour le front-end).
Je tiens également à être en mesure de stocker l'id de l'article et alias et être en mesure d'extraire les données par la suite si nécessaire.L'idée est que l'utilisateur sera en mesure de voir comment beaucoup d'articles qu'ils ont vu et peut-être même être en mesure de revenir en arrière et revoir ces articles (ils ne seront plus affichés une fois consultées).
Je n'ai pas la moindre idée de par où commencer, autant que la construction de la table pour stocker ces données, et comment adhérer à l'utilisateur actuel.Toute aide serait grandement appréciée, même si elle est juste m'indiquer un bon tutoriel ou une ressource.
La solution
Il y a trois approches, je crois:
Vous pouvez ajouter une colonne à votre table utilisateur pour stocker les articles visionnés. Vous pouvez stocker les ID d'article sous forme de valeurs séparées par des virgules. Chaque fois qu'un nouvel article est consulté, vous pouvez ajouter un nouvel article d'article. Sur le front-end, vous pouvez récupérer cette chaîne avec une instruction SELECT et l'analyser pour obtenir les identifiants individuels.
Cette méthode peut ne pas être pratique avec un CMS tel que Joomla que l'ajout aux colonnes aux tables système demande des problèmes.
Vous créez une nouvelle table à deux colonnes, une colonne contient l'ID utilisateur et l'autre dispose de la liste des articles visualisés par virgule. Il y aurait une relation 1-0 entre la table utilisateur existante et la nouvelle table.
Une join simple vous permettra de récupérer les articles visualisés associés à l'utilisateur associé.
Vous créez une nouvelle table d'historique de deux colonnes qui stocke l'utilisateur et un identifiant d'article visualisé unique. Si un utilisateur a visionné dix articles, il y aura dix rangées.
Récupération des articles visualisés pour un utilisateur donné prend des travaux comme vous devez tirer dans toutes les lignes pour cet utilisateur et les iTerez-les.
edit - code d'échantillon:
<?php
$config['db'] = array (
'host' => '',
'username' => '',
'password' => '',
'dbname' => ''
);
$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname='.$config['db']['dbname'],$config['db']['username'],$config['db']['password']);
$query = $db->query("SELECT user_id, article_id FROM viewed_articles WHERE user_id = 1234");
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
echo '<pre>',print_r($rows,true),'</pre>';
?>
Vous mettrez dans votre MySQL DB et vos informations d'identification dans le tableau $ config.
Autres conseils
Une bonne approche est d'utiliser un module pour afficher les données et un plugin pour le stocker.
Pour suivre les articles consultés par un utilisateur de commencer avec la Joomla de documentation pour le développement de plugins. et de regarder pour les plugins de contenu.Ce plugin doit stocker, au moins, l'identificateur de l'utilisateur et de l'article identificateur sur une table (appelons-la articleviews
) créé spécialement pour ce plugin.
Pour construire un module de vérification de la Joomla module développement.Sur ce module, vous pourrez charger les données stockées avec le plugin à partir de la articleviews
table.Rappelez-vous à l'index de la table par l'identificateur de l'utilisateur, sinon il va tuer votre réponse web comme le volume de données augmente.
EDIT:article identificateur doit faire partie de l'indice de trop.