Undefined variable: info in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Donny Wie weet

Donny Wie weet

21/03/2013 21:54:28
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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];

    }
}

?>
 
PHP hulp

PHP hulp

23/04/2024 09:59:38
 
- SanThe -

- SanThe -

21/03/2013 21:56:56
Quote Anchor link
De error zegt het al: $info is onbekend.
Gewijzigd op 21/03/2013 21:57:46 door - SanThe -
 
Donny Wie weet

Donny Wie weet

21/03/2013 21:57:57
Quote Anchor link
En hoe maak ik die bekend in deze code? Door een nieuwe foreach in de foreach te maken?
 
- SanThe -

- SanThe -

21/03/2013 21:58:36
Quote Anchor link
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.
 
Donny Wie weet

Donny Wie weet

21/03/2013 22:02:30
Quote Anchor link
Als ik dat doe krijg ik: Undefined offset:
 
- SanThe -

- SanThe -

21/03/2013 22:03:42
Quote Anchor link
Doe eens print_r($line) dan zie je wat er in zit.
 
Donny Wie weet

Donny Wie weet

21/03/2013 22:07:11
Quote Anchor link
$line geeft niets
$info geeft array => 0
 
- SanThe -

- SanThe -

21/03/2013 22:11:22
Quote Anchor link
Zet error_reporting eens aan.
Ik moet nu weg, dus tot later.
 
Roel -

Roel -

22/03/2013 09:38:31
Quote Anchor link
Probeer eens get_defined_vars en zoek dan naar een variabel die jouw waarde bevat.
 
Jan R

Jan R

22/03/2013 09:41:53
Quote Anchor link
Moet $info niet gewoon $verstiging zijn?
 
Donny Wie weet

Donny Wie weet

22/03/2013 12:08:10
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
}
?>
 
Tim S

Tim S

22/03/2013 12:15:10
Quote Anchor link
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.
 
- SanThe -

- SanThe -

22/03/2013 12:15:50
Quote Anchor link
Dan zit er waarschijnlijk niet in dat bestand wat jij verwacht.
 
Donny Wie weet

Donny Wie weet

22/03/2013 12:22:46
Quote Anchor link
Het bestand bevat 100% ;... Daar heb ik naar gekeken. Als je een ;; heb, dan maakt explode ie em alsnog toch of zit ik ernaast?
 
Jan R

Jan R

22/03/2013 12:26:09
Quote Anchor link
Donny Wie weet op 22/03/2013 12:08:10:
Nee jan, dat heb ik al geprobeerd...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
                $regel
= explode("\n",$file);
                foreach($regel AS $line){
                    $info = explode(";",$line);?>


Donny Wie weet op 21/03/2013 21:54:28:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
                foreach($regel AS $line){
                    $vestiging = explode(";",$line);
                    $bonnummer = $info[0];
                    $naam = $info[1];
?>

Maar je hebt het dan toch gewijzigd :)

Jan
Gewijzigd op 22/03/2013 12:27:49 door Jan R
 
Donny Wie weet

Donny Wie weet

22/03/2013 12:28:54
Quote Anchor link
Ja ik heb het terug gezet. Wanneer $line geexplode wordt, dan wordt het info. ANders komt de info[] nergens vandaan
 
Ramon Bos

Ramon Bos

22/03/2013 12:50:11
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

?>


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
 
Donny Wie weet

Donny Wie weet

22/03/2013 21:49:01
Quote Anchor link
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()?
 
Eddy E

Eddy E

22/03/2013 22:42:30
Quote Anchor link
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).
 
Donny Wie weet

Donny Wie weet

23/03/2013 11:23:04
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
                        }


                }

?>
 
Dennis WhoCares

Dennis WhoCares

23/03/2013 13:29:28
Quote Anchor link
kzou je variables maar is controleren ;D
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.