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 :

Script 2 colonnes d'hier avec ajout [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut Script 2 colonnes d'hier avec ajout
    Je pensais que j'y arriverais seul et bien non.

    Hier, Sabotage m'a gentiment créé un script permettant d'afficher des enregistrements sur deux colonnes dans un tableau.

    Un autre membre émérite du forum m'a également créé (oui je sais, je suis un assisté )une fonction pour colorier certain champs de mon tableau en fonction que la date de l'événement est passée, actuelle, future.

    Je me casse la tête pour arriver à fusionner ces 2 scripts sans succès


    Voici le script pour colorier les dates:

    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
    $sql = "SELECT * FROM agenda ORDER by date_debut ASC "; 
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    //**
    // * Compare deux dates
    // * @param string $date
    // * @param string $date2 Si non renseigné, prendra la valeur de la date du jour
    // * @return int Retourne un nombre inférieur à 0 si la date  est antérieure à la date2, 0 si ce sont les mêmes, et supérieur à 0 si la date2 est postérieure à la date
    // */
    function compareDate($date, $date2 = null) {
        if ($date2 === null) {
            $date2 = date('Y-m-d');
     
        }
        return strtotime($date) - strtotime($date2);
    }
     
    $nextTaken = false;
     
    while ($data = mysql_fetch_assoc($req)) 
    {
        $lieu = $data["lieu"];
        $date = $data["date_debut"];
        echo '<tr>';
        if (compareDate($date) < 0) 
    	{
            echo '<td style="text-align: center;"><div class="past">'.$lieu.'</div></td> ';
        } else if (compareDate($date) == 0) 
    		{
            echo '<td style="text-align: center;"><div class="today">'.$lieu.'</div></td> ';
        	} else if (!$nextTaken) 
    				{
            		$nextTaken = true;
            		echo '<td style="text-align: center;"><div class="next">'.$lieu.'</div></td> ';
        			} else 
    					{
            			echo '<td style="text-align: center;"><div class="futur">'.$lieu.'</div></td> ';
        				}
     
     
    	?>


    et voici le code pour le tableau en 2 colonnes:

    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
    $sql = "SELECT lieu, date_debut FROM agenda ORDER by date_debut ASC "; 
    $req = mysql_query($sql);
     
    $i = 0;
    $c = 0;
     
    while ($row= mysql_fetch_assoc($req)) {
       $data[] = $row;
     
    }
     
    for ($i = 0; $i <= 10; $i++) {
        if (!isset($data[$i])) { break; }
        else {
     
     
    	echo '<tr>';	
     
     
           echo '<td>' . $data[$i]['date_debut'] . '</td><td>' . htmlspecialchars($data[$i]['lieu']) . '</td>';
     
     
           $j = $i + 11;
           if (isset($data[$j])) {
     
     
             echo '<td>' . $data[$j]['date_debut'] . '</td><td>' . htmlspecialchars($data[$j]['lieu']) . '</td>';
           }
           else {
             echo '<td></td><td></td></tr>';
     
          }
       }
    }
    echo '</table>';

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je n'ai pas bien compris l'histoire du "next" par contre

    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
    function ClassDate($date) {
       $now = date('Y-m-d');
       if ($date < $now) {
            return 'past';
       }
       elseif ($date > $now) {
           return 'future';
       }
       else {
           return 'today';
       }
    }
     
    $sql = "SELECT lieu, date_debut FROM agenda ORDER by date_debut ASC "; 
    $req = mysql_query($sql);
     
    $i = 0;
    $c = 0;
     
    while ($row= mysql_fetch_assoc($req)) {
       $row['ClassDate'] = ClassDate($row['date_debut']);
       $data[] = $row;
    }
     
    for ($i = 0; $i <= 10; $i++) {
        if (!isset($data[$i])) { break; }
        else {
     	echo '<tr>';	
            echo '<td><div class="' . $data[$i]['DateClass'] . '">' . $data[$i]['date_debut'] . '</div></td><td>' . htmlspecialchars($data[$i]['lieu']) . '</td>';
     
           $j = $i + 11;
           if (isset($data[$j])) {
               echo '<td><div class="' . $data[$j]['DateClass'] . '">' . $data[$j]['date_debut'] . '</div></td><td>' . htmlspecialchars($data[$j]['lieu']) . '</td>';
           }
           else {
             echo '<td></td><td></td></tr>';
           }
       }
    }
    echo '</table>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Merci pour ta réponse

    En fait le "next" est important car il s'agit d'afficher en une couleur distincte la rando qui suit celle qui vient de se terminer.

    Les "futur" sont celles qui viendront plus tard dans la saison.

    La mise à jour de ton script tenant compte de ce critère serait vraiment superbe.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Donc la NEXT c'est la premiere après TODAY ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Oui c'est exact.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un petit hack comme ça alors :
    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
     
    $next = TRUE;
     
    while ($row= mysql_fetch_assoc($req)) {
     
       $ClassDate = ClassDate($row['date_debut']);
       if ($ClassDate == 'future' && $next == TRUE) {
               $ClassDate = 'next';
               $next = FALSE;
       }
       $row['ClassDate'] = $ClassDate;
     
       $data[] = $row;
     
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Parfait, super balèze ton script.

    Je te remercie beaucoup pour ton aide

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 03/04/2015, 14h07
  2. [XL-2010] Fusion csv avec ajout colonne
    Par W.Dogui dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/05/2013, 23h01
  3. [2008R2] Ajout de colonne et insertion avec les valeur d'une autre colonne (ligne+1)
    Par diidouu dans le forum Développement
    Réponses: 3
    Dernier message: 30/04/2013, 15h15
  4. [XL-2003] transfert de plusieurs lignes en une seule avec ajout des colonnes
    Par ghatfan99 dans le forum Excel
    Réponses: 0
    Dernier message: 10/08/2011, 20h33
  5. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 15h38

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