Undefined variable: info in
Hoi allemaal,
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
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];
}
}
?>
De error zegt het al: $info is onbekend.
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?
Ik weet niet waar die vandaan zou moeten komen.
Toevoeging op 21/03/2013 21:59:25:
Waarschijnlijk moet je van $vestiging eens $info 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.
$line geeft niets
$info geeft array => 0
$info geeft array => 0
Zet error_reporting eens aan.
Ik moet nu weg, dus tot later.
Ik moet nu weg, dus tot later.
Probeer eens get_defined_vars en zoek dan naar een variabel die jouw waarde bevat.
Moet $info niet gewoon $verstiging zijn?
Nee jan, dat heb ik al geprobeerd... Get_defined_vars geeft alleen array op.
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:
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);
}
?>
Open je .csv eens met Notepad, en kijk dan eens of het scheidingskarakter wel een ';' is.
Het kan bijvoorbeeld ook zijn dat je '|' gebruikt o.i.d.
En dan klopt je explode() functie niet.
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
Heb net een CSV bestand gemaakt, en je code erin gekopieerd. Ik krijg de Undefined offset.
Op de volgende manier heb ik geen foutmelding meer:
Op deze manier lees je de CSV file regel voor regel in, in plaats van de gehele file in een keer in te lezen.
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
het is mij inmiddels ook gelukt. Volgende vraag: nu wil ik deze gegevens opslaan in de database maar wel elke regel apart... Dan moet ik de INSERT toch in de foreach plaatsen?
Ik maak gebruik van PDO. Moet ik dan ook elk resultaat binden met bindParam()?
Ik maak gebruik van PDO. Moet ik dan ook elk resultaat binden met bindParam()?
Ja, gewoon elke regel een eigen query.
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).
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).
Thanks eddy!
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
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




