IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

compté une valeur dans une liste


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Par défaut compté une valeur dans une liste
    hello a tous voila je cherche à modifié du code php pour que les valeurs d'un liste est un fond de couleur différentes 1 fois sur 2 ...
    l'idée que j'ai trouvé c'est de compter les entrer et de mettre une class de css différente à chaque valeur ... mais biensur je n'y arrive pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    $items	= $this->items;
    $count 	= count($items);
    if ($count) :
    ?>
    <div class="content">
    <?php
    $leadnum		= $this->params->get('lead_num', 2);
    $leadnum		= ($leadnum >= $count) ? $count : $leadnum;
    if ($this->limitstart == 0) :
    ?>
    	<ul class="leadingblock">
    		<?php for ($i=0; $i<$leadnum; $i++) : 
    		?>
    		<li>
    			Mes valeur1
    		</li>
    		<?php endfor; ?>
     
    	</ul>
    	<?php endif; ?>
    je penai donc à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <li class="ligne<?php echo $class; ?>
    			Mes valeur1
    		</li>
    et j'essai de compter avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    	$k = 0;
               foreach ($this->items as $item) : 
               $class = ($k%2) ? '1' : '2';
               $k++;
        ?>
    après j'ai fait mes css en fonction ...
    mais je n'arrive pas a avoir les bon chiffres ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li class="ligne<?php echo $class; ?>
    Merci d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    salut,
    l'idée du modulo est bonne seulement il faut que ton

    <li class="ligne<?php echo $class; ?> se trouve lui aussi dans ta boucle foreach sinon class ne prendra que la dernière valeur rencontrée.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Par défaut
    hello en fait pour faire ca il faut que je fasse plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <ul class="leadingblock">
    		<?php for ($i=0; $i<$leadnum; $i++) : 
    		?>
    		<li>
    			<div class="ligne1">
    		</li>
    <li>
    			<div class="ligne2">
    		</li>
    		<?php endfor; ?>
     
    	</ul>
    	<?php endif; ?>
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <li>
    			<div class="ligne<?php echo $class; ?>">
    		</li>
    comment placer mon module pour qu'il soit pris en compte ?
    Merci

  4. #4
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    c'est un truc dans ce gout là que tu veux faire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    	<ul class="leadingblock">
    	<?php
    	 for ($i=0; $i<$leadnum; $i++)
    	 {
    		for($j=0; $j<2; $j++)
    		{
    			$class = ($j%2) ? '1' : '2';
     
    			echo '	<li>';
    			echo '	<div class="'.$class.'">';
    			echo '	</li>';
    		}
    	 }
     	?>
    	</ul>
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Par défaut
    hello
    j'ai plustot ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <ul class="leadingblock">
    		<?php for ($i=0; $i<$leadnum; $i++) : 
    		{
    		for($j=0; $j<2; $j++)
    		{
    			$class = ($j%2) ? '1' : '2':
    		?>
     
    		<li>
    			<div class="ligne<?php echo $class; ?>" style="overflow: hidden;">
     
    </li>
    		<?php endfor; ?>
     
    	</ul>
    	<?php endif; ?>
    mais ca bloque sur le endfor
    Merci pour ton aide

  6. #6
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    normal il te manque un second endfor;
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Par défaut
    .. j'ai bien essaye de rajouter endfor à plusieur endroit ... mais j'ai toujours un
    Parse error: syntax error, unexpected T_ENDFOR in ....
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <div class="content">
    <?php
    $leadnum		= $this->params->get('lead_num', 2);
    $leadnum		= ($leadnum >= $count) ? $count : $leadnum;
    if ($this->limitstart == 0) :
    ?>		
     
    	<ul class="leadingblock">
    		<?php for ($i=0; $i<$leadnum; $i++) : 
    		{
    		for($j=0; $j<2; $j++)
    		{
    			$class = ($j%2) ? '1' : '2';
    		?>
     
    		<li>
    			<div class="ligne<?php echo $class; ?>" style="overflow: hidden;">
    Mes valeur
     
    			</div>
    		<?php endfor; ?>	
    		</li>
    		<?php endfor; ?>
     
    	</ul>
     
    	<?php endif; ?>
    </div>
    Mille excuse je debute ...
    Merci pour ton aide

  8. #8
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Je suis extrêmement surpris
    Ca doit faire dans les alentours de 5 ans que j'ai dû taper mon 1er code Php, et c'est la 1ère fois que je remarque cette syntaxe.
    Délirant tout de même

    Comme ça, au feeling. Si tu éprouve des difficultés à utiliser cette syntaxe, pourquoi alors ne pas adopter la syntaxe qui est la plus couramment utilisée, la plus répandue, celle qu'on retrouve partout : Bouquins, revues, tutos, faq, forums etc, etc ...


    A mon avis, tu fais un mélange des genres.
    Si tu opte pour la syntaxe qui utilise des accolades, alors faut pas rajouter de endif ou de endfor, car à vu de nez, c'est les accolades qui marquent le début et la fin de l'alternative ou de la boucle.
    A l'inverse, c'est justement la combinaison du : (2 points) et l'instruction endif ou endfor qui spécifie le début et la fin.
    Soit c'est l'un, soit c'est l'autre.
    Enfin, à vue d'nez, car j'ai jamais utilisé ta manière de faire.


    Juste par curiosité.
    Où est ce que tu as appris cette syntaxe ?
    Dans la doc Php ? (jamais vu, pourtant, je la consulte souvent).

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 85
    Par défaut
    Citation Envoyé par micker Voir le message
    .. j'ai bien essaye de rajouter endfor à plusieur endroit ... mais j'ai toujours un
    Parse error: syntax error, unexpected T_ENDFOR in ....
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <div class="content">
    <?php
    $leadnum		= $this->params->get('lead_num', 2);
    $leadnum		= ($leadnum >= $count) ? $count : $leadnum;
    if ($this->limitstart == 0) :
    ?>		
     
    	<ul class="leadingblock">
    		<?php for ($i=0; $i<$leadnum; $i++) : 
    		{
    		for($j=0; $j<2; $j++)
    		{
    			$class = ($j%2) ? '1' : '2';
    		?>
     
    		<li>
    			<div class="ligne<?php echo $class; ?>" style="overflow: hidden;">
    Mes valeur
     
    			</div>
    		<?php endfor; ?>	
    		</li>
    		<?php endfor; ?>
     
    	</ul>
     
    	<?php endif; ?>
    </div>
    Mille excuse je debute ...
    Merci pour ton aide
    Comme le dit RunCodePhp

    Citation Envoyé par RunCodePhp Voir le message
    A mon avis, tu fais un mélange des genres.
    Si tu opte pour la syntaxe qui utilise des accolades, alors faut pas rajouter de endif ou de endfor, car à vu de nez, c'est les accolades qui marquent le début et la fin de l'alternative ou de la boucle.
    A l'inverse, c'est justement la combinaison du : (2 points) et l'instruction endif ou endfor qui spécifie le début et la fin.
    Soit c'est l'un, soit c'est l'autre.
    Aussi, RunCodePhp, les frameworks utilisent de plus en plus les syntaxes du style if( ) : // endif; donc si tu apprends PHP avec un Framwork, tu vois un gros mélange des deux...

    Vas savoir pourquoi ce genre de bloc devient la mode, je trouve les { } tellement plus représentatifs ! ^^

  10. #10
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par A0659
    Vas savoir pourquoi ce genre de bloc devient la mode, je trouve les { } tellement plus représentatifs ! ^^
    A la mode ? Je ne s'rais pas moderne alors
    J'déconne

    Arff, les FrameWork, connais pas, ou du moins, si peu ...
    Ceci dit, je partage ton sentiment, je trouve bien plus simple l'usage des accolades.

    C'est une syntaxe que l'on retrouve dans VB ...
    Voilà que les VBistes nous mettent la pagaille dans notre langage fétiche maintenant.
    Va falloir lutter pour éviter une épidémie, que dis je, une pandémie


    [ @micker sorry pour la polution ]

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Par défaut
    bonjour
    j'utilise un cms (joomla + un CCK) qui permet de gérer des template
    j'avoue aussi (vous l'aviez senti ) que je suis un débutant ...
    et il mets impossible de tout recoder ...
    c'est pour cela que j'aimerai bien trouver la solutnio pour ces listes sans tout avoir à exploser
    Merci

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 85
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <div class="content">
    <?php
    $leadnum		= $this->params->get('lead_num', 2);
    $leadnum		= ($leadnum >= $count) ? $count : $leadnum;
    if ($this->limitstart == 0) :
    ?>		
     
    	<ul class="leadingblock">
    		<?php for ($i=0; $i<$leadnum; $i++) : 
     
    		for($j=0; $j<2; $j++) :
     
    			$class = ($j%2) ? '1' : '2';
    		?>
     
    		<li>
    			<div class="ligne<?php echo $class; ?>" style="overflow: hidden;">
    Mes valeur
     
    			</div>
    		<?php endfor; ?>	
    		</li>
    		<?php endfor; ?>
     
    	</ul>
     
    	<?php endif; ?>
    </div>
    Ce code devrait marcher

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Par défaut
    il tilt sur le 1 er endfor ...

    Merci quand meme

  14. #14
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Disons que tes endif et endfor me déboussole un peu.

    Pour ma part, et de manière plus traditionnelle (du moins en Php), cette partie donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <div class="content">
    <?php
    $leadnum		= $this->params->get('lead_num', 2);
    $leadnum		= ($leadnum >= $count) ? $count : $leadnum;
    if ($this->limitstart == 0) {
    ?>		
     
    	<ul class="leadingblock">
    <?php
    	for ($i=0; $i<$leadnum; $i++) {
     
    		for ($j=0; $j<2; $j++) {
     
    			$class = ($j%2) ? '1' : '2';
    ?>
     
    		<li>
    			<div class="ligne<?php echo $class; ?>" style="overflow: hidden;">
    Mes valeur
     
    			</div>
    <?php
    		}
    ?>	
    		</li>
    <?php
    	}
    ?>
     
    	</ul>
     
    <?php
    }
    ?>
    </div>

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    La syntaxe if/endif - for/endfor est très agréable lorsqu'on mélange PHP et HTML, ça demande un peu d'habitude mais c'est pas mal.

    Par contre ça n'exempte pas de présenter son code proprement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    for( $i = 0 ; $i < 5 ; $i++ ) : //label
    ?>
    html
    ...
    ...
    ...
    <?php
    endfor; //label
    ?>
    Dans un code simple comme celui-ci c'est pas particulièrement flagrant, mais l'avantage par rapport aux accolades c'est que tu vois au premier coup d'oeil le type de bloc que tu refermes. Plus simple que de chercher quelle accolade ouvrante correspond à l'accolade fermante sur laquelle tu bloques.

  16. #16
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    ouep le seul inconvéniant et l'ouverture fermeture des balises <? ?> qui bouffe des ressources mais bon ...

    je te rejoint RunCodePhp, cela fait 8ans que je code en php et je n'avais pas encore vue cette syntaxe :p
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  17. #17
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Tient, je viens de remarquer un truc louche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $items	= $this->items;
    $this->params->get('lead_num', 2);
    if ($this->limitstart == 0)
    Les $this ???
    Pour utiliser $this il faut que le code soit dans une classe, sinon faut le remplacer par le nom de l'objet qui a instancié la classe.

    Question : Est ce que cette partie de code se trouve dans une classe ? (ce que je doute fort).


    Petit conseil en passant :
    Quand tu obtiens un message d'erreur Php, post le, ça aide à comprendre la nature de l'erreur, c'est fait pour ça d'ailleurs.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 12h17
  2. Réponses: 2
    Dernier message: 24/02/2009, 18h40
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48
  4. Réponses: 1
    Dernier message: 25/09/2006, 18h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo