Mettre deux lignes d'une requête sql en une seule dans un fichier Excel
Fermé
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
-
5 mai 2021 à 16:03
yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 - 19 mai 2021 à 13:23
yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 - 19 mai 2021 à 13:23
A voir également:
- Mettre deux lignes d'une requête sql en une seule dans un fichier Excel
- Fichier rar - Guide
- Aller à la ligne dans une cellule excel - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Comment réduire la taille d'un fichier - Guide
5 réponses
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Ambassadeur
1 551
Modifié le 5 mai 2021 à 17:42
Modifié le 5 mai 2021 à 17:42
bonjour,
je suggère de remplacer ta bouccle while par:
EDIT: quelques modifs
je suggère de remplacer ta bouccle while par:
$gauche = TRUE; while($row = mysqli_fetch_array($result)) { if ($gauche) { $output .= ' <tr> '; } $output .= '<td>'.$row["dates"].'</td> <td>'.$row["io1"].'</td> <td>'.$row["lat"].'</td> <td>'.$row["lng"].'</td> <td>'.$row["io1"].'</td> <td>'.$row["lat"].'</td> <td>'.$row["lng"].'</td>'; if ( ! $gauche) { $output .= ' </tr> '; } $gauche = ! $gauche; }
EDIT: quelques modifs
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
Modifié le 6 mai 2021 à 00:17
Modifié le 6 mai 2021 à 00:17
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
6 mai 2021 à 00:27
6 mai 2021 à 00:27
peux-tu montrer ton code?
tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Modifié le 6 mai 2021 à 09:38
Modifié le 6 mai 2021 à 09:38
Bonjour,
c'est bien fait ,
c'est bien fait ,
$query = " SELECT ...."; $result= $mysqli->query($query); if( mysqli_num_rows($result) > 0){ $output .= ' <table class="table" bordered="1"> <tr> <th class="virsteligne">Date start</th> <th class="virsteligne">IO start</th> <th class="virsteligne">lat start</th> <th class="virsteligne">lng start</th> <th class="virsteligne">Date stop</th> <th class="virsteligne">IO stop</th> <th class="virsteligne">lat stop</th> <th class="virsteligne">lng stop</th> </tr> '; while($row = mysqli_fetch_array($result)) { $output .= ' <tr> <td>'.$row["dates"].'</td> <td>'.$row["io1"].'</td> <td>'.$row["lat"].'</td> <td>'.$row["lng"].'</td> <td>'.$row["io1"].'</td> <td>'.$row["lat"].'</td> <td>'.$row["lng"].'</td> </tr>';} $output .= '</table>'; $filename = "Rapport_".date('Y-m-d H:i:s') . ".xls"; header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"$filename\"");
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
>
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
6 mai 2021 à 10:24
6 mai 2021 à 10:24
as-tu testé ma suggestion en #1?
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
6 mai 2021 à 12:31
6 mai 2021 à 12:31
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
6 mai 2021 à 13:35
6 mai 2021 à 13:35
Avez vous des idées comment je peut supprimer les doublons en jeunes :(
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
Modifié le 6 mai 2021 à 14:45
Modifié le 6 mai 2021 à 14:45
..... $result= $mysqli->query($query); if( mysqli_num_rows($result) > 0) { $output .= ' <table class="table" bordered="1"> <tr> <th class="virsteligne">Article</th> <th class="virsteligne">Date start</th> <th class="virsteligne">Heure start</th> <th class="virsteligne">GPS Start</th> <th class="virsteligne">Adress start</th> <th class="virsteligne">Date stop</th> <th class="virsteligne">Heure stop</th> <th class="virsteligne">Coordonnées GPS STOP</th> <th class="virsteligne">Adresse stop</th> <th class="virsteligne">Temps</th> <th class="virsteligne">Contact</th> <th class="virsteligne">Station </th> <th class="virsteligne">Trajet</th> <th class="virsteligne">ometre</th> </tr>'; $gauche = TRUE; while($row = mysqli_fetch_array($result)){ if ($gauche) { $output .= ' <tr> '; } $output .= ' <td>'.$row["name"].'</td> //Début Tous les lignes de la base de donnéees dont les Io=1 // <td>'.date("d/m/Y", strtotime($row["date"])).'</td> <td>'.date("H:i:s", strtotime($row["date"])).'</td> <td>'.$row["lat"].','.$row["lng"].'</td> <td>'.$row["name"].'</td> //Fin //Début Tous les lignes de la base de donnéees dont les Io=0 // <td>'.date("d/m/Y", strtotime($row["dt_trackers"])).'</td> <td>'.date("H:i:s", strtotime($row["dt_trackers"])).'</td> <td>'.$row["lat"].','.$row["lng"].'</td> <td>'. $adresse.'</td> //Fin <td>'.$row["Temps"].'</td> <td>'.$row["Contact"].'</td> <td>'.$row["Station"].'</td> <td>'.$row["Trajet"].'</td> <td>'.$row["ometre"].'</td>'; if ( ! $gauche) { $output .= ' </tr> '; } $gauche = ! $gauche; } $output .= ' <tr> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne">Somme</th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> <th class="lastligne"></th> </tr> '; $output .= '</table>'; $filename = "Rapport_".date('Y-m-d H:i:s') . ".xls"; header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"$filename\""); }
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
6 mai 2021 à 15:33
6 mai 2021 à 15:33
et en remplaçant les lignes 31 à 53 par:
$output .= '<td>'.$row["dates"].'</td> <td>'.$row["io1"].'</td> <td>'.$row["lat"].'</td> <td>'.$row["lng"].'</td>';, n'obtiens-tu pas ce que tu décris en #2?
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
6 mai 2021 à 18:13
6 mai 2021 à 18:13
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
>
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
6 mai 2021 à 18:38
6 mai 2021 à 18:38
peux-tu montrer le code?
je me demande si tu n'essaies pas d'obtenir autre chose que ce que tu expliquais en #2.
je me demande si tu n'essaies pas d'obtenir autre chose que ce que tu expliquais en #2.
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Modifié le 7 mai 2021 à 00:44
Modifié le 7 mai 2021 à 00:44
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
>
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
7 mai 2021 à 09:30
7 mai 2021 à 09:30
moi je rejouterais ceci à la première ligne du SELECT:
timediff(cp.dates, dp.dates) as duree
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
7 mai 2021 à 11:54
7 mai 2021 à 11:54
J'ai la ajouté au niveau de requête de SELECT mais ca pas donnée la bonne résultat et à mon avis c'est incorrecte de le mettre au niveau de SELECT car le résultat de select est :
Le résultat au niveau de Excel est :
Et n'oublier pas que les valeurs de SELECT sont devenue dans une seule ligne (avec le code #10)
Le résultat au niveau de Excel est :
Et n'oublier pas que les valeurs de SELECT sont devenue dans une seule ligne (avec le code #10)
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
7 mai 2021 à 12:47
7 mai 2021 à 12:47
il est en effet préférable de calculer la différence de dates en PHP.
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Modifié le 9 mai 2021 à 01:17
Modifié le 9 mai 2021 à 01:17
Oui c'est vrai mais comment je peux le faire en PHP vue que j'ai passé par une long requête pour filtrer les 1iere dont j'ai io1=1 puis les 1iere dont io1=0 et a ce de suite (la requête de select c'est déjà assez compliquer ) :
EDIT : Ajout des balises de code
Qui donne comme résultat :
*
2020-07-23 10:42:26 - 2020-07-23 10:16:50 et puis
2020-07-23 10:59:04 - 2020-07-23 10:56:55 ( c-a-d Io0 -Io1) ....
select cp.idc as id, cp.dt_trackers, cp.io1c as io1, cp.name, TIMEDIFF(cp.dt_trackers, dp.dt_trackers) as duree from (select d1.id as idc, d1.io1 as io1c, d1.dt_trackers, max(d2.id) as idp, d1.name from gs_data as d1, gs_data as d2 where d1.id > d2.id group by d1.id) as cp, gs_data as dp where dp.id = cp.idp and dp.io1 <> cp.io1c ;
EDIT : Ajout des balises de code
Qui donne comme résultat :
*
-
- Donc moi je doit faire au niveau de cette requete :
-
2020-07-23 10:42:26 - 2020-07-23 10:16:50 et puis
2020-07-23 10:59:04 - 2020-07-23 10:56:55 ( c-a-d Io0 -Io1) ....
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
>
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
7 mai 2021 à 13:25
7 mai 2021 à 13:25
c'est assez simple:
- quand tu traites un enregistrement de gauche, tu mémorises sa date dans une variable
- quand tu traites un enregistrement de droite, tu calcule la durée et tu l'affiches
- quand tu traites un enregistrement de gauche, tu mémorises sa date dans une variable
- quand tu traites un enregistrement de droite, tu calcule la durée et tu l'affiches
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
9 mai 2021 à 00:04
9 mai 2021 à 00:04
Oui c'est ca : Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
9 mai 2021 à 00:21
9 mai 2021 à 00:21
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
9 mai 2021 à 08:55
9 mai 2021 à 08:55
moi, je calculerais la somme en PHP, en additionnant les valeurs dans la boucle d'affichage.
je me demande si il est utile de faire la somme des valeurs des odomètres.
je me demande si il est utile de faire la somme des valeurs des odomètres.
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
9 mai 2021 à 19:42
9 mai 2021 à 19:42
Merci,
Oui bonne question : C'est inutile
Oui bonne question : C'est inutile
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
18 mai 2021 à 16:00
18 mai 2021 à 16:00
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
>
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
18 mai 2021 à 16:19
18 mai 2021 à 16:19
moi je ferais presque comme en #18:
- quand tu traites un enregistrement de droite, tu mémorises sa date dans une variable et tu ne termines pas la ligne de la table
- quand tu traites un enregistrement de gauche, sauf le premier, tu calcules la durée "contact off" et tu l'affiches à la fin de la ligne précédente, que tu termines
- à la fin de la boucle, il faut terminer la dernière ligne
- quand tu traites un enregistrement de droite, tu mémorises sa date dans une variable et tu ne termines pas la ligne de la table
- quand tu traites un enregistrement de gauche, sauf le premier, tu calcules la durée "contact off" et tu l'affiches à la fin de la ligne précédente, que tu termines
- à la fin de la boucle, il faut terminer la dernière ligne
Lemjid
Messages postés
71
Date d'inscription
mardi 26 février 2019
Statut
Membre
Dernière intervention
15 juillet 2021
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
18 mai 2021 à 16:40
18 mai 2021 à 16:40
Voila mon boucle while déjà calculer les date a droite et à gauche :
while($row = mysqli_fetch_array($result)){ $odometre =(($row["odometre"])/1000); $odometre_converti = str_replace('.',',',$odometre); $duree =((strtotime($row["dt_trackers"]))-(strtotime($row["dt_trackers"]))); $objadd=new DbFunction(); $adresse=$objadd->geolocationAddress($row["lat"],$row["lng"]); if ($gauche) { $output .= ' <tr> <td>'.$row["name"].'</td>'; $d1 = $row["dt_trackers"]; $odometre1 = $row["odometre"]; } $output .= ' <td>'.date("d/m/Y", strtotime($row["dt_trackers"])).'</td> <td>'.date('H:i:s', (strtotime("+60 minute", strtotime($row["dt_trackers"])))).'</td> <td>'.$row["lat"].','.$row["lng"].'</td> <td>'.$adresse.'</td>'; if ( ! $gauche) { $d2 = $row["dt_trackers"]; $duree =((strtotime($d2))-(strtotime($d1))); $odometre2 = $row["odometre"]; $distance=($odometre2-$odometre1); $output .= ' <td>'.date('H:i:s',$duree).'</td> <td>'.$row["contact_off"].'</td> <td>'.$row["stationaire_m"].'</td> <td>'.$distance.'</td> <td>'.$odometre_converti.'</td> </tr>'; } $gauche = ! $gauche; }