Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Script output blijft hangen op server?

Pagina: 1
Acties:
  • 284 views

  • BLACKfm
  • Registratie: maart 2004
  • Laatst online: 17-09 20:29
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
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;
        
    }
    
}

Litebit.eu voorraad check :).


  • ajakkes
  • Registratie: maart 2004
  • Laatst online: 17-09 11:08
Als je 'output' regel 18 wijzigd in now() zodat je iedere keer een nieuw bestand krijgt doet ie het dan wel?

👑


  • Janoz
  • Registratie: oktober 2000
  • Laatst online: 10:12

Janoz

Moderator Devschuur®

!litemod

De Devschuur is geen supportdesk voor scripts van derden. Daarvoor zul je bij phpclasses moeten zijn.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Dit topic is gesloten.



Apple iPhone SE (2020) Microsoft Xbox Series X LG CX Google Pixel 4a CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True