Uutiset:

Want to get involved in developing SMF, then why not lend a hand on our github!

Main Menu
Advertisement:

Ajouter Les Utilisateurs en Ligne Sur une Page Action=.. avec Custom Actions

Aloittaja Pяηѕѕ LF, joulukuu 05, 2008, 09:34:09 AP

« edellinen - seuraava »

Pяηѕѕ LF

Salut,

Moi j'utilise le mod custom actions pour créer des nouvelles pages = action.

j'ai une page action=test

J'aimerais inclure les utilisateurs qui sont actuellement sur cette page.

les utilisateurs online sur cette page.

Quelqu'un qui s'y connait un peu pourrait m'aider pour que faire ça ?

une connaissance ma donné ce code mais sans plus quoi. je sais pas si ça pourrait servir. J'ajoute ce code ds le custom actions mais ça le fait pas ni en php ni en html.

/ Show just numbers...?

if ($settings['display_who_viewing'] == 1)

echo count($context['view_members']), ' ', count($context['view_members']) == 1 ? $txt['who_member'] : $txt[19];

// Or show the actual people viewing the topic?

else

echo empty($context['view_members_list']) ? '0 ' . $txt[19] : implode(', ', $context['view_members_list']) . ((empty($context['view_num_hidden']) || $context['can_moderate_forum']) ? '' : ' (+ ' . $context['view_num_hidden'] . ' ' . $txt['hidden'] . ')');



// Now show how many guests are here too.

echo $txt['who_and'], $context['view_num_guests'], ' ', $context['view_num_guests'] == 1 ? $txt['guest'] : $txt['guests'], $txt['who_viewing_topic'], '

</td>

</tr>';



Quelqu'un qui s'y connait un peu pourrait m'aider pour que faire ça ?
1.1.21 Default

Eleglin

No support by PM or Mail.

Pяηѕѕ LF

Lainaus käyttäjältä: Eleglin - joulukuu 05, 2008, 01:16:55 IP
Euh ce n'est pas déjà sur SMF par défaut ?

http://www.simplemachines.org/community/index.php?action=who

en faite le code que j'ai ajouter il ne sert peut etre à rien on ma donner ça comme ca mais je pense qu'il ne sert à rien.

Moi j'aimerais simplement montrer les utilisateurs se trouvant ds la page action=test que j'ai créer.

par ex.

Eleglin, Pяєηѕєѕ 丂√丂, Arthur, etc.. visualise la page.
1.1.21 Default

GravuTrad

Ce code te permet d'afficher soit le nombre d'utilisateurs parcourant la page, soit le le nom des users lui même, mais aussi le nombre de visiteurs.

Maintenant il faut voir pour l'intégrer dans le mod custom actions...
On a toujours besoin d'un plus petit que soi! (Petit!Petit!)


Think about Search function before posting.
Pensez à la fonction Recherche avant de poster.

Pяηѕѕ LF

#4
Lainaus käyttäjältä: GravuTrad - joulukuu 05, 2008, 04:07:20 IP
Ce code te permet d'afficher soit le nombre d'utilisateurs parcourant la page, soit le le nom des users lui même, mais aussi le nombre de visiteurs.

Maintenant il faut voir pour l'intégrer dans le mod custom actions...

Et tu penses que c'est faisable ?  :-\

J'essaye en jouant avec ce code mais ça donne rien  :-[

tu dois peut être avoir une ptite idée nan toi ? lol





wdm2005 m'a donné un code je pense que ça peut le faire j'ai pas encore testé parce que je suis pas chez moi mais je suis impatiente de le tester :)
1.1.21 Default

DeathSign

#5
Jte fais ça j'ai juste besoin de savoir le nom de l'action (action=cenomla).

EDIT: LoL pas vu ton ptit edit mais je l'ai fait de mon côté et ça marche, jvais l'inclure dans mes pages ^^. Si celui de wdm2005 est bon c'est pas plus mal ;)

Pяηѕѕ LF

Lainaus käyttäjältä: DeathSign - joulukuu 06, 2008, 12:47:07 IP
Jte fais ça j'ai juste besoin de savoir le nom de l'action (action=cenomla).

EDIT: LoL pas vu ton ptit edit mais je l'ai fait de mon côté et ça marche, jvais l'inclure dans mes pages ^^. Si celui de wdm2005 est bon c'est pas plus mal ;)


Salut,

c'est possible que tu partages ce que tu as fait j'aimerais tester avec le tien pour voir parce que celui de wdm2005 le fait mais sans plus c'est comme ci il le faisait pas  :P.

j'essaye ça sur un page action=test

le code de wdm2005 il est sur le forum arcade tu peux y jetter un coup d'oeil si tu veux.

Donc, ici j'attend ta méthode à toi elle est peut être meilleur lol sans doute.  :D
1.1.21 Default

DeathSign

Ok je suis allé voir, et j'ai une solution plus light (une seule requête) largement inspiré du code que tu as commencé par citer.

Ce code pourrait se scinder en deux, la première partie dans les fichiers du répertoire "Sources" et l'autre dans "template" car il s'agit de l'affichage. Je dis ça car je code moi-même mes pages directement dans les sources. Tout mettre à la suite fonctionne bien sûr tout aussi bien.

// DeathSign - Affichage des membres (+ invités et nombre d'utilisateur caché éventuel) présents sur la page ?action=$dsaction
$dsaction = 'tchat';

// Partie "Sources"
$context['ds_members_list'] = array();
$context['ds_num_members'] = 0;
$context['ds_num_hidden'] = 0;

$dslenght = strlen($dsaction);

$request = db_query("
SELECT
lo.ID_MEMBER, lo.logTime, mem.realName, mem.memberName, mem.showOnline,
mg.onlineColor, mg.ID_GROUP
FROM {$db_prefix}log_online AS lo
LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = lo.ID_MEMBER)
LEFT JOIN {$db_prefix}membergroups AS mg ON (mg.ID_GROUP = IF(mem.ID_GROUP = 0, mem.ID_POST_GROUP, mem.ID_GROUP))
WHERE INSTR(lo.url, 's:6:\"action\";s:$dslenght:\"$dsaction\";') OR lo.session = '" . ($user_info['is_guest'] ? 'ip' . $user_info['ip'] : session_id()) . "'", __FILE__, __LINE__);
while ($row = mysql_fetch_assoc($request))
{
if (empty($row['ID_MEMBER']))
continue;

if (!empty($row['onlineColor']))
$link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '" style="color: ' . $row['onlineColor'] . ';">' . $row['realName'] . '</a>';
else
$link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '">' . $row['realName'] . '</a>';

if (!empty($row['showOnline']) || allowedTo('moderate_forum'))
$context['ds_members_list'][$row['logTime'] . $row['memberName']] = empty($row['showOnline']) ? '<i>' . $link . '</i>' : $link;

$context['ds_num_members']++;

if (empty($row['showOnline']))
$context['ds_num_hidden']++;
}
$context['ds_num_guests'] = mysql_num_rows($request) - $context['ds_num_members'];
mysql_free_result($request);

krsort($context['ds_members_list']);

// Partie "template"
echo '<p>', empty($context['ds_members_list']) ? '0 membre' : implode(', ', $context['ds_members_list']) . (empty($context['ds_num_hidden']) ? '' : ' (+ ' . $context['ds_num_hidden'] . ' cach&eacute;' . ')'), ' et ', $context['ds_num_guests'], ' ', $context['ds_num_guests'] <= 1 ? 'Invit&eacute;' : 'Invit&eacute;s', ' sur cette page</p>';


Si tu changes ?page=test, il faudra le changer dans la variable $dsaction.

Pяηѕѕ LF

Merci DeathSign,

Ta solution est beaucoup mieux, Mais je n'y arrive pas.  :-[

En faite je vais dans custom actions je crée une nouvelle page en php et dans la partie code je copie le code que tu ma donné entier en changer 'tchat' par 'test'. Ca le fait pas.

J'ai ce message.

Database Error

Table 'prnss.log_online' doesn't exist
File: /homez.13/prnss/www/forum/Sources/Load.php(1768) : eval()'d code(9) : eval()'d code
Line: 18

Note: It appears that your database may require an upgrade. Your forum's files are currently at version SMF 1.1.7, while your database is at version 1.1.4. The above error might possibly go away if you execute the latest version of upgrade.php. 

ici tout à l'air en orde .  :-\



Je dois faire quoi ? :(
1.1.21 Default

DeathSign

#9
Hmm ok je te rassure rien à voir avec ta version de SMF.

Effectivement j'ai oublié de rechanger l'action en test lol. Sinon les variables que le script a besoin sont :
$context, $scripturl, $user_info, $db_prefix

Je vais voir ton mod CustomAction de plus près...

EDIT :
Dans ton journal d'erreur, as-tu d'autres messages ?

Pяηѕѕ LF

"Effectivement j'ai oublié de rechanger l'action en test lol."

Je n'ai pas dit que tu avais oublié  :P de changer juste que moi je l'ai changer et malgré ça ça donnait l'erreur. lol

les variables je sais pas comment les utliser  :-\ quand je rajoute cette ligne avec le code que tu as donné en premier ça le fait pas je sais pas exactement ou il faut l'insérer tu sais être un peu plus claire stp ?  :-[

$context, $scripturl, $user_info, $db_prefix

Sinon pas d'autre message erreurs..

lol 'ton mod'.. le mod que j'utilise c'est celui ca http://custom.simplemachines.org/mods/index.php?mod=331
1.1.21 Default

DeathSign

Hello,

J'ai installé ton mod en local et on n'a pas d'accès aux variables $scripturl, $user_info, $db_prefix

Mon script ne fonctionne donc pas. Mais pour permettre à mon code de les avoir, il suffit de modifier le fichier CustomAction.template.php situé dans Themes\default

Changer la ligne 7 (qui commence par global...) par :
global $context, $scripturl, $user_info, $db_prefix;

Testé ça fonctionne chez moi.

PS: Tu devais avoir des Undefined variable dans ton journal d'erreur avant cette modif, c'est pas grave ^^

Pяηѕѕ LF

Salut DeathSign,

Pour le journal d'erreur, je pense qu'il y a une option qui soit tu enregistre les messages d'err. soit pas. Moi je pense que je ne les enregistr. pas donc c'est toujours nickel meme qd il y en a  :P.

Sinon après avoir effectué la modif. ds le CustomAction.template.php le code fonctionne  :) mais ça le fait pas je sais pas.

Par exemple. Je suis sur la page J'ai

"Admin et  0 Invité sur cette page"

meme quand il ya plusieurs personnes sur cette page j'ai chaque fois le meme message "Admin et  0 Invité sur cette page". Et les autres ont eux sur leur page "xxxxx et  0 Invité sur cette page"

Chacun à sur la page son nick et 0 invité.

je fais renouvelle la page et eux aussi mais le message en dessous ne change pas  :-\. Tu as une idée par rapport à ça ?
1.1.21 Default

DeathSign

L'action spécifiée dans la variable $dsaction correspond-elle bien à celle de la page ?

Moi pour vérifier que ça marche bien, j'ouvre la page dans mon navigateur puis j'ouvre un second navigateur et je vais sur cette même page.

Pяηѕѕ LF

Oui j'ai revérifié plusieurs fois defois ça le fait defois pas c bizarre :) mais bon c'est déjà pas mal. Te remercie pour tout l'ensemble de ton aide à ce sujet. +rep hehe
1.1.21 Default

Advertisement: