Probleem
Ik ben bezig om data uit een automatisch inspectie systeem in een MySQL database te krijgen, maar nu wil het mij niet lukken om de arrayindex op zo'n manier te verhogen dat de bij elkaar horende data ook bij elkaar in een array komt.
Databestand (test.txt)
Databestand
PHP
Hoe kan ik de index $arInfo[0] verhogen zodat de errors bij de juiste info in de array komt? Ik heb geprobeerd om een counter tijdens de loop te laten verhogen, maar dat werkt natuurlijk niet omdat de loop per regel doorlopen wordt.
Ook heb ik het volgende geprobeerd
Dit werkt alleen voor de eerste en om het met alle data te laten werken moet ik de $iEmptyBufferCount vast in de broncode zetten, wat dus totaal niet werkzaam is
Kan iemand mij een duw in de goede richting geven?
[edit]
Ik heb het databestand (test.txt) nu iets duidelijker aangegeven
Ik heb file() ook al geprobeerd, maar dan blijft mijn probleem hetzelfde, namelijk hoe kan ik er voor zorgen dat de fouten bij de info blijft?
Ik ben bezig om data uit een automatisch inspectie systeem in een MySQL database te krijgen, maar nu wil het mij niet lukken om de arrayindex op zo'n manier te verhogen dat de bij elkaar horende data ook bij elkaar in een array komt.
Databestand (test.txt)
Databestand
PHP
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
| $handle = @fopen("test.txt", "r"); if ($handle) { $iEmptyBufferCount = 0; while (!feof($handle)) { $buffer = fgets($handle, 4096); // buffer is een carriage return if (ord($buffer) == 13) { $iEmptyBufferCount++; } elseif (is_int($iEmptyBufferCount / 2)) { // Dan moet dit dus de info zijn $arInfo[0][] = trim($buffer); } else { // Dan moeten dus dit de fouten zijn $sTrimmed = trim($buffer, "\n \r"); $arTemp = explode("\t", $sTrimmed); if (ord($arTemp[7]) != 0 and $arTemp[7] != "_NOTE") { $arInfo[0]['errors'][] = $arTemp; } } } fclose($handle); } echo '<pre>'; print_r($arInfo); |
Hoe kan ik de index $arInfo[0] verhogen zodat de errors bij de juiste info in de array komt? Ik heb geprobeerd om een counter tijdens de loop te laten verhogen, maar dat werkt natuurlijk niet omdat de loop per regel doorlopen wordt.
Ook heb ik het volgende geprobeerd
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| $handle = @fopen("test.txt", "r"); if ($handle) { $iEmptyBufferCount = 0; $iArrayIndex = 0; while (!feof($handle)) { $buffer = fgets($handle, 4096); /** * Als de buffer niet leeg is en er nog twee * lege buffers zijn gevonden, zet dan de * info data in de array **/ if (ord($buffer) != 13 and $iEmptyBufferCount < 2) { $arInfo[0][] = trim($buffer); } /** * Als de buffer leeg is en er nog geen twee * lege buffers zijn gevonden, verhoog dan * de $iEmptyBufferCount met 1 **/ elseif (ord($buffer) == 13 and $iEmptyBufferCount < 2) { $iEmptyBufferCount++; } /** * Aslde buffer niet leeg is en er zijn twee * lege buffers gevonden, zet dan de errordata in * de array **/ elseif (ord($buffer) != 13 and $iEmptyBufferCount == 2) { $sTrimmed = trim($buffer, "\n \r"); $arTemp = explode("\t", $sTrimmed); if (ord($arTemp[7]) != 0 and $arTemp[7] != "_NOTE") { $arInfo[0]['errors'][] = $arTemp; } } /** * Als de buffer leeg is en er zijn twee * lege buffers gevonden, verhoog dan * de $iEmptyBufferCount met 1 **/ elseif (ord($buffer) == 13 and $iEmptyBufferCount == 2) { $iEmptyBufferCount++; } } fclose($handle); } echo '<pre>'; print_r($arInfo); |
Dit werkt alleen voor de eerste en om het met alle data te laten werken moet ik de $iEmptyBufferCount vast in de broncode zetten, wat dus totaal niet werkzaam is

Kan iemand mij een duw in de goede richting geven?
[edit]
Ik heb het databestand (test.txt) nu iets duidelijker aangegeven
Ik heb file() ook al geprobeerd, maar dan blijft mijn probleem hetzelfde, namelijk hoe kan ik er voor zorgen dat de fouten bij de info blijft?
[ Voor 13% gewijzigd door RAJH op 09-05-2006 09:25 ]