Bonjour,

ça fait plusieurs que je traine ce problème, mais comme je ne trouve pas de solution, je crée une discussion propre à cela.

Ma démarche : j'ai une classe Ticket qui gère des fichiers CSV. J'ai créé dedans une méthode ticketUpload :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public function ticketUpload()
{
    $tic_upload=new CSVUpload();
    $tic_upload->csv_upload();
}
qui va donc chercher une méthode de la classe CSVUpload :
Code php : 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
53
54
55
56
57
58
59
60
61
62
 
<?php
namespace Classes\Olivier;
use vendor\PhpEcho\PhpEcho;
use Classes\CSVParser;
 
class CSVUpload
{
public function __construct()
{}
public function csv_upload()
{
$this->formCsvARMToDb();
 
// contrôle du fichier transmis
if (isset($_POST['submitfile1'])) { 
    $info =  pathinfo($_FILES['file1']['name'], PATHINFO_EXTENSION);
    if ($info !== 'csv') {
        $body = new PhpEcho();
        $body->setCode('<p>This file is not a .csv file</p>');
        echo new PhpEcho([DIR_ROOT, 'view Layout.php'], ['body' => $body]);
        exit;
    }
    else
    {
        $body = new PhpEcho('', ['msg_end' => $_FILES['file1']['name']." is uploaded, start processing."]);
        $body->setCode('<p>'.$body('msg_end').'<br></p>');
        echo new PhpEcho([DIR_ROOT, 'view Layout.php'], ['body' => $body]);
 
        // fichier ok, parsage
        $csv_parser = new CSVParser($_FILES['file1']);
        if ($csv_parser->parse()) {
                $body = new PhpEcho('', ['msg_end' => $_FILES['file1']['name']." fully processed, without errors."]);
                $body->setCode('<p>'.$body('msg_end').'</p>');
                echo $body;
        } 
        else
        {
                // traitement des erreurs remontées par le parser
        }
    } 
 /*   else 
    {
    // aucun fichier transmis
    }*/
}//fin de if (isset($_POST['submitfile1'])
else echo "pas de \$_POST<br/>";
}//end csv_upload
 
public function formCsvARMToDb()
{ 
    $page = new PhpEcho([DIR_ROOT, 'view Layout.php']);
 
    $body = new PhpEcho([DIR_ROOT, 'view formCsvARMToDb.php'], []);
    $page['body'] = $body;
 
    // on renvoie au navigateur la page assemblée
    echo $page;
}
 
}
?>
Pour l'affichage des vues html, j'utilise la classe PhpEcho de rawsrc.
Mon souci est que dans la méthode CSVUpload, contrairement à ce que j'espérais, la variable $_POST n'existe pas (on passe dans le else de la ligne 47). Donc comment faut-il s'y prendre ?