Hulp bij het importeren van een csv bestand
Voor een schoolopdracht moet ik gebruikers kunnen importeren in een database d.m.v. een csv bestand.
Nou gebruiken ze op school csv bestanden die gescheiden worden door een , of een ;. Ik ben begonnen met een scriptje en het werkt opzich wel alleen treed er een klein probleempje op als het scheidingsteken een ; is. Dan word er nadat het lijstje is uitgelezen en in een array is opgeslagen een lege rij als laatste rij toegevoegd. Dit zorgt ervoor dat in de database dan een lege regel elke keer komt. Weet iemand waarom er een lege rij word toegevoegd bij ; maar niet bij ,?
Hieronder is het scriptje:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="csv" id="csv"><br>
<input type="radio" name="teken" value="ptka">punt komma<br>
<input type="radio" name="teken" value="ka">komma<br>
<input type="submit" name="submit">
</form>
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
44
45
46
47
48
49
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
<?php
//header ('Content-Type: text/plain');
//include ('../includes/header.php');
$conn = mysql_connect('localhost','root','');
mysql_select_db('test',$conn);
if (isset($_POST['submit'])){
$file = $_FILES['csv']['tmp_name'];
$handle = fopen($file,"r");
$teken = $_POST['teken'];
fgetcsv($handle);
if ($teken == "ka") {
while (($fileopen = fgetcsv($handle, 1000, ",")) !== false) {
$voornaam = $fileopen['0'];
$tv = $fileopen['1'];
$achternaam = $fileopen['2'];
$snr = $fileopen['3'];
$email = $fileopen['4'];
//$sql = mysql_query("insert into user(id,naam,tv,achternaam,snr,email) values (NULL,'$voornaam','$tv','$achternaam','$snr','$email')");
print_r($fileopen);
}
} elseif ($teken == "ptka"){
//fgetcsv($handle);
while (($fileopen = fgetcsv($handle, 1000, ",")) !== false){
foreach ($fileopen as $line) {
$rows = explode(";", $line);
$voornaam = $rows['0'];
$tv = $rows['1'];
$achternaam = $rows['2'];
$snr = $rows['3'];
$email = $rows['4'];
//$sql = mysql_query("insert into user(id,naam,tv,achternaam,snr,email) values (NULL,'$voornaam','$tv','$achternaam','$snr','$email')");
print_r($rows);
}
}
}
}
//include ('../includes/footer.php');
?>
//header ('Content-Type: text/plain');
//include ('../includes/header.php');
$conn = mysql_connect('localhost','root','');
mysql_select_db('test',$conn);
if (isset($_POST['submit'])){
$file = $_FILES['csv']['tmp_name'];
$handle = fopen($file,"r");
$teken = $_POST['teken'];
fgetcsv($handle);
if ($teken == "ka") {
while (($fileopen = fgetcsv($handle, 1000, ",")) !== false) {
$voornaam = $fileopen['0'];
$tv = $fileopen['1'];
$achternaam = $fileopen['2'];
$snr = $fileopen['3'];
$email = $fileopen['4'];
//$sql = mysql_query("insert into user(id,naam,tv,achternaam,snr,email) values (NULL,'$voornaam','$tv','$achternaam','$snr','$email')");
print_r($fileopen);
}
} elseif ($teken == "ptka"){
//fgetcsv($handle);
while (($fileopen = fgetcsv($handle, 1000, ",")) !== false){
foreach ($fileopen as $line) {
$rows = explode(";", $line);
$voornaam = $rows['0'];
$tv = $rows['1'];
$achternaam = $rows['2'];
$snr = $rows['3'];
$email = $rows['4'];
//$sql = mysql_query("insert into user(id,naam,tv,achternaam,snr,email) values (NULL,'$voornaam','$tv','$achternaam','$snr','$email')");
print_r($rows);
}
}
}
}
//include ('../includes/footer.php');
?>
Dit is het csv bestand met komma:
Naam,Tussenvoegsel,Achternaam,Studentennummer,Email
sunil,,kisoensingh,s1000765,[email protected]
naam,tussenvoegsel,achternaam,s007007,[email protected]
Dit is het csv bestand met punt komma:
Naam;Tussenvoegsel;Achternaam;Studentennummer;Email
sunil;;kisoensingh;s1092465;[email protected]
naam;tussenvoegsel;achternaam;s007007;[email protected]
Hopelijk kunnen jullie mij hiermee verder helpen. Alvast bedankt
Gewijzigd op 19/05/2016 17:47:05 door Sunil Kisoensingh
Er zijn nog geen reacties op dit bericht.