style différent tous les 3 enregistrements sur une boucle php

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par jjmortibus, 17 Septembre 2010.

  1. jjmortibus
    jjmortibus Nouveau WRInaute
    Inscrit:
    4 Mars 2007
    Messages:
    5
    J'aime reçus:
    0
    Bonjour,

    Comment procéder pour que tous les trois enregistrements d'une requête MYSQL je puisse afficher un style différent.
    Par exemple voici le résultats de ma boucle que j'aimerai avoir.

    enregistrement1
    enregistrement2
    enregistrement3 style="color:red";
    enregistrement4
    enregistrement5
    enregistrement6 tyle="color:red";
    ....etc
    Si vous pourriez me donner une piste
     
  2. HawkEye
    HawkEye WRInaute accro
    Inscrit:
    23 Février 2004
    Messages:
    13 932
    J'aime reçus:
    4
    Un petit check sur le reste de la division de ta variable d'itération par 3 (= modulo):

    Code:
    // en supposant que tu boucles sur $i
    
    if($i % 3 = 0) {
     $foo .= ' style="color:red;" ';
    }
    ...et le tour est joué ;)
     
  3. nexxen
    nexxen WRInaute discret
    Inscrit:
    30 Décembre 2004
    Messages:
    74
    J'aime reçus:
    0
    Bonjour,

    HawkEye donne la bonne réponse...sauf que vers 23h00 ces yeux de faucons doivent piqués un peu :wink: :
    Code:
    if($i % 3 = 0) {
    $foo .= ' style="color:red;" ';
    }
    (
    Dans le test if, il faut utiliser un opérateur de comparaison == et pas d'affectation = :mrgreen:

    Bonne journée à tous
     
  4. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Bonjour à tous !

    Je souhaite rouvrir ce topic car je cale sur le même sujet que jjmortibus.

    Je m'explique:
    J'ai créé un moteur de recherche d'analyses médicales (pour mon boss), avec le système de template Bootsrtap.
    Donc tout marche bien, sauf qu'au niveau présentation, je voudrais que tout les 3 résultats (blocs), il y ai un style différent.
    Actuellement, quand les résultats s'affichent, le 1er bloc a un style propre (span4 first-child) et le 2ème et 3ème blocs ont leurs styles (span4). Tous les blocs à la suite ont les mêmes styles que le 2 et 3.

    Mais voilà, je voudrais bien que tous les 3 résultats affichés, le 4ième redevienne avec le style du 1er (retour à la ligne).

    Et la solution apporté au dessus et bien, je comprends pas comment et où la mettre dans ma boucle de résultats...
    (boucle normal: while($data = mysql_fetch_object($resultat))...)
     
  5. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Je fais un petit UP !
    Si il faut plus d'explication ou meilleurx, dites le moi...
     
  6. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    methode rustique mais tout aussi efficace pour les allergiques au modulo :wink:

    Code:
    $num_deco=1;
    while (....)
    {
    
    
    
       $num_deco++;
      if($num_deco == 4) { $num_deco=1 }
    }
    T'as vu j'ai bien mis == :mrgreen: mais c'est le matin aussi ...
     
  7. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Merci pour m'aider Zecat, mais j'ai encore du mal...

    Petite précision avec de commencer, j'utilise le Template Bootstrap.

    Alors je vais mettre la base de mon code avec mes demandes en plus explicite.
    Voici d'abord mon code (je vous évite des parties superflues):
    Code:
     //recherche des résultats dans la base de données
     $resultat = mysql_query("SELECT * FROM analyses WHERE nomanalyse LIKE '%$search%' OR soustitre LIKE '%$search%' ORDER BY id ASC");
      // Condition
      if( mysql_num_rows ( $resultat ) == "" ) { // affichage d'un message "Aucuns résultats"
      ?>
      <div id="nb_resultats">...</div>
    <?php } //Fin du If
      else { ?>
      <div class="row-fluid">//IMPORTANT
      <?php       
      while($data = mysql_fetch_object($resultat))
        { ?>
           <div class="span4">//IMPORTANT
               ... //1er résultat ici
            </div>
            <div class="span4">//IMPORTANT
               ... //2ème résultat ici
            </div>
            <div class="span4">//IMPORTANT
               ... //3ème résultat ici
            </div>
            <div class="span4">//IMPORTANT
               ... //4ème résultat ici
            </div>
            ETC...
     <?php 
     } //Fin du While 
    } //Fin du Else 
    
    Donc voila, chaque résultat arrive dans une DIV.span4, les uns à la suite des autres.
    Et tous ces résultats sont entourés de la DIV.row-fluid (Voir les morceaux de code où c'est marqué IMPORTANT).

    Sauf ce que je voudrais, c'est que tous les 3 résultats (de la requête) une nouvelle DIV.row-fluid soit générée avec les 3 prochains résultats dans leur DIV.span4. Et ainsi de suite...

    Et bien là, je coince...
     
  8. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Personne n'a d'idée ?!
    Je coince dessus depuis 5 jours...
     
  9. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 985
    J'aime reçus:
    280
  10. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Merci beaucoup pour tes liens Spout !
    Le 1er marche très bien !

    Juste pour info:
    -1) Pourquoi tu dis: (avec foreach, je n'itère jamais les records avec while) ?
    -2) Dans les liens, c'est quoi le PHP_EOL ?
     
  11. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 985
    J'aime reçus:
    280
  12. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Merci bien encore Spout !

    Ce soir, je me coucherais moins... idiot !
     
  13. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Bon alors j'ai quand même un souci...

    Ton 1er lien marche très bien pour faire :
    Code:
    <div class="row-fluid">
    <div class="span4">span4</div>
    <div class="span4">span4</div>
    <div class="span4">span4</div>
    </div>
    <div class="row-fluid">
    <div class="span4">span4</div>
    <div class="span4">span4</div>
    <div class="span4">span4</div>
    </div> etc...
    Sauf que, dans la partie:
    Code:
    echo '<div class="span4">span4</div>'.PHP_EOL;
    Quand je mets mes données (que j'avais dans le While), il me ressort toujours le même résultat, et non pas les uns à la suite des autres...
     
  14. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Alors j'ai adapté le code donné dans le 1er lien de Spout.
    Ce qui me donne ($search étant l'envoi du formulaire):
    Code:
    while($data = mysql_fetch_object($resultat))
        {
    $search = range(0,0);
    	$lastKey = end(array_keys($search));
    	foreach ($search as $k => $row) {
    		if (!($k % 3)) {
    			echo '<div class="row-fluid">';
    		} ?>
    		<div class="span4 well2">
                     //Les données traitées
                    </div>
    	<?php if (!(($k + 1) % 3) || $k == $lastKey) {
    		echo '</div>';
    		}
    	}  
     }//Fin du While
    
    Le problème, avec ses coordonnées pour le "range(0,0)", je me retrouve avec chaque résultat comme ceci:
    Code:
    <div class="row-fluid">
       <div class="span4 well2">
           //donnée 1
       </div>
    </div>
    <div class="row-fluid">
       <div class="span4 well2">
           //donnée 2
       </div>
    </div>
    <div class="row-fluid">
       <div class="span4 well2">
           //donnée 3
       </div>
    </div>
    ETC
    
    Au lieu d'avoir:
    Code:
    <div class="row-fluid">
       <div class="span4 well2">
           //donnée 1
       </div>
       <div class="span4 well2">
           //donnée 2
       </div>
       <div class="span4 well2">
           //donnée 3
       </div>
    </div>
    
     
  15. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 985
    J'aime reçus:
    280
    Le range(0, 20) c'était pour avoir des colonnes bidons pr te montrer l'exemple.
    Avec un while/fetch, tu ne dois pas faire ce foreach, le $k tu dois le faire avec un compteur perso incrémenté.
     
  16. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Excuse moi, mais je suis perdu à présent...

    - Pour le range(0, 20), j'avais piger;
    - Pour mon While, je ne dois pas faire le Foreach ? Mais je dois faire quoi alors...
    - Pour le $k, c'est là que je suis encore plus perdu...

    Si tu veux du code complet ou autre n'hésite pas !
     
  17. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 985
    J'aime reçus:
    280
    Pour le $k:
    - avant la boucle while: $k = 0;
    - à la fin de la boucle while, mais toujours dedans: $k++;

    Ainsi ça donnera le même genre de fonctionnement que le $k du foreach.
     
  18. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Ok pour ça, mais donc, je dois enlevé le "foreach" et laissé mon "while" ?
     
  19. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 985
    J'aime reçus:
    280
    Oui comme ton exemple initial.
     
  20. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Ok mais que deviens le "$k => $row" (surtout le row) si j'enlève le Foreach ?!
     
  21. Neo-Fx
    Neo-Fx Nouveau WRInaute
    Inscrit:
    8 Août 2012
    Messages:
    12
    J'aime reçus:
    0
    Bon je me réponds à moi même (et pour aider les autres), mais j'ai été un gros boulet sur ce coup...

    Comme me l'a dis Spout, il fallait bien que j'enlève le Foreach.
    Donc voici mon code final, pour un moteur de recherche PHP dynamique + jQuery:
    Code:
    $k = 0;       
      while($data = mysql_fetch_object($resultat))
        {
    	$search = range(0,2);
    	$lastKey = end(array_keys($search));
    	
    		if (!($k % 3)) {
    			echo '<div class="row-fluid">';
    		} ?>
    		<div class="span4 well2">
                          //données
                    </div>
    		
    	<?php	if (!(($k + 1) % 3) || $k == $lastKey) {
    			echo '</div>';
    		}
     $k++;
     }//Fin du While
    
    Ce qui donne bien:
    Code:
    <div class="row-fluid">
       <div class="span4 well2">
           //donnée 1
       </div>
       <div class="span4 well2">
           //donnée 2
       </div>
       <div class="span4 well2">
           //donnée 3
       </div>
    </div>
    Pour ceux qui veulent plus de code (en entier), dites le moi !
     
Chargement...
Similar Threads - style différent enregistrements Forum Date
Deux champ FORM styles différents sur une page Développement d'un site Web ou d'une appli mobile 31 Juillet 2009
Style wordpress Développement d'un site Web ou d'une appli mobile 11 Avril 2020
Ajouter style="display: block;" dans une div Développement d'un site Web ou d'une appli mobile 8 Janvier 2020
style.css unique préférable avec link ou javascript ? Développement d'un site Web ou d'une appli mobile 25 Décembre 2019
Appliquer style CSS CMS GHOST Développement d'un site Web ou d'une appli mobile 21 Mars 2019
trop de style CSS dans un code HTML Demandes d'avis et de conseils sur vos sites 12 Octobre 2018
choix d'un stylet Tablette Graphique pas cher ? Le café de WebRankInfo 12 Octobre 2018
feuilles de styles non obtenues par Googlebot Crawl et indexation Google, sitemaps 28 Septembre 2018
Quel site pour produire les styles css d'une page ? Développement d'un site Web ou d'une appli mobile 25 Avril 2018
AMP - CSS syntax error in tag 'style amp-custom' - invalid declaration Référencement Google 22 Mars 2016
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice