par
Sinistrus » 31 août 2021, 13:01
Bonjour à tous,
Je patauge sur ce bout de code afin d'afficher la date ($msg) une seule fois par groupe de message de la même date dans une discussion.
Un peux comme affiche Whatsapp, la date du jour puis les échanges du même jour, puis la date du second jour et les échange de ce même second jour.
Pouvez-vous m'aider à corriger mon erreur svp ?
<?php
try{$stat = $pdo->query("SELECT date, auteur, texte FROM tab_texte GROUP BY date, auteur, texte ORDER BY date"); while($d = $stat->fetch(PDO::FETCH_GROUP)){
$date_e = strftime(DATE_SQL, strtotime($d["date"]));
if($d["auteur"] == "John") {$float = "float-end"; $color = "background-color:#c6dfb2";} else {$float = "float-start"; $color = null;}
if(strpos($d["texte"], "<Médias omis>") !== false){$texte = "<i class='fal fa-file-times fa-2x'></i> <Médias omis> ".$d["texte"];} else{$texte = nl2br($d["texte"]);}
if($date_e == $date_e) {
$msg = '<div class="alert-primary border pt-1 pb-1 ps-2 pe-2 mb-2 small mx-auto text-center" style="width:100px">'.strftime("%d/%m/%Y", strtotime($date_e)).'</div>';
}
//}}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";}
?>
<?php echo $msg; ?>
<?php
//try{$stat = $pdo->query("SELECT date, auteur, texte FROM tab_texte GROUP BY date, auteur, texte ORDER BY date"); while($d = $stat->fetch(PDO::FETCH_GROUP)){
?>
<div class="clearfix w-100 mb-3 small">
<div class="card <?php echo $float; ?>" style="<?php echo $color; ?>; max-width:70%; min-width:100px;">
<div class="card-body p-1">
<div class="pe-5"><?php echo $texte; ?></div>
<div class="small text-end text-muted"><?php echo strftime("%H:%M", strtotime($d["date"])); ?> <i class="fal fa-check-double"></i></div>
</div>
</div>
</div>
<?php }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} ?>
Voici ma table
CREATE TABLE `tab_texte` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime NULL DEFAULT NULL,
`auteur` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`texte` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `tab_texte` VALUES (1, '2020-11-30 14:03:00', 'Snow', 'Salut');
INSERT INTO `tab_texte` VALUES (2, '2020-11-30 14:19:00', 'John', 'Toute va bien ?');
INSERT INTO `tab_texte` VALUES (3, '2020-11-30 14:19:00', 'Snow', 'Oui merci et toi ?');
INSERT INTO `tab_texte` VALUES (4, '2020-12-01 09:03:00', 'John', 'Ca va, tout va bien merci !');
INSERT INTO `tab_texte` VALUES (5, '2020-12-01 09:05:00', 'Snow', 'Concernant le projet en cours, où tu en es ?');
INSERT INTO `tab_texte` VALUES (6, '2020-12-01 09:06:00', 'John', 'Il avance peux à peux...');
INSERT INTO `tab_texte` VALUES (7, '2020-12-01 09:07:00', 'Snow', 'Je reste en attente.');
Merci de votre aide
Bonjour à tous,
Je patauge sur ce bout de code afin d'afficher la date ($msg) une seule fois par groupe de message de la même date dans une discussion.
Un peux comme affiche Whatsapp, la date du jour puis les échanges du même jour, puis la date du second jour et les échange de ce même second jour.
Pouvez-vous m'aider à corriger mon erreur svp ?
[PHP]<?php
try{$stat = $pdo->query("SELECT date, auteur, texte FROM tab_texte GROUP BY date, auteur, texte ORDER BY date"); while($d = $stat->fetch(PDO::FETCH_GROUP)){
$date_e = strftime(DATE_SQL, strtotime($d["date"]));
if($d["auteur"] == "John") {$float = "float-end"; $color = "background-color:#c6dfb2";} else {$float = "float-start"; $color = null;}
if(strpos($d["texte"], "<Médias omis>") !== false){$texte = "<i class='fal fa-file-times fa-2x'></i> <Médias omis> ".$d["texte"];} else{$texte = nl2br($d["texte"]);}
if($date_e == $date_e) {
$msg = '<div class="alert-primary border pt-1 pb-1 ps-2 pe-2 mb-2 small mx-auto text-center" style="width:100px">'.strftime("%d/%m/%Y", strtotime($date_e)).'</div>';
}
//}}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";}
?>
<?php echo $msg; ?>
<?php
//try{$stat = $pdo->query("SELECT date, auteur, texte FROM tab_texte GROUP BY date, auteur, texte ORDER BY date"); while($d = $stat->fetch(PDO::FETCH_GROUP)){
?>
<div class="clearfix w-100 mb-3 small">
<div class="card <?php echo $float; ?>" style="<?php echo $color; ?>; max-width:70%; min-width:100px;">
<div class="card-body p-1">
<div class="pe-5"><?php echo $texte; ?></div>
<div class="small text-end text-muted"><?php echo strftime("%H:%M", strtotime($d["date"])); ?> <i class="fal fa-check-double"></i></div>
</div>
</div>
</div>
<?php }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} ?>[/PHP]
Voici ma table
[PHP]CREATE TABLE `tab_texte` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime NULL DEFAULT NULL,
`auteur` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`texte` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `tab_texte` VALUES (1, '2020-11-30 14:03:00', 'Snow', 'Salut');
INSERT INTO `tab_texte` VALUES (2, '2020-11-30 14:19:00', 'John', 'Toute va bien ?');
INSERT INTO `tab_texte` VALUES (3, '2020-11-30 14:19:00', 'Snow', 'Oui merci et toi ?');
INSERT INTO `tab_texte` VALUES (4, '2020-12-01 09:03:00', 'John', 'Ca va, tout va bien merci !');
INSERT INTO `tab_texte` VALUES (5, '2020-12-01 09:05:00', 'Snow', 'Concernant le projet en cours, où tu en es ?');
INSERT INTO `tab_texte` VALUES (6, '2020-12-01 09:06:00', 'John', 'Il avance peux à peux...');
INSERT INTO `tab_texte` VALUES (7, '2020-12-01 09:07:00', 'Snow', 'Je reste en attente.');[/PHP]
Merci de votre aide