uploaden van een .csv bestand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Franko

Franko

17/10/2008 19:04:00
Quote Anchor link
Ik probeer een .csv bestandje op de server te zetten, maar dit werkt niet met het upload scriptje wat ik gemaakt heb.
Wel kan ik hiermee jpg, gif etc. uploaden, maar een .csv bestand dus niet.

De melding die ik iedere keer krijg is:
'Alleen .csv bestanden zijn toegestaan.'
Terwijl het wel een .csv bestand is die ik wil uploaden. Waar ligt dit aan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<form name="uploadexcel" enctype="multipart/form-data" action="" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="102400" />
Selecteer het bestand: <input name="upfile" type="file">
<input type="submit" value="Upload">
</form>

<?PHP
if( $_SERVER['REQUEST_METHOD'] == "POST" ) {
  
        $uploaddir = "upload/";
        $filename = trim($_FILES['upfile']['name']);
        $filename = substr($filename, -20);
        $filename = ereg_replace(" ", "", $filename);
        if(ereg(".csv", $filename)) {
            $uploadfile = $uploaddir . $filename;
          
            if( move_uploaded_file($_FILES['upfile']['tmp_name'], $uploadfile)) {
                chmod($uploadfile, 0644);
                echo 'Bestand succesvol geupload.<br>' .PHP_EOL;
                echo 'Het bestand wordt nu omgezet naar de database.<br>' .PHP_EOL;
              
                include('system/config.php');

                // leegmaken van de tabel
                $sSql = "TRUNCATE TABLE menukaart";
                $Result = mysql_query($sSql) or die ("Mislukt".$sSql);
                echo '<p>Tabel is leeggemaakt...</p>';

                // uploaden van Excel bestand (omgezet naar .csv met scheidingstekens)
                $sql = "LOAD DATA LOCAL INFILE 'menukaart.csv' INTO TABLE menukaart FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'";
                $result = mysql_query($sql) or die ("Mislukt".$sql);
              
            }
else {
                echo 'Bestand upload is niet gelukt.' .PHP_EOL;
            }
        }
else {
            echo 'Alleen .csv bestanden zijn toegestaan.' .PHP_EOL;
        }
  
}
else {
    print ("");
}

?>
 
PHP hulp

PHP hulp

05/11/2024 07:59:12
 
- SanThe -

- SanThe -

17/10/2008 19:08:00
Quote Anchor link
echo $filename eens vlak voor de if().
 
Franko

Franko

17/10/2008 19:14:00
Quote Anchor link
mmm geeft geen resultaat. Waar komt dit door?

Ok ik heb hem:) Het kwam blijkbaar door die omzetting naar $filenaam. Die heb ik verwijdert en nu doet hij het wel.

Ik heb alleen nog een ander vraagje ivm met het uploaden van een csv bestandje. Als iemand in zijn excel bestandje een bedrag heeft staan nl.: 150,50( met een komma) dan komt er in mijn database 0.00 te staan. Dit komt door de komma.
Hoe kun je dit automatisch omzetten naar: 150.50 (dus met punt)?
Gewijzigd op 01/01/1970 01:00:00 door Franko
 
- SanThe -

- SanThe -

17/10/2008 19:19:00
Quote Anchor link
En print_r($_FILES)?
 
Franko

Franko

17/10/2008 19:29:00
Quote Anchor link
print_r($_FILES) geeft als resultaat:
Array ( [upfile] => Array ( [name] => overzicht.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/phpIZ5sZw [error] => 0 => 8062 ) )
 
Jan Koehoorn

Jan Koehoorn

17/10/2008 19:47:00
Quote Anchor link
Voor die komma's naar punten zou ik gewoon een str_replace gebruiken. Je controle met ereg is trouwens niet sluitend. Verder is het gebruik van preg_match aan te bevelen.

Edit: zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    if (preg_match ('/\.csv$/', $filename)) {
        // okee
    }
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Franko

Franko

17/10/2008 20:07:00
Quote Anchor link
Dat met die str_replace werkt niet aangezien het uit een bestand komt. En ik kan dat niet in het bestand veranderen dus voordat het in de database komt.
Zat er zelf ook al aan te denken, maar zou niet weten hoe ik dit in het bestand moet krijgen. De werking begrijp ik hoor, maar niet hoe je hem moet toepassen in dit geval:)
Of misschien heb jij een idee hoe dat wel moet?

Ik heb die ereg verandert!
 
Jan Koehoorn

Jan Koehoorn

17/10/2008 20:26:00
Quote Anchor link
Dan zou ik gewoon met Excel aan de gang gaan om te zorgen dat het bestand met puntjes in de getallen opgeslagen wordt. In Windows kun je de manier waarop getallen weergegeven worden veranderen in het Configuratiescherm (Landinstellingen).
 
Franko

Franko

17/10/2008 20:31:00
Quote Anchor link
ok ik ga het eens bekijken en bespreken:)
Dank je wel voor de hulp!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.