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

PHP & Base de données Discussion :

Récupération de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut Récupération de données
    Bonjour
    Je suis bloqué sur une requête, ou deux, pour un affichage en couleur, selon le chrono minimum et sur chaque piste .

    En gros dans ma liste il faut afficher le meilleurs chrono en vert.

    Voici mon code

    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
    37
    38
    39
    $date = date('Y');
    $sql = "select min(meiltemps)as meiltemps from toptemps where date='$date'";
    $req = $db->query($sql);
     
    while($row = $req->fetch()){
           $temps = $row['meiltemps']; }
    echo "<br /><br /><h1>Meilleurs <img src='images/chronom.png' alt='Icone chrono' id='test' /> $date</h1><br />";
     
    echo "<center><table width='80%' background='themes/mx-mysticjade/images/toolbar-bg.png' border='1' class='td2'><tr>
          <td width='30%'><enter>Piste</center></td>
          <td width='20%'><center>Pilote</center></td>
          <td width='30%'><center>Voiture</center></td>
          <td><center>Meilleur temps</center></td></tr></table></center>";
    $sql2 = "select pist,car,meiltemps,pil,prenom from toptemps where date='$date' order by pist,meiltemps ASC";
    $req2 = $db->query($sql2);
    $i=0;
          $values[0]="#515151";
          $values[1]="#212121";
    while($row = $req2->fetch()){
     
    $bgcolor=$values[$i % 2 ];
      $temps2 = $row['meiltemps'];  
     
    //********** test de sortie ****** //
    echo "$temps - $temps2";
    // ********** fin du test ****** //
     
                      if($temps<="$temps2"){$coul = "#FF6600";}
                      elseif($temps>="$temps2"){$coul = " ";}
     
    echo "<center><table width='80%' border='0' bgcolor='$bgcolor'><tr>
          <td width='30%'>".$row['pist']."</td>
          <td width='20%'><center>".$row['pil']." ".$row['prenom']."</center></td>
          <td width='30%'><center>".$row['car']."</center></td>
          <td bgcolor='$coul'><center>".$row['meiltemps']."</center></td></tr></table></center>";
     
     
      $i++;     
    }
    Donc mon soucis est qu'il me sort le minumum "$temp" uniquement et pas de chaque piste (vue la requête plus haut, je sais que ce n'est pas bon en sortie)
    Comment concaténer cela ?
    Voilà je pense le soucis mais je cale ici.

    Merci de votre aide

    Kitetkat

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Kitetkat Voir le message
    ..., selon le chrono minimum et sur chaque piste .
    Ce n'est pas indiqué dans la requête

  3. #3
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 581
    Par défaut
    Bonjour, tu dois récupérer quoi avec cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "select min(meiltemps)as meiltemps from toptemps where date='$date'";
    ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Merci d'avoir pris le temps de me répondre

    Le minimum de la colonne "meiltemps" mais dans une autre colonne, il y a la liste des pistes et c'est cela que je n'arrive pas à ressortir.
    Le minimum de chaque piste serait bien mais je ne sais pas comment traiter cette requête.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Demande-toi si tu as fourni suffisamment d'informations, codes et d'explications...

    Ce qui te parait évident ne l'est pas pour tout le monde...
    • "piste" ?
    • structure de la table ?
    • extrait significatif de la table (avec lequel on puisse tester) ?
    • exemple simple du résultat attendu ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Le mieux est de faire voir la page
    http://gtsimulations.eu/endurance/toptemps.php
    Je cherche juste à afficher d'une couleur le minimum du chrono pour chaque piste.

    Merci de votre aide

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    Ce n'est pas indiqué dans la requête
    Oui c'est justement la ou je demande de l'aide car je ne sais pas comment procéder...

    Au dessus il y a un lien qui donne le tableau final mais la couleur doit être sur le meilleur temps de chaque piste.

    Merci

  8. #8
    Membre éprouvé
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Par défaut
    En ajoutant un group by ?
    Avec la structure de ta table il serait plus facile de t'aider...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Bonjour
    Je ne sais pas comment m'en servir du group by sur ce genre de requête franchement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select min(meiltemps)as meiltemps from toptemps group by pist where date='$date'
    Pas certains que ce soit bon.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Alors j'avance doucement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select min(meiltemps)as meiltemps, pist from toptemps group by pist
    Sans la close where j'ai des changement mais c'est pas encore à 100% nikel

    Il y a des manques et d'autre ne sont pas valide
    Images attachées Images attachées  

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    C'est la dernière version pour le moment mais c'est pas encore le top :-(


    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
    $date = date('Y');
    $sql = "select MIN(meiltemps)as nombre, pist from toptemps where date='$date' group by pist";
    $req = $db->query($sql);
     echo "<br /><br /><h1>Meilleurs <img src='images/chronom.png' alt='Icone chrono' id='test' /> $date</h1><br />";
     
    echo "<center><table width='80%' background='themes/mx-mysticjade/images/toolbar-bg.png' border='1' class='td2'><tr>
          <td width='30%'><enter>Piste</center></td>
          <td width='20%'><center>Pilote</center></td>
          <td width='30%'><center>Voiture</center></td>
          <td><center>Meilleur temps</center></td></tr></table></center>";
    while($row = $req->fetch()){
           $nombre = $row['nombre'];
     
               }
    $sql2 = "select pist,car,meiltemps,pil,prenom from toptemps where date='$date' order by pist,meiltemps ASC";
    $req2 = $db->query($sql2);
    $i=0;
    $values[0]="#515151";
    $values[1]="#212121";
    while($row = $req2->fetch()){
    $bgcolor=$values[$i % 2 ];
     
    $temps2 = $row['meiltemps'];
        if($temps2<=$nombre){$coul = "#FF6600";}
        elseif($temps2>=$nombre){$coul = " ";}
     
    echo "<center><table width='80%' border='0' bgcolor='$bgcolor'><tr>
          <td width='30%'>".$row['pist']."</td>
          <td width='20%'><center>".$row['pil']." ".$row['prenom']."</center></td>
          <td width='30%'><center>".$row['car']."</center></td>
          <td bgcolor='$coul'><center>".$row['meiltemps']."</center></td></tr></table></center>";
     
     
     $i++;
          }

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    la 1ère requête ne sert à rien.

    Par contre, dans la 2ème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql2 = "select pist,car,meiltemps,pil,prenom from toptemps where date='$date' order by pist,meiltemps ASC";
    les résultats sont organisée :
    • 1/ d'abord par "pist" (ASC par défaut)
    • 2/ ensuite par "meiltemps ASC"


    Autrement dit : on affiche d'abord systématiquement le MEILLEUR temps par piste !
    On peut se servir de cette particularité.

    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
    37
    38
    39
    40
    41
    42
    43
    <?php
    $sql2 = "SELECT pist,car,meiltemps,pil,prenom FROM toptemps WHERE date='$date' ORDER BY pist ASC, meiltemps ASC";
    $req2 = $db->query($sql2);
    ?>
    	<table class="table_result">
    		<colgroup>
    			<col span="1" style="width:30%;" />
    			<col span="1" style="width:20%;" />
    			<col span="1" style="width:30%;" />
    			<col span="1" style="width:20%;" />
    		</colgroup>
    		<thead>
    		<tr>
    			<th scope="col">Piste</th>
    			<th scope="col">Pilote</th>
    			<th scope="col">Voiture</th>
    			<th scope="col">Meilleur temps</th>
    		</tr>
    		</thead>
    		<tbody>
    <?php
    $currentPiste = '';
    while($row = $req2->fetch())
    {
    	if( $currentPiste != $row['pist']) // c'est la 1ère ligne pour CETTE piste -> donc AUSSI le meilleur temps pour CETTE piste 
    	{
    		$currentPiste = $row['pist'];
    		$tdclass = ' class="best_time"';
    	} else {
    		$tdclass = '';
    	}
    	echo 
    '		<tr>
    			<td>'.$row['pist'].'</td>
    			<td>'.$row['pil'].' '.$row['prenom'].'</td>
    			<td>'.$row['car']."</td>
    			<td'.$tdclass.'>'.$row['meiltemps'].'</td>
    		</tr>
    		';
    }
    ?>
    		</tbody>
    	</table>
    N.B. Tu remarqueras AUSSI que j'ai écrit un code PROPRE et sémantique de la <table>, et que je n'ai QU'UNE SEULE <table> (!!) :


    N.B.bis TOUS les styles CSS de la table peuvent être regroupés dans un fichier CSS (externe) via la class="table_result".
    [EDIT] Voici à quoi pourrait ressembler le CSS :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .table_result { width:80%; margin:10px auto; border-collapse:collapse; color:#fff; text-align:center; }
    .table_result tr th { background-color:#cc3300;/*rouge*/ }
    .table_result tr:nth-child(even) td { background-color:#515151; }
    .table_result tr:nth-child(odd) td { background-color:#212121; }
    .table_result tr th, .table_result tr td { padding:5px; }
    .table_result tr td:nth-child(1) { text-align:left; }
    .table_result tr td.best_time { background-color:#ff6600;/*orange*/ font-weight:bold; }
    Dernière modification par Invité ; 24/06/2015 à 18h11.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Bon et bien, cela fonctionne


    Merci beaucoup pour l'aide

  14. #14
    Invité
    Invité(e)
    Par défaut
    1/ Mettre le background en orange est peut-être un peu trop "tape-à-l'oeil".
    On peut se contenter de mettre le temps en jaune-or :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .table_result tr td.best_time {
        color: #ffcc00; /*jaune-or*/
        font-weight: bold;
    }

    2/ Je vois aussi que le MENU est dans une <table>...
    Leur utilisation pour la mise en page est obsolète depuis le siècle dernier !!
    Les <table> ne servent qu'à afficher des données tabulaires ! (comme le tableau de résultat).

    Pour le MENU, réécris-le sous la forme d'une liste :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <nav id="navigation">
    <ul>
      <li>...</li>
      <li>...</li>
      <li>...</li>
    </ul>
    </nav>
    avec (au minimum) :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    #navigation li { display:inline-block; float:left; }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 10h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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