Undefined variable: info in
Ik heb net een stuk gelezen over CSV bestanden maar ik kom er niet uit. Ik krijg de melding die in de titel staat. Het bestand wordt wel gevonden, maar helaas wordt het niet in een array gezet. Iemand een idee?
Groeten Donny
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
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
<?php
if(isset($_POST['select_file'])){
$file = file_get_contents('files/orders/Week11.csv');
$regel = explode("\n",$file);
foreach($regel AS $line){
$vestiging = explode(";",$line);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
}
}
?>
if(isset($_POST['select_file'])){
$file = file_get_contents('files/orders/Week11.csv');
$regel = explode("\n",$file);
foreach($regel AS $line){
$vestiging = explode(";",$line);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
}
}
?>
Gewijzigd op 21/03/2013 21:57:46 door - SanThe -
En hoe maak ik die bekend in deze code? Door een nieuwe foreach in de foreach te maken?
Toevoeging op 21/03/2013 21:59:25:
Waarschijnlijk moet je van $vestiging eens $info maken.
Als ik dat doe krijg ik: Undefined offset:
Doe eens print_r($line) dan zie je wat er in zit.
$info geeft array => 0
Ik moet nu weg, dus tot later.
get_defined_vars en zoek dan naar een variabel die jouw waarde bevat.
Probeer eens Moet $info niet gewoon $verstiging zijn?
Het gekke is, info[0], als ik die print heb ik wel een resultaat, alleen de rest geeft een Undefined offset:
Toevoeging op 22/03/2013 12:10:23:
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
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
<?php
ini_set('error_reporting', E_ALL);
if(isset($_POST['select_file'])){
$file = file_get_contents('files/orders/Week11.csv');
$regel = explode("\n",$file);
foreach($regel AS $line){
$info = explode(";",$line);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
}
//print_r($file);
}
?>
ini_set('error_reporting', E_ALL);
if(isset($_POST['select_file'])){
$file = file_get_contents('files/orders/Week11.csv');
$regel = explode("\n",$file);
foreach($regel AS $line){
$info = explode(";",$line);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
}
//print_r($file);
}
?>
Het kan bijvoorbeeld ook zijn dat je '|' gebruikt o.i.d.
En dan klopt je explode() functie niet.
Dan zit er waarschijnlijk niet in dat bestand wat jij verwacht.
Het bestand bevat 100% ;... Daar heb ik naar gekeken. Als je een ;; heb, dan maakt explode ie em alsnog toch of zit ik ernaast?
Donny Wie weet op 22/03/2013 12:08:10:
Donny Wie weet op 21/03/2013 21:54:28:
Maar je hebt het dan toch gewijzigd :)
Jan
Gewijzigd op 22/03/2013 12:27:49 door Jan R
Ja ik heb het terug gezet. Wanneer $line geexplode wordt, dan wordt het info. ANders komt de info[] nergens vandaan
Op de volgende manier heb ik geen foutmelding meer:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$handle = @fopen("Week11.csv", "r");
while (($buffer = fgets($handle)) !== false){
$info = explode(";",$buffer);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
var_dump($info);
}
?>
$handle = @fopen("Week11.csv", "r");
while (($buffer = fgets($handle)) !== false){
$info = explode(";",$buffer);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
var_dump($info);
}
?>
Op deze manier lees je de CSV file regel voor regel in, in plaats van de gehele file in een keer in te lezen.
Gewijzigd op 22/03/2013 12:52:51 door Ramon Bos
Ik maak gebruik van PDO. Moet ik dan ook elk resultaat binden met bindParam()?
Zijn het er echt té veel (denk aan meer dan 100.000), dan zou je het ook stukje voor stukje kunnen doen (10.000 per keer oid).
Laatste vraag: nu wil ik controleren of de bon wel een getal is. Hiervoor gebruik ik ctype_digit. Wanneer ik dit in een if zet, wordt er niks weergeven. Hoe kan dit?
Groeten Donny
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
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
<?php
foreach($regel AS $line){
//Explodeer de $line op de ; en maak er een array van $info
$info = explode(";",$line);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
if (ctype_digit($bonnummer)){
echo '<tr>
<td>'.$bonnummer.'</td>
<td>'.$naam.'</td>
<td>'.$adres.'</td>
<td>'.$huisnr.'</td>
<td>'.$postcode.'</td>
<td>'.$woonplaats.'</td>
<td>'.$telefoon1.'</td>
<td>'.$telefoon2.'</td>
<td>'.$artikelNr.'</td>
<td>'.$machine.'</td>
<td>'.$merk.'</td>
<td>'.$typenummer.'</td>
<td>'.$typeLevering.'</td>
<td>'.$rembours.'</td>
<td>'.$leverdatum.'</td>
<td>'.$opmerkingen.'</td></tr>';
}
}
?>
foreach($regel AS $line){
//Explodeer de $line op de ; en maak er een array van $info
$info = explode(";",$line);
$bonnummer = $info[0];
$naam = $info[1];
$adres = $info[2];
$huisnr = $info[3];
$postcode = $info[4];
$woonplaats = $info[5];
$telefoon1 = $info[6];
$telefoon2 = $info[7];
$artikelNr = $info[8];
$machine = $info[9];
$merk = $info[10];
$typenummer = $info[11];
$typeLevering = $info[12];
$rembours = $info[13];
$leverdatum = $info[14];
$opmerkingen = $info[15];
if (ctype_digit($bonnummer)){
echo '<tr>
<td>'.$bonnummer.'</td>
<td>'.$naam.'</td>
<td>'.$adres.'</td>
<td>'.$huisnr.'</td>
<td>'.$postcode.'</td>
<td>'.$woonplaats.'</td>
<td>'.$telefoon1.'</td>
<td>'.$telefoon2.'</td>
<td>'.$artikelNr.'</td>
<td>'.$machine.'</td>
<td>'.$merk.'</td>
<td>'.$typenummer.'</td>
<td>'.$typeLevering.'</td>
<td>'.$rembours.'</td>
<td>'.$leverdatum.'</td>
<td>'.$opmerkingen.'</td></tr>';
}
}
?>
kzou je variables maar is controleren ;D