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?


<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 ("");
}
?>
echo $filename eens vlak voor de if().
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)?
En print_r($_FILES)?
print_r($_FILES) geeft als resultaat:
Array ( [upfile] => Array ( [name] => overzicht.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/phpIZ5sZw [error] => 0 [size] => 8062 ) )
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:
<?php
if (preg_match ('/\.csv$/', $filename)) {
// okee
}
?>
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!
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).
ok ik ga het eens bekijken en bespreken:)
Dank je wel voor de hulp!

Reageren