Utiliser des variables de manière non redondante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Utiliser des variables de manière non redondante

Re: Utiliser des variables de manière non redondante

par saucisse21 » 26 janv. 2012, 10:16

Merci pour ton apport, j'ai pu résoudre mon problème :)

J'ai réutilisé ton code
var $cpt;
	function __construct(){
	$this->cpt =0;
	}	
	function getCpt(){
	$this->cpt++;
	return $this->cpt++;
	}
que j'appelle comme cela
	function start_lvl(&$output, $depth) {
		$indent = str_repeat("\t", $depth);
		$output .= '<ul class="sub-menu' . $this->cpt++ . '">';
	}
Le tout situé dans une même class.

Maintenant tout est bon, merci encore !

Re: Utiliser des variables de manière non redondante

par moogli » 25 janv. 2012, 19:14

Salut,

Il me semble que l'attribut class est unique tu ne peu donc pas faire ainsi.
Par contre class="sub-class 1" est possible.
Après il faut que tu utilise une variable globale que tu incrémente à chaque fois Ue tu créer un nouveau ul, en gros le compteur de ta fonction doit être globale.
Ceci dit objet peu être plus "clair" à utiliser qu'une variable globale.
Par exemple
Class compteur{
private $cpt;
Public __construct(){
$this->cpt =0;
}

public getCpt(){
this->cpt ++;
return $his->cpt;
}
}
À chaque appel de getCpt() tu garde la même valeur. Tu peux même imaginer faire une classe statique si tu veux.


@+

Utiliser des variables de manière non redondante

par saucisse21 » 25 janv. 2012, 18:37

Bonjour,

Je viens vers vous pour une problématique sur laquelle je bloque bêtement...
Je suis en train de créer un menu déroulant.
Ce menu est généré automatiquement via un appel de rubriques sous php (wordpress).
Je souhaite ajouter une classe à mes sous-menus.
Ces classes de sous-menus devront être numérotées de 1 à X (selon le nombre de sous-menus créés).

Actuellement, j'ai ce code là :

Code : Tout sélectionner

function start_lvl(&$output, $depth) { $indent = str_repeat("\t", $depth); for ($numero = 0; $numero < 10 ; $numero++){ $output .= '<ul class="sub-menu" class="'. $numero . '">'; }; }
Ce code m'ajoute bien la classe souhaitée dans mon code.
Mais pour le premier sous-menu par exemple, au lieu de me créer un <ul class="sub-menu" class="1">, il me créé <ul class="sub-menu" class="1"> <ul class="sub-menu" class="2"> <ul class="sub-menu" class="3"> ... <ul class="sub-menu" class="10">.
Je souhaite donc savoir comment "exclure", au fur et à mesure, les numéros de classes déjà utilisés.

Si je résumé : je souhaite créer des classes numérotées de manière unique et croissante.
Mon premier sous-menu sera donc <ul class="sub-menu" class="1">, mon deuxième sous-menu <ul class="sub-menu" class="2">, etc !

En espérant avoir été clair, et en espérant que vous m'apporterez une solution !