FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 04-03-2012 23:08:08

Equinoxe5
Membre
Inscription : 21-02-2012
Messages : 16

Récuperer une valeur supplémentaire de la table ranks

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

#2 05-03-2012 08:18:41

fanf73
Wik-wiki
Lieu : Lyon
Inscription : 12-09-2006
Messages : 4 432
Site Web

Re : Récuperer une valeur supplémentaire de la table ranks

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

#3 05-03-2012 11:10:13

Equinoxe5
Membre
Inscription : 21-02-2012
Messages : 16

Re : Récuperer une valeur supplémentaire de la table ranks

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

#4 06-03-2012 17:46:46

Equinoxe5
Membre
Inscription : 21-02-2012
Messages : 16

Re : Récuperer une valeur supplémentaire de la table ranks

Bonjour,

Personne n'a une idée ou un début de piste ?

Hors ligne

#5 08-03-2012 15:56:59

Mpok
Néo Admin
Inscription : 10-08-2006
Messages : 2 950
Site Web

Re : Récuperer une valeur supplémentaire de la table ranks

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

#6 08-03-2012 23:31:55

Equinoxe5
Membre
Inscription : 21-02-2012
Messages : 16

Re : Récuperer une valeur supplémentaire de la table ranks

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

Pied de page des forums