Hallo,
Ik gebruik een script van het net om een textarea om te zetten naar een CSV bestand,
http://www.phpclasses.org...nt-to-the-CSV-format.html
(login voor download noodzakelijk).
Als ik dit script draai dan gaat dat in eerste instantie goed, als ik echter nogmaals een invoer opgeef dan wordt het bestand wel geupdate, maar de inhoud lijkt een soort spookinhoud te zijn.
Stel dat ik de eerste keer dat ik het script draai en als invoer "Dit is een stukje tekst als voorbeeld" opgeef dan krijg ik dat in een csv bestand op de server met die inhoud.
Vul ik het form (textarea) voor de 2e keer in met minder tekens, bijv. "Dit stuk is korter" dan zie ik in het csv bestand dat aangemaakt wordt "Dit is een stukje te". De zelfde tekst als eerst dus, maar dan met ongeveer het zelfde aantal tekens van de 2e tekst. Wat ik daarna ook invoer, het houd toch de eerste waarde vast.
Nu was ik gisteren ook al aan het stoeien met dit script, ik vraag me af of er op de server (shared hosting) niet ergens een cache ofzo is die de gegevens vasthoud.
Ook als ik het bestand op de server (csv) eerst verwijder en de browser opnieuw opstart blijft de oude tekst toch bewaard. Pas als ik het op een andere locatie zet (nieuwe map) dan is de eerste invoer wel nieuw, maar ook daarna herhaalt het zich.
En voor als je niet wilt registeren/inloggen op die site; dit zijn de 2 bestanden/scripts achter de downloadknop.
example.textarea2csv.php
class.textarea2csv.php
Ik gebruik een script van het net om een textarea om te zetten naar een CSV bestand,
http://www.phpclasses.org...nt-to-the-CSV-format.html
(login voor download noodzakelijk).
Als ik dit script draai dan gaat dat in eerste instantie goed, als ik echter nogmaals een invoer opgeef dan wordt het bestand wel geupdate, maar de inhoud lijkt een soort spookinhoud te zijn.
Stel dat ik de eerste keer dat ik het script draai en als invoer "Dit is een stukje tekst als voorbeeld" opgeef dan krijg ik dat in een csv bestand op de server met die inhoud.
Vul ik het form (textarea) voor de 2e keer in met minder tekens, bijv. "Dit stuk is korter" dan zie ik in het csv bestand dat aangemaakt wordt "Dit is een stukje te". De zelfde tekst als eerst dus, maar dan met ongeveer het zelfde aantal tekens van de 2e tekst. Wat ik daarna ook invoer, het houd toch de eerste waarde vast.
Nu was ik gisteren ook al aan het stoeien met dit script, ik vraag me af of er op de server (shared hosting) niet ergens een cache ofzo is die de gegevens vasthoud.
Ook als ik het bestand op de server (csv) eerst verwijder en de browser opnieuw opstart blijft de oude tekst toch bewaard. Pas als ik het op een andere locatie zet (nieuwe map) dan is de eerste invoer wel nieuw, maar ook daarna herhaalt het zich.
En voor als je niet wilt registeren/inloggen op die site; dit zijn de 2 bestanden/scripts achter de downloadknop.
example.textarea2csv.php
PHP:
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
| <?php require_once('class.textarea2csv.php'); /* * 1) initiate the class passing the $_POST data * 2) optional: set a different divider than comma (default) with function set_divider(';') or set_divider(chr(9)); options are: ; and tab * 3) call the function save_data() without parameter to get the data returned OR call the function save_data('filename') with a parameter to save the data with the given filename */ if(isset($_POST['xls']) && trim($_POST['xls']) != ''){ $csv = new textarea_2_csv($_POST); // possibility to set the divider to another format // $xls->set_divider(';'); // $xls->set_divider(chr(9)); // process data and save it with filename output $data = $csv->save_data('output'); } ?> <html> <h2>Example of class "Textarea 2 csv"</h2> <p>Copy the the content of an excel sheet, paste it in the textarea and click on "Send".</p> <form method="post"> <p><textarea name="xls" style="width: 800px; height: 400px"></textarea></p> <p><input type="submit" value="Send" /></p> </form> </html> |
class.textarea2csv.php
PHP:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| <?php class textarea_2_csv{ var $arrLines; var $data; var $divider; function __construct($postedData){ $this->arrLines = explode("\r\n",$postedData['xls']); $this->data = NULL; } // process the posted data function set_data(){ if(is_array($this->arrLines)){ if($this->divider == NULL) $this->set_divider(); // default divider setting if no other option is passed foreach($this->arrLines as $key=>$line){ // if more than 1 field if(strpos($line, chr(9)) !== FALSE){ $arrFields = explode(chr(9),$line); foreach($arrFields as $c=>$val){ $this->data .= $val.$this->divider; } $this->data = trim($this->data,$this->divider); $this->data .= "\r\n"; } // if only 1 field else{ $this->data .= $line."\r\n"; } } } } // saves the data as file or returns it back function save_data($write = false){ $this->set_data(); if(!$write == false){ // write file (.txt if divider is tab) ($this->divider == chr(9)) ? $ext = '.txt' : $ext = '.csv'; if(file_put_contents($write.$ext, $this->data)) echo('<h3>Data saved in file: '.$write.$ext.'</h3>'); return(NULL); } else{ // return de data return($this->data); } } // set the divider as default to a comma function set_divider($opt=','){ $this->divider = $opt; } } |