Page 1 sur 1

requête SQL /EXCEL

Posté : 09 mai 2022, 17:30
par gabinou
Bonjour,
Débutante en PHP
J'ai 2 petites questions
J'ai fait l'export de ma base de données via un bouton
Est-il possible que cet export parte plutôt Ts les jours à une certaine heure par mail ( au lieu de se rendre sur le web pour l'exporter)?
J'aurai besoin de faire différentes requêtes mais que ces différentes requêtes sois dans des pages différentes de mon Excel et non tout dans la mm page , est ce possible?
Est ce normal que ma requête avec NOW ne marche qu'en ligne et non en local?
Y'a t'il moyen d'intégrer une feuille de style pour cette page au lieu d'écrire les balises styles à même le code?
J'en n'ai une a part sauf qu'elle marche que pour le fichier index, je ne vois pas ou l'intégrée dans cette page

En vous remerciant d'avance,

Code : Tout sélectionner

<?php $connect = mysqli_connect("localhost", "root", "root", "giraud"); if(isset($_POST["submit"])) { $query = "SELECT identifiant,nom,prenom,adresse,complementAdresse,ville,codePostal,mail,fixe,portable,kit,tube,aiguille,adaptateur,cartonSmall,cartonBig,etiquetteChronopost,enveloppeBulle,commentaire,dateCommande FROM exemple"; // $query = "SELECT * FROM exemple WHERE dateCommande BETWEEN DATE_ADD(DATE(NOW()),INTERVAL -7 DAY) AND DATE(NOW()) "; $res = mysqli_query($connect, $query); if(mysqli_num_rows($res) > 0) { $export = ' <h1 style="text-align:center"> recapitulatif de toutes les commandes </h1> <table> <tr style="border:1px solid black; height:30px"> <th>identifiant</th> <th>nom</th> <th>prenom</th> <th>adresse</th> <th>complement adresse</th> <th>ville</th> <th>code postal</th> <th>mail</th> <th>fixe</th> <th>portable</th> <th>nbre de kits</th> <th>nbre de tubes</th> <th>nbre aiguilles</th> <th>nbre adaptateur</th> <th>nbre petit carton</th> <th>nbre grand carton</th> <th>nbre etiquette chronopost</th> <th>nbre enveloppe bulle</th> <th>commentaire</th> <th>date commande</th> <th>Date d envoi</th> </tr> '; while($row = mysqli_fetch_array($res)) { $export .= ' <tr style="border-right:1px solid black; margin:10px"> <td>'.$row["identifiant"].'</td> <td>'.$row["nom"].'</td> <td>'.$row["prenom"].'</td> <td>'.$row["adresse"].'</td> <td>'.$row["complementAdresse"].'</td> <td>'.$row["ville"].'</td> <td>'.$row["codePostal"].'</td> <td>'.$row["mail"].'</td> <td>'.$row["fixe"].'</td> <td>'.$row["portable"].'</td> <td>'.$row["kit"].'</td> <td>'.$row["tube"].'</td> <td>'.$row["aiguille"].'</td> <td>'.$row["adaptateur"].'</td> <td>'.$row["cartonSmall"].'</td> <td>'.$row["cartonBig"].'</td> <td>'.$row["etiquetteChronopost"].'</td> <td>'.$row["enveloppeBulle"].'</td> <td>'.$row["commentaire"].'</td> <td>'.$row["dateCommande"].'</td> <td> </td> </tr> '; } $export .= '</table>'; header('Content-Type: application/xls'); header('Content-Disposition: attachment; filename=commande-ifce.xls'); echo $export; } } if(isset($_POST["submit"])) { $query = "SELECT identifiant,nom,prenom,adresse FROM exemple"; // $query = "SELECT * FROM exemple WHERE dateCommande BETWEEN DATE_ADD(DATE(NOW()),INTERVAL -7 DAY) AND DATE(NOW()) "; $res = mysqli_query($connect, $query); if(mysqli_num_rows($res) > 0) { $exporte = ' <h1 s> divers </h1> <table> <tr style="border:1px solid black; height:30px"> <th>identifiant</th> <th>nom</th> <th>prenom</th> <th>adresse</th> </tr> '; while($row = mysqli_fetch_array($res)) { $exporte .= ' <tr style="border-right:1px solid black; margin:10px"> <td>'.$row["identifiant"].'</td> <td>'.$row["nom"].'</td> <td>'.$row["prenom"].'</td> <td>'.$row["adresse"].'</td> </tr> '; } $exporte .= '</table>'; header('Content-Type: application/xls'); header('Content-Disposition: attachment; filename=commandes-ifce.xls'); echo $exporte; } } ?>

Re: requête SQL /EXCEL

Posté : 09 mai 2022, 20:13
par two3d
Est-il possible que cet export parte plutôt Ts les jours à une certaine heure par mail ( au lieu de se rendre sur le web pour l'exporter)?
Avec cron.
Est ce normal que ma requête avec NOW ne marche qu'en ligne et non en local?
AND DATE(NOW()) = pas besoin de DATE(), NOW() suffit.

NOW est avec les heures, secondes et minutes, tu en besoin ? non ? utilise CURDATE().

Dans ta requête, à moins d'avoir 40 colonnes (ce qu'il m'étonnerais sauf dans le cas d'une table non optimisée (pas de jointure)), fait un select * plutôt que de faire un select à rallonge.

Re: requête SQL /EXCEL

Posté : 10 mai 2022, 09:58
par gabinou
Merci de cet éclairage.
Donc après quelques recherche, CRON est à régler dans son hébergement, tu dois pouvoir sélectionner un fichier .
Je ne gère pas cet hébergement donc à voir avec mon prestataire.
La question, y'a t'il un script a mettre en place dans ce fichier pour que cela fonctionne?
Actuellement, j'avais fais un bouton pour exporter ce PDF ( donc inutile non?) donc celui ci pourra être envoyé par mail sans action de personne?

La requête SELECT * FROM formulaire_ifce WHERE dateCommande BETWEEN DATE_ADD(DATE(NOW()),INTERVAL -1 DAY) AND DATE(NOW()) est pour sélectionner les commandes du jour.
J'ai essayé avec NOW ou CURDATE mais cela ne marche pas, mon bouton export ne télécharge rien malgré que pas d'erreur si je l'a rentre dans le PhpMyAdmin.

Code : Tout sélectionner

SELECT * FROM formulaire_ifce WHERE (dateCommande = NOW());
Peut être un soucis dans ma BDD quand j'ai crée mon champ dateCommande? je l'ai enregistré en type timestamp
Non, je n'ai pas besoin de l'heure ( de toute façon, j'ai un soucis avec ma BDD , elle à 2 h de décalage )

En vous remerciant d'avance,

Re: requête SQL /EXCEL

Posté : 10 mai 2022, 10:36
par two3d
Il existe des services cron gratuits : https://duckduckgo.com/?q=Free+cron+job ... fab&ia=web
donc celui ci pourra être envoyé par mail sans action de personne?
C'est l'avantage de cron.
SELECT * FROM formulaire_ifce WHERE (dateCommande = NOW());
Les parenthèses à la fin servent à rien.
SELECT * FROM formulaire_ifce WHERE dateCommande = NOW();
NOW() = 2022-05-05 05:05:05, réfléchis deux secondes pourquoi cette requête ne trouve rien ? Parce quelle cherche aussi l'heure/min/sec, ça m'étonnerais que ta requête se porte sur ce besoin, je te le redits : utilise CURDATE() si c'est pour la recherche de date et pas d'heure/min/sec.

Ta colonne doit être DATE.

https://sql.sh/fonctions/date-heure
https://sql.sh/fonctions/now

Re: requête SQL /EXCEL

Posté : 10 mai 2022, 15:26
par gabinou
Merci pour ces petits éclaircissements