Salut, pas vraiment. Selon la doc file_put_contents "Revient à appeler les fonctions fopen(), fwrite() et fclose() successivement."
fputcsv sert à ajouter UNE ligne dans le fichier (que tu auras préalablement ouvert avec fopen), or dans $students tu as tous les étudiants qui représentent donc plusieurs lignes.
Et tu ne peux pas écrire fputcsv(C.csv,... qui de toute façon fera une erreur sur C.csv.
L'utilisation du fputcsv ressemblerait plutôt à ceci :
$fp = fopen('C.csv', 'w');
foreach ($students as $student) {
fputcsv($fp, $student, ';', '"');
}
fclose($fp);
Sauf que ça, ça serait à condition que chaque ligne de $students soit un tableau or dans mon code j'ai fait une boucle avec :
$students[] = implode(';', $student);
Ou chaque ligne de $students est donc une chaine de caractères où les colonnes de $student sont concaténées par un ;
Il faudrait donc à la place de ce code :
$students = array('Login;Nom;Pr_nom;Note;Note;Note;Note;Note');
foreach($students_a as $student)
$students[] = implode(';', $student);
file_put_contents('C.csv', implode("\n", $students));
Mettre celui ci :
$fp = fopen('C.csv', 'w');
fputcsv($fp, array('Login', 'Nom', 'Pr_nom', 'Note', 'Note', 'Note', 'Note', 'Note'), ';', '"');
foreach ($students_a as $student) {
fputcsv($fp, $student, ';', '"');
}
fclose($fp);
A noter que dans ce cas le formatage du fichier de sortie n'est donc plus le même que celui du fichier d'entrée ou il n'y a pas de délimiteur ".
PS : je dirai que le premier code est un peu plus sauvage, tandis que le deuxième est un peu plus académique. Et le deuxième sera plus adapté s'il y a beaucoup de lignes à traiter (quand je dis beaucoup, je pense à des milliers voir même plutôt des dizaines de milliers de lignes).
Salut, pas vraiment. Selon la doc file_put_contents "Revient à appeler les fonctions fopen(), fwrite() et fclose() successivement."
fputcsv sert à ajouter UNE ligne dans le fichier (que tu auras préalablement ouvert avec fopen), or dans $students tu as tous les étudiants qui représentent donc plusieurs lignes.
Et tu ne peux pas écrire fputcsv(C.csv,... qui de toute façon fera une erreur sur C.csv.
L'utilisation du fputcsv ressemblerait plutôt à ceci :
[php]$fp = fopen('C.csv', 'w');
foreach ($students as $student) {
fputcsv($fp, $student, ';', '"');
}
fclose($fp);[/php]
Sauf que ça, ça serait à condition que chaque ligne de $students soit un tableau or dans mon code j'ai fait une boucle avec :
[php]$students[] = implode(';', $student);[/php]
Ou chaque ligne de $students est donc une chaine de caractères où les colonnes de $student sont concaténées par un ;
Il faudrait donc à la place de ce code :
[php]$students = array('Login;Nom;Pr_nom;Note;Note;Note;Note;Note');
foreach($students_a as $student)
$students[] = implode(';', $student);
file_put_contents('C.csv', implode("\n", $students));[/php]
Mettre celui ci :
[php]$fp = fopen('C.csv', 'w');
fputcsv($fp, array('Login', 'Nom', 'Pr_nom', 'Note', 'Note', 'Note', 'Note', 'Note'), ';', '"');
foreach ($students_a as $student) {
fputcsv($fp, $student, ';', '"');
}
fclose($fp);[/php]
A noter que dans ce cas le formatage du fichier de sortie n'est donc plus le même que celui du fichier d'entrée ou il n'y a pas de délimiteur ".
PS : je dirai que le premier code est un peu plus sauvage, tandis que le deuxième est un peu plus académique. Et le deuxième sera plus adapté s'il y a beaucoup de lignes à traiter (quand je dis beaucoup, je pense à des milliers voir même plutôt des dizaines de milliers de lignes).