Avatar billede sazo Nybegynder
20. juli 2008 - 16:17 Der er 15 kommentarer og
1 løsning

Slet linie i CSV fil

Hey Eksperter

Jeg har følgende kode:

<?php
$myFile = "graph_data.csv";
$fh = fopen($myFile, 'w') or die("can't open file);
$replaces = array($mailme => '');
$stringData = str_replace(array_keys($replaces), array_values($replaces), $fh);
fwrite($fh, $stringData);
fclose($fh);
?> 

Meningen er at når filen åbnes som f.eks.

www.xxx.dk/filnavn?mailme=test@test.dk,

skal CSV filen åbnes, og alle steder hvor der står "test@test.dk," skal der stå intet, men det virker ikke. Håber i kan se hvad der er gjort galt, og hvordan det skal rettes.

(Det der skal ske er: 1@1.dk,2@2.dk,2@2.dk,2@2.dk, bliver til 2@2.dk,2@2.dk,2@2.dk, når filen virker)

Ved ikke om det giver menigen, ellers bare spørg, så finder jeg et bedre eksempel :)

//Sazo
Avatar billede jakobdo Ekspert
20. juli 2008 - 19:06 #1
Står emails pr linie ?
Eller hvordan ser en linie ud i din csv fil ?
Avatar billede sazo Nybegynder
20. juli 2008 - 19:13 #2
De står på én linie, og det vil de altid gøre... :)
Avatar billede jakobdo Ekspert
20. juli 2008 - 20:11 #3
Noget ala:

<?php
$myFile = "graph_data.csv";
$data = file($myFile);
$remove = array('em@il.dk','noget@andet.dk');
for($i = 0; $i < count($data); $i++){
    if(in_array($data[$i],$remove)){
        unset($data[$i]);
    }
}
$myNewFile = "new_graph_data.csv";
$fh = fopen($myNewFile, 'w') or die("can't open file);
fwrite($fh, implode(",",$data));
fclose($fh);
?>
Avatar billede sazo Nybegynder
20. juli 2008 - 20:39 #4
Næsten, men den skal fjerne det som man skriver ved at sige ?mailme=em@il.dk efter filens navn, hvis du forstår? :) (Det den skal fjerne skal skrives i en variabel kaldet $mailme) :)
Avatar billede sazo Nybegynder
20. juli 2008 - 20:40 #5
Og den skal overskrive den gamle fil, ikke gemme i en ny... :)
Avatar billede jakobdo Ekspert
20. juli 2008 - 20:52 #6
<?php
$myFile = "graph_data.csv";
$data = file($myFile);
$remove = $_GET['mailme'];
for($i = 0; $i < count($data); $i++){
    if(in_array($data[$i],$remove)){
        unset($data[$i]);
    }
}
$fh = fopen($myFile , 'w') or die("can't open file);
fwrite($fh, implode(",",$data));
fclose($fh);
?>
Avatar billede jakobdo Ekspert
20. juli 2008 - 20:53 #7
<?php
$myFile = "graph_data.csv";
$data = file($myFile);
$remove = $_GET['mailme'];
for($i = 0; $i < count($data); $i++){
    if(trim($data[$i]) == $remove)){
        unset($data[$i]);
    }
}
$fh = fopen($myFile , 'w') or die("can't open file);
fwrite($fh, implode(",",$data));
fclose($fh);
?>
Avatar billede sazo Nybegynder
20. juli 2008 - 21:02 #8
Den siger følgende fejl:

Parse error: syntax error, unexpected ',' in /home/virtual/life-log.dk/public_html/test/deletetxt.php on line 11
Avatar billede jakobdo Ekspert
20. juli 2008 - 21:38 #9
Hvad er linie 11 ?
Avatar billede jakobdo Ekspert
20. juli 2008 - 21:41 #10
<?php
//http://www.eksperten.dk/spm/838896
$myFile = "graph_data.csv";
$data = file($myFile);
$remove = $_GET['mailme'];
for($i = 0; $i < count($data); $i++){
    if(trim($data[$i]) == $remove){
        unset($data[$i]);
    }
}
$fh = fopen($myFile , 'w') or die("can't open file");
fwrite($fh, implode(",",$data));
fclose($fh);
?>
Avatar billede sazo Nybegynder
20. juli 2008 - 22:57 #11
Min CSV's indhold hedder:

test@test.dk, noget@bogwe.dk, sazo@sol.dk, test@jubii.dk,

og jeg bruger følgende link:

http://life-log.dk/test/deletetxt.php?mailme=sazo@sol.dk,

Problemet er at din kode ikke sletter sazo@sol.dk i min CSV fil, dog er der ikke fejlmelding på den længere. :)
Avatar billede jakobdo Ekspert
21. juli 2008 - 08:01 #12
Men når du siger:
test@test.dk, noget@bogwe.dk, sazo@sol.dk, test@jubii.dk,
Så er det jo ikke:
test@test.dk
noget@bogwe.dk
sazo@sol.dk
test@jubii.dk

Som du sagde.
Du sagde en email pr. linie.
Men vi snakker en linie, med mange emails der bliver adskilt af , (komma).
Avatar billede jakobdo Ekspert
21. juli 2008 - 08:13 #13
<?php
//http://www.eksperten.dk/spm/838896
$myFile = "838896exp.csv";
$content = file_get_contents($myFile);

$input = explode(',',$content);
$output = array();

$remove = $_GET['mailme'];

for($i = 0; $i < count($input); $i++){
    $temp = trim($input[$i]);
    if(strtolower($temp) == strtolower($remove) || empty($temp)){
        ;
    }else{
        $output[] = $temp;
    }
}

$fh = fopen($myFile , 'w') or die("can't open file");
fwrite($fh, implode(",",$output));
fclose($fh);
?>
Avatar billede sazo Nybegynder
21. juli 2008 - 15:27 #14
Nå på den måde. Misforstod det du spurgte om. :) Nu virker filen, hvis du sender et svar, får du pointene. :)
Avatar billede jakobdo Ekspert
21. juli 2008 - 15:51 #15
Svar!
Avatar billede jakobdo Ekspert
21. juli 2008 - 17:08 #16
takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester