Fork me on GitHub






Besoin d'aide pour le bloc qui est en ligne...
Aspirant
Inscrit: 14/07/2005 11:05
Messages: 31
Bonjour à tous,
Tout d'abord, merci d'avance aux personnes qui m'aideront. Voici le problème :
Je débute avec XOOP mais j'apprends petit à petit. J'ai réussi à insérer les champs NOM et PRENOM dans le formulaire d'inscription de mon site.
Je souhaite maintenant faire apparaitre le Nom et Prénom de la personne en ligne dans le BLOC qui est en ligne.
Au lieu de voir le login du mec, on verrait son NOM et son Prénom.
J'aimerai aussi faire pareil pour le bloc, NOUVEAUX MEMBRES.
J'attends vos aide !!
Merci

Posté le : 14/07/2005 11:08
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Admin Frxoops
Inscrit: 04/02/2003 16:46
De Blois
Messages: 3071
bonjour et bienvenue sur XOOPS

Pour modifier les informations dont tu parles il faut modifier le module systeme et les templates associés.
C'est assez simple en fait, il faut réassigner les variables smarty dans le code du bloc 'system_bloks.php' (fonction b_system_online_show()) pour changer l'affichage du template 'system_block_online.html"

Posté le : 14/07/2005 11:55
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Aspirant
Inscrit: 14/07/2005 11:05
Messages: 31
Euh merci de la réponse, mais je la comprends pas...
En plus simple faut que je fasse quoi???

(MERCI POUR CE SUPPORT QUI EST VRAIMENT TRES RAPIDE !!)

Posté le : 14/07/2005 12:30
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Admin Frxoops
Inscrit: 04/02/2003 16:46
De Blois
Messages: 3071
Dans le fichier /module/system/blocks/system_blocks.php

voici la fonction modifiée pour afficher le champ "name" a la place de l'uid (j'ai juste mis dans le champ name mon nom et prenom. donc a adapter si tu as choisi 2 champs differents):
function b_system_online_show()
{
    global 
$xoopsUser$xoopsModule$xoopsDB;
    
$online_handler =& xoops_gethandler('online');
    
mt_srand((double)microtime()*1000000);
    
// set gc probabillity to 10% for now..
    
if (mt_rand(1100) < 11) {
        
$online_handler->gc(300);
    }
    if (
is_object($xoopsUser)) {
        
$uid $xoopsUser->getVar('uid');
        
$uname $xoopsUser->getVar('uname');
    } else {
        
$uid 0;
        
$uname '';
    }
    if (
is_object($xoopsModule)) {
        
$online_handler->write($uid$unametime(), $xoopsModule->getVar('mid'), $_SERVER['REMOTE_ADDR']);
    } else {
        
$online_handler->write($uid$unametime(), 0$_SERVER['REMOTE_ADDR']);
    }
    
$onlines =& $online_handler->getAll();

    if (
false != $onlines) {
        
$total count($onlines);
        
$block = array();
        
$guests 0;
        
$members '';
        for (
$i 0$i $total$i++) {
            if (
$onlines[$i]['online_uid'] > 0) {

    
$sql=sprintf("SELECT name FROM ".$xoopsDB->prefix('users')." WHERE uid='$uid'");
    
$res $xoopsDB->query($sql) or die ('erreur requete :'.$sql.'<br>');
    if ( 
$res ) {
        
$tab[1] = "";
        while ((
$row $xoopsDB->fetchArray($res)) != false) {
            
$tab[1] = $row['name'];
        }
    }

                
$members .= ' <a href="'.XOOPS_URL.'/userinfo.php?uid='.$onlines[$i]['online_uid'].'">'.$tab[1].'</a>,';
            } else {
                
$guests++;
            }
        }
        
$block['online_total'] = sprintf(_ONLINEPHRASE$total);
        if (
is_object($xoopsModule)) {
            
$mytotal $online_handler->getCount(new Criteria('online_module'$xoopsModule->getVar('mid')));
            
$block['online_total'] .= ' ('.sprintf(_ONLINEPHRASEX$mytotal$xoopsModule->getVar('name')).')';
        }
        
$block['lang_members'] = _MEMBERS;
        
$block['lang_guests'] = _GUESTS;
        
$block['online_names'] = $members;
        
$block['online_members'] = $total $guests;
        
$block['online_guests'] = $guests;
        
$block['lang_more'] = _MORE;
        return 
$block;
    } else {
        return 
false;
    }
}


en résumé : appel à "$xoopsDB" au debut de la fonction pour pouvoir faire une requète
ensuite la requete en elle meme :
$sql=sprintf("SELECT name FROM ".$xoopsDB->prefix('users')." WHERE uid='$uid'");
    
$res $xoopsDB->query($sql) or die ('erreur requete :'.$sql.'<br>');
    if ( 
$res ) {
        
$tab[1] = "";
        while ((
$row $xoopsDB->fetchArray($res)) != false) {
            
$tab[1] = $row['name'];
        }
    }

puis pour l'affichage j'ai remplacé $onlines[$i]['online_uname'] par : $tab[1]

Ce n'est pas forcément optimum mais cela à l'air de fonctionner.

Posté le : 14/07/2005 12:35

Edité par philou sur 14/07/2005 12:37:52
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Admin Frxoops
Inscrit: 04/02/2003 16:46
De Blois
Messages: 3071
euhhh pas clair mon post
en fait tu remplaces la fonction originale par celle que je t'i donné dans la première partie du post

Posté le : 14/07/2005 12:37
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Aspirant
Inscrit: 14/07/2005 11:05
Messages: 31
Re,
J'ai remplacé la fonction par celle-ci :

function b_system_online_show()
{
global $xoopsUser, $xoopsModule, $xoopsDB;
$online_handler =& xoops_gethandler('online');
mt_srand((double)microtime()*1000000);
// set gc probabillity to 10% for now..
if (mt_rand(1, 100) < 11) {
$online_handler->gc(300);
}
if (is_object($xoopsUser)) {
$uid = $xoopsUser->getVar('uid');
$uname = $xoopsUser->getVar('uname');
} else {
$uid = 0;
$uname = '';
}
if (is_object($xoopsModule)) {
$online_handler->write($uid, $uname, time(), $xoopsModule->getVar('mid'), $_SERVER['REMOTE_ADDR']);
} else {
$online_handler->write($uid, $uname, time(), 0, $_SERVER['REMOTE_ADDR']);
}
$onlines =& $online_handler->getAll();

if (false != $onlines) {
$total = count($onlines);
$block = array();
$guests = 0;
$members = '';
for ($i = 0; $i < $total; $i++) {
if ($onlines[$i]['online_uid'] > 0) {

$sql=sprintf("SELECT name FROM ".$xoopsDB->prefix('users')." WHERE uid='$uid'");
$res = $xoopsDB->query($sql) or die ('erreur requete :'.$sql.'<br>');
if ( $res ) {
$tab[1] = "";
while (($row = $xoopsDB->fetchArray($res)) != false) {
$tab[1] = $row['name'];
}
}

$members .= ' <a href="'.XOOPS_URL.'/userinfo.php?uid='.$onlines[$i]['online_uid'].'">'.$tab[1].'</a>,';
} else {
$guests++;
}
}
$block['online_total'] = sprintf(_ONLINEPHRASE, $total);
if (is_object($xoopsModule)) {
$mytotal = $online_handler->getCount(new Criteria('online_module', $xoopsModule->getVar('mid')));
$block['online_total'] .= ' ('.sprintf(_ONLINEPHRASEX, $mytotal, $xoopsModule->getVar('name')).')';
}
$block['lang_members'] = _MEMBERS;
$block['lang_guests'] = _GUESTS;
$block['online_names'] = $members;
$block['online_members'] = $total - $guests;
$block['online_guests'] = $guests;
$block['lang_more'] = _MORE;
return $block;
} else {
return false;
}
}
Et du coup jvois plus rien dans les blocs, je veux dire aucun nom apparait...
Comment faire ?

Posté le : 14/07/2005 12:54
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Admin Frxoops
Inscrit: 04/02/2003 16:46
De Blois
Messages: 3071
le champs name est bien rempli dans la base de donnees ?

Posté le : 14/07/2005 13:32
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Aspirant
Inscrit: 14/07/2005 11:05
Messages: 31
Oui il l'est...
Je le vois dans les profils...
Comment faire ?

Posté le : 14/07/2005 19:00
Partager Twitter Partagez cette article sur GG+
Re: Besoin d'aide pour le bloc qui est en ligne...
Aspirant
Inscrit: 14/07/2005 11:05
Messages: 31
Personne ne peut m'aider svp ????
merci!!!

Posté le : 15/07/2005 19:54
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

55 Personne(s) en ligne (37 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 55 | Plus ...