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 :

PHP MYSQL / Affichage date dans un tableau


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut PHP MYSQL / Affichage date dans un tableau
    Bonsoir à tous,

    Nom : poulet.jpg
Affichages : 4097
Taille : 296,5 Ko

    Voici l'affichage web d'une requête.

    Je voudrai savoir si il possible de n'afficher qu'une seule fois la date lorsque celle-ci est la même (exemple : une seule fois Mercredi 15/08/18 avec les deux enregistrements)

    Voici la requête actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query("SELECT  id, jour, jour2, mois, annee, produit, DATE_FORMAT(dlc, '%d/%m/%Y') AS dlc, lot, quantite, casse, heure_debut, heure_fin, temperature, controle_poids FROM poulet WHERE id='$test' ORDER BY `poulet`.`annee`DESC,`poulet`.`mois`DESC,`poulet`.`jour2`DESC,`poulet`.`date`DESC");
    Sachant que j'ai bien une colonne 'date' dans la table 'Poulet' de type 'timestamp' mais qui ne me sert quasiment pas.
    Les colonnes 'Année', 'mois', 'jour' et 'jour2' s'alimentent automatiquement dans la BDD dès lorsque je saisie une nouvelle entrée

    D'avance merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    montrez nous le code qui génère le tableau.

  3. #3
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Avec MySQL non. Par contre quand tu affiches les données il suffit d’utiliser une variable de travail initialisée à "" par exemple avant la boucle d’affichage. Dans la boucle si sa valeur est différente de celle de la table tu sauvegardes la nouvelle valeur dans la variable de travail et tu affiches la date. Sinon tu mets la date à afficher à "".

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Bonjour, voici le 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    <table width="70%" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#000000">
      <tbody>
        <tr>
          <td bgcolor="#BBBBBB" style="text-align: center;"><h5>Date de saisie</h5></td>
          <td width="73" bgcolor="#BBBBBB" style="text-align: center">&nbsp;</td>
          <td width="73" bgcolor="#BBBBBB" style="text-align: center"><h5>produit</h5></td>
          <td width="93" bgcolor="#BBBBBB" style="text-align: center"><h5>Quantité</h5></td>
          <td width="62" bgcolor="#BBBBBB" style="text-align: center"><h5>Casse<br>
            <span style="font-size: 9px">Après 6h<br>
            </span><span style="font-size: 9px"> de mise <br>
            en vente</span></h5></td>
          <td width="62" bgcolor="#BBBBBB" style="text-align: center"><h5>Vente</h5></td>
          <td width="65" bgcolor="#BBBBBB" style="text-align: center"><h5>Editer</h5></td>
          <td width="65" bgcolor="#BBBBBB" style="text-align: center"><h5>Détail</h5></td>
          </tr>
        <?php // On affiche chaque entrée une à une
    while ($donnees = $reponse->fetch())
     
    {
    ?>
        <tr>
    <td width="145" valign="middle" bgcolor="#F0F0F0" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', 'DejaVu Sans', Verdana, sans-serif;"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tbody>
          <tr>
            <td width="50%" style="text-align: right"><a href="produit_poulet_jour.php?product=<?php echo $donnees[jour]; ?>"><?php echo $donnees[jour]; ?></a>&nbsp;</td>
            <td width="50%" style="text-align: center"><?php echo $donnees[jour2]; ?>/<?php echo $donnees[mois]; ?>/<?php echo $donnees[annee]; ?></td>
            </tr>
        </tbody>
    </table></td>
    <td bgcolor="#FFFFFF" style="text-align: center"><?php
    $talon2 = $donnees[produit];
     $talon = "Talon de Jambeau";
     
    if ($talon2 == $talon)
    {
    echo '<img src="../talon.png" width="100" >';
     
    ?><?php  }
    ?>
     
    <?php
    $cuisse2 = $donnees[produit];
     $cuisse = "Cuisse de Poulet";
     
    if ($cuisse2 == $cuisse)
    {
    echo '<img src="../cuisses.jpeg" width="100" >';
     
    ?><?php  }
    ?>
     
    <?php
    $jambonneau2 = $donnees[produit];
     $jambonneau = "Jambonneau Nature";
     
    if ($jambonneau2 == $jambonneau)
    {
    echo '<img src="../jambonneau.jpg" width="100" >';
     
    ?><?php  }
    ?>
     
    <?php
    $fermier2 = $donnees[produit];
     $fermier = "Poulet Fermier";
     
    if ($fermier2 == $fermier)
    {
    echo '<img src="../poulet fermier.jpeg" width="100" >';
     
    ?><?php  }
    ?>
     
    <?php
    $dorees2 = $donnees[produit];
     $dorees = "Pomme de Terre Dorées";
     
    if ($dorees2 == $dorees)
    {
    echo '<img src="../dorees.jpeg" width="100" >';
     
    ?><?php  }
    ?>
     
    <?php
    $ailes2 = $donnees[produit];
     $ailes = "Ailes de Poulet";
     
    if ($ailes2 == $ailes)
    {
    echo '<img src="../ailes.jpeg" width="100" >';
     
    ?><?php  }
    ?><?php
    $poulet2 = $donnees[produit];
     $poulet = "Poulet Standard";
     
    if ($poulet2 == $poulet)
    {
    echo '<img src="../Unknown-3.jpeg" width="100" >';
     
    ?>
      <?php  }
    ?><?php
    $grenaille2 = $donnees[produit];
     $grenaille = "Pomme de Terre Grenaille";
     
    if ($grenaille2 == $grenaille)
    {
    echo '<img src="../grenaille.jpeg" width="100" >';
     
    ?>
      <?php  }
    ?><?php
    $mexicaine2 = $donnees[produit];
     $mexicaine = "Pomme de Terre Mexicaine";
     
    if ($mexicaine2 == $mexicaine)
    {
    echo '<img src="../mexicaine.jpeg" width="100" >';
     
    ?>
      <?php  }
    ?><?php
    $wedge2 = $donnees[produit];
     $wedge = "Pomme de Terre Wedges";
     
    if ($wedge2 == $wedge)
    {
    echo '<img src="../wedge.jpg" width="100" >';
     
    ?>
      <?php  }
    ?></td>
          <td bgcolor="#F0F0F0" style="text-align: center"><a href="produit_select.php?product=<?php echo $donnees[produit]; ?>"><?php echo $donnees[produit]; ?></a></td>
          <td bgcolor="#F0F0F0" style="text-align: center"><?php echo $donnees['quantite']; ?></td>
          <td bgcolor="#F0F0F0" style="text-align: center"><?php echo $donnees['casse']; ?></td>
          <td bgcolor="#F0F0F0" style="text-align: center"><?php echo $donnees['quantite']-$donnees['casse']; ?></td>
        <td bgcolor="#F0F0F0" style="text-align: center"><p><a href="modifier_cuisson.php?product=<?php echo $donnees[id]; ?>"><img src="../editer.png" width="25" height="25" alt=""/></a></p></td>
        <td bgcolor="#F0F0F0" style="text-align: center"><p><a href="voir_cuisson.php?product=<?php echo $donnees[id]; ?>" target="_blank"><img src="../detail.jpg" width="25" height="25" alt=""/></a></p></td>
        <?php
    }
     
    $reponse->closeCursor(); // Termine le traitement de la requête
     
    ?>    </tr>
      </tbody>
    </table>
    D'avance merci

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Avant ta boucle tu initialise une variable
    Au tout début de ta boucle tu ajoute une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dateCourante = $donnees['jour2'].'/'.$donnees['mois'].'/'.$donnees['annee'];
    Au moment d'afficher la date tu vérifies si $dateCourante est différente de $datePrecedenteSi c'est le cas tu affiches [CODEINLINE]$dateCourante[/CODE]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($dateCourante != $datePrecedente)
        echo $dateCourante;
    A la fin de ta boucle tu assigne $datePrecedente à $dateCourante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datePrecedente = $datePrecedente;
    Attention à ton utilisation des indices de tableau. En l'état ton code doit être plein de warnings :
    doit s'écrire
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- ton code HTML pour la <table> m'a fait saigner des yeux....
    • attributs obsolètes (valign, bgcolor,...)
    • une <table> dans un <td>
    • pas de <thead>, ni de <th>,...

    A LIRE absolument :


    2- @grunk & badaze
    Aucun de vous n'a proposé la fusion des cellules !
    Il faut bien dire que c'est là la principale difficulté, puisqu'il faut connaitre le nombre de ligne concernées (pour chaque date) pour pouvoir écrire
    sur la 1ère ligne :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <tr>
       <td rowspan="...??...">(la date)</td>
       <td>autre donnée</td>
       <td>autre donnée</td>
    </tr>
    et sur les suivantes (avec la même date) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <tr>
       <!-- (RIEN ici) -->
       <td>autre donnée</td>
       <td>autre donnée</td>
    </tr>
    Perso, je passerais par la création d'un array intermédiaire, où on stocke, pour chaque date, le nombre d’occurrences.

    3-
    Citation Envoyé par badaze Voir le message
    ...Pour afficher une image tu as une série de if qui alourdissent l'écriture du programme et donc sa maintenabilité...
    La meilleur solution est quand même d'enregistrer les URL des images dans la bdd, pour chaque produit !
    Dernière modification par Invité ; 17/08/2018 à 13h44.

  7. #7
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Bonjour, fait un Group By sur le champ date et fusionner les lignes qui ont la même date.

    Cordialement.

  8. #8
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    @badaze
    3-
    La meilleur solution est quand même d'enregistrer les URL des images dans la bdd, pour chaque produit !
    Tout à fait. C'est bien pour cela que j'ai écrit "A défaut d'une structure généralisable". Je dirais même mieux il faut aussi travailler avec une table des articles qui contiendrait à minima un code une description et l'url de l'image.
    Car comme c'est fait actuellement c'est ingérable à moyen et long terme. Il suffit de voir le code actuel où tout ajout de produit se traduit par une modification du code.

  9. #9
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Tu peux t'inspirer de ça.

    Code php : 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
     
        <?php // On affiche chaque entrée une à une
    $savdate = "";
    while ($donnees = $reponse->fetch())
     
    {
     $curdate = $donnees['jour2'].'/'.$donnees['mois'].'/'.$donnees['annee'];
     $jour    = "";
     if ($savdate != $curdate)
     {
      $savdate = $curdate;
      $jour    = $curdate;
     }
     ?>
        <tr>
    <td width="145" valign="middle" bgcolor="#F0F0F0" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', 'DejaVu Sans', Verdana, sans-serif;"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tbody>
          <tr>
            <td width="50%" style="text-align: right"><a href="produit_poulet_jour.php?product=<?php echo $donnees[jour]; ?>"><?php echo $donnees[jour]; ?></a>&nbsp;</td>
            <td width="50%" style="text-align: center"><?php echo $jour; ?></td>

    Nom : Capture20180816_001.JPG
Affichages : 2092
Taille : 84,2 Ko

    Quelques conseils :
    Quand tu écris $donnees[mois] il faut mettre des apostrophes aux chaînes de caractères => $donnees['mois']

    Pour afficher une image tu as une série de if qui alourdissent l'écriture du programme et donc sa maintenabilité. A défaut d'une structure généralisable, tu peux faire comme suit.

    Tu crées un tableau avec types de produits. Type de produit donne image . En guise d'exemple, je n'en ai mis que 3.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $arrayImg = array('Talon de Jambeau' => '../talon.png','Cuisse de Poulet' => '../cuisses.jpeg', 'Jambonneau Nature' => '../jambonneau.jpg');

    Puis ce code là te remplace au moins 100 lignes !!!
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <td bgcolor="#FFFFFF" style="text-align: center"><?php
    if (isset($arrayImg[$donnees['produit']]))
    {
     echo '<img src="'.$donnees['produit'].'" width="100" >';
    }?>
    </td>

Discussions similaires

  1. Affichage des dates dans un tableau html
    Par flobos dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/07/2017, 09h59
  2. [WD17] Mauvais affichage du champ date dans un tableau
    Par GAJES dans le forum WinDev
    Réponses: 14
    Dernier message: 24/08/2016, 10h52
  3. [MySQL] affichage d'une date dans un tableau
    Par toomou dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2009, 10h56
  4. affichage et calcule de la date dans un tableau
    Par argon dans le forum Interfaces Graphiques en Java
    Réponses: 35
    Dernier message: 22/06/2006, 10h51
  5. [VB.NET] - affichage dynamique dans un tableau
    Par karibouxe dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/06/2005, 15h07

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