uploaden van een .csv bestand
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)
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
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 ("");
}
?>
<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().
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
En print_r($_FILES)?
Array ( [upfile] => Array ( [name] => overzicht.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/phpIZ5sZw [error] => 0 => 8062 ) )
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).
Dank je wel voor de hulp!