Toon posts:

Script output blijft hangen op server?

Pagina: 1
Acties:
  • 1.085 views
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: 23-06 16:38
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: 13:08

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.



Nintendo Switch (OLED model) Apple iPhone SE (2022) LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S22 Garmin fēnix 7 Nintendo Switch Lite

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

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee