Bonjour.

Mon code ci-dessous permet de générer des numéros enregistrés dans un fichier .csv et de forcer leur téléchargement d'un fichier au format .csv via le header du Navigateur Internet.

Mais, vu que le téléchargement prend un certain temps avant que l'opération ne soit complète, l'utilisateur peut fermer par ERREUR le navigateur et donc ANNULER sans le savoir l'opération. Alors, en réfléchissant, j'ai pensé à envoyé le fichier qui devait être généré par EMAIL en pièce jointe.

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
$now = gmdate("D, d M Y H:i:s");
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("Last-Modified: {$now} GMT");
 
// force download  
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
 
$filename = "numero.csv";
 
// disposition / encoding on response body
header("Content-Disposition: attachment;filename={$filename}");
header("Content-Transfer-Encoding: binary");
 
ob_start();
$df = fopen("php://output", 'w');
 
// pour mettre un entête sur le CSV
$entetes = ['Numero'];
fputcsv($df, $entetes);
 
// numéro de base
$numero         = (isset($_POST['numField'])) ? $_POST['numField'] : 0;
// longueur souhaité (doit être plus grande que longueur de $numéro)
$longueur_total = (isset($_POST['numLength'])) ? $_POST['numLength'] : 0;
// longueur utilisé en retirant la longueur de base
$longueur       = $longueur_total - strlen($numero);
// calcule de la puissance de 10 en fonction de la longueur souhaité
$max            = pow(10, $longueur);
// affichage du maximun de tour de la boucle
// echo "<h1>$max</h1>";
for ($i = 0; $i < $max; $i++) {
    // différence de longueur
    $diff = $longueur - strlen($i);
    $zero = "";
    for ($a = 0; $a < $diff; $a++) {
        // ajout des zéro devant
        $zero .= "0";
    }
    // concaténation du résultat
    $resultat = $numero . $zero . $i;
    // effacement des zéro
    $zero     = "";
    // affichage du résultat
    $row = [$resultat];
    fputcsv($df, $row);
}
fclose($df);
echo ob_get_clean();
exit(0);
Alors, aidez-moi svp à modifier ce code qui, au lieu de générer les numéros dans un Fichier .csv et forcer le téléchargement via le Navigateur Web, doit désormais envoyer automatiquement à l'adresse email renseignée, le fichier généré en pièce jointe de peur que le Navigateur soit fermé avant la génération totale de la liste des Numéros.

Merci.