Le site des utilisateurs francophones de FluxBB.
Vous n'êtes pas identifié(e).
Bonsoir,
J'ai créé un champ supplémentaire dans la table ranks. Ce champ comprend une valeur numérique.
Dans le fichier cache_ranks, j'ai bien mes valeurs comme ceci:
$pun_ranks = array (
0 =>
array (
'id' => '1',
'rank' => 'Discret',
'min_posts' => '1',
'nb_pins' => '1',
),
1 =>
array (
'id' => '2',
'rank' => 'Contenu',
'min_posts' => '25',
'nb_pins' => '2',
),Ce que je souhaite, c'est récuperer cette seconde valeur (en plus de la valeur rank) dans la function get_title($user)
Et là, j'avoue que je coince.
J'arrive à récuperer une seule valeur (si j'inverse rank et nb_pins ça fonctionne), mais pas les 2 en même temps.
J'ai bien essayé un return array mais ce n'est pas convaincant. Quelqu'un a une idée svp ?
Hors ligne
Bonsoir,
Soit tu retournes un array, et tu dois alors modifier tous les appels à cette fonction pour afficher correctement le résultat.
Soit tu créés une nouvelle fonction get_pin() spécifiquement pour récupérer la valeur souhaitée.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Bonjour,
Alors j'ai créé une nouvelle fonction comme ceci:
function get_pins($user)
{
global $db, $pun_config;
static $pun_ranks;
// If not already loaded in a previous call, load the cached ranks
if ($pun_config['o_ranks'] == '1' && !defined('PUN_RANKS_LOADED'))
{
if (file_exists(FORUM_CACHE_DIR.'cache_ranks.php'))
include FORUM_CACHE_DIR.'cache_ranks.php';
if (!defined('PUN_RANKS_LOADED'))
{
if (!defined('FORUM_CACHE_FUNCTIONS_LOADED'))
require PUN_ROOT.'include/cache.php';
generate_ranks_cache();
require FORUM_CACHE_DIR.'cache_ranks.php';
}
}
// Are there any ranks?
foreach ($pun_ranks as $cur_pin)
{
if ($user['num_posts'] >= $cur_pin['min_posts'])
$user_pins = $cur_pin['nb_pins'];
}
// If the user didn't "reach" any rank (or if ranks are disabled), we assign the default
if (!isset($user_pins))
$user_pins = 0;
return $user_pins;
}Et là, voici mon problème:
Si j'appelle cette fonction toute seule, elle fonctionne.
Si je l'appelle avec aussi get_title, ça ne fonctionne pas
En clair:
$user_pins = get_pins($cur_post);fonctionne
$user_title = get_title($cur_post);
$user_pins = get_pins($cur_post);ne fonctionne pas (Ca me retourne 0 pour $user_pins)
Clairement, mes 2 fonctions "se marchent dessus" mais je ne vois pas mon erreur.
Hors ligne
Bonjour,
Personne n'a une idée ou un début de piste ?
Hors ligne
Comme tu as déclaré $cur_ranks en "static", le pointeur du tableau n'est pas remis au début lors du second 'foreach' (celui de ta fonction get_pins en l'occurence).
Il faut donc rajouter
reset($cur_ranks); avant le foreach de ta fonction get_pins.
(et bien entendu, ne pas inverser les deux appels, ou alors il faudra aussi rajouter un reset dans get_title).
Hors ligne
Bonjour,
Ca ne fonctionne pas avec un reset.
Par contre, ce qui fonctionne c'est de mettre $pun_ranks en global.
Je ne pense pas que ça pose un problème de faire ça ?
Hors ligne