J'ai récemment fait une chose similaire dans un bulletin d'information désabonnement, voici mon code:
$signupsFile = 'newsletters/signups.csv';
$signupsTempFile = 'newsletters/signups_temp.csv';
$GLOBALS["signupsFile"] = $signupsFile;
$GLOBALS["signupsTempFile"] = $signupsTempFile;
function removeEmail($email){
$removed = false;
$fptemp = fopen($GLOBALS["signupsTempFile"], "a+");
if (($handle = fopen($GLOBALS["signupsFile"], "r")) !== FALSE) {
while (($data = fgetcsv($handle)) !== FALSE) {
if ($email != $data[0]){
$list = array($data);
fputcsv($fptemp, $list);
$removed = true;
}
}
fclose($handle);
fclose($fptemp);
unlink($GLOBALS["signupsFile"]);
rename($GLOBALS["signupsTempFile"], $GLOBALS["signupsFile"]);
return $removed;
}
celui-ci utilise la méthode de fichier temporaire d'écrire la ligne csv par ligne pour éviter les erreurs de mémoire. Ensuite, une fois le nouveau fichier créé, il supprime l'original et renomme le fichier temporaire.
Vous pouvez modifier ce code afin qu'il ressemble à une carte d'identité au lieu d'une adresse e-mail par exemple:
$id = $_GET['id'];
$fptemp = fopen('testimonials-temp.csv', "a+");
if (($handle = fopen('testimonials.csv', "r")) !== FALSE) {
while (($id= fgetcsv($handle)) !== FALSE) {
if ($id != $data[0]){
$list = array($data);
fputcsv($fptemp, $list);
}
}
fclose($handle);
fclose($fptemp);
unlink('testimonials.csv');
rename('testimonials-temp.csv','testimonials.csv');
Tu oublies la partie où vous écrivez le tableau csv à un autre fichier. Vous ne voulez pas non plus stocker tout le csv dans un tableau, car cela pourrait entraîner des erreurs de mémoire insuffisante. Mieux vaut écrire le csv de façon incrémentielle. –