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.

Était-ce utile?

La solution

Il y a trois approches, je crois:

Stocker tous les ID d'article affiché dans la nouvelle colonne de la table des utilisateurs
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.

nouvelle table avec une ligne par utilisateur
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é.

nouvelle table avec une ligne par utilisateur / combinaison d'articles

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top