bestand naar database...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin de Vries

Robin de Vries

09/12/2008 17:14:00
Quote Anchor link
hoi,

ik heb een bestand, wat ik graag naar een database over wil zetten, alleen ik weet niet hoe ik het in een rij krijg.... kan iemand een voorbeeld scriptje maken???

dit is het bestand: http://stmichaelcollege.nl/weersmc/downld08.txt

grt, Robin
 
PHP hulp

PHP hulp

21/11/2024 19:14:59
 
Frank -

Frank -

09/12/2008 17:30:00
Quote Anchor link
"een database"

Welke database? Vrijwel iedere database heeft wel een functie om text-bestanden te importeren, bv. COPY in PostgreSQL of LOAD FILE in MySQL. Zie de handleiding van jouw database.

Uiteraard kun je ook met PHP de boel gaan uitlezen en met losse INSERT-queries de boel in de database wegschrijven. Mogelijkheden genoeg.

Edit: Moet LOAD zijn.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Rens nvt

Rens nvt

09/12/2008 17:32:00
Quote Anchor link
ff een snelle opzet, maar op deze manier kun je per regel alle cellen doorlopen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$regels
= file('filename');
foreach ($regels as $regel)
{

  $cellen = explode("\t", $regel);
}

?>
 
Robin de Vries

Robin de Vries

29/12/2008 12:20:00
Quote Anchor link
nu wil ik graag de laatste regel in een variabele hebben, en deze in de database proppen? hoe pas ik het script van Rens aan zodat hij de laatste regel pakt.
 
Marco

Marco

29/12/2008 12:33:00
Quote Anchor link
Zoiets?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$regels
= file('filename');
$size = sizeof($regels) - 1;

$cellen = explode("\t", $regels[$size]);

?>
 
Robin de Vries

Robin de Vries

29/12/2008 12:53:00
Quote Anchor link
@marco,

thanks! Het werkt :)
 
Robin de Vries

Robin de Vries

29/12/2008 13:13:00
Quote Anchor link
dit is het zegmaar nu,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$regels
= file('downld08.txt');
$size = sizeof($regels) - 1;

$cellen = explode("\t", $regels[$size]);
$cellen = $cellen[0];
$cel = explode('   ',$cellen);
echo $cel[36];

?>


nu hoort ie de waarde 5 aan te geven, alleen doet ie dat niet? wat is er mis??
 
PHP Newbie

PHP Newbie

29/12/2008 13:23:00
Quote Anchor link
echo '<pre>'.print_r($cel, true).'</pre>';
 
Robin de Vries

Robin de Vries

29/12/2008 13:33:00
Quote Anchor link
Array
(
[0] => 9-12-08 12:20
[1] => ---
[2] => ---
[3] => ---
[4] => ---
[5] => ---
[6] => 0.0
[7] => ---
[8] => 0.00
[9] => 0.0
[10] => ---
[11] => ---
[12] => ---
[13] => ---
[14] => --- 1012.4 0.00
[15] => 0.0
[16] => ---
[17] =>
[18] => ---
[19] => ---
[20] => ---
[21] => ---
[22] => ---
[23] => ---
[24] => ---
[25] => 22.2
[26] => 39
[27] => 7.6
[28] => 21.1
[29] => 0.00
[30] => 0
[31] => 1
[32] =>
[33] => 0.0
[34] => 5

)

hij pakt er een paar samen :P

mijn 'spatie' explode heeft geen zin, hoe kan ie splitten is er een manier om op iedere 'leegte' te splitten, maar alle spaties te verwijderen.
Gewijzigd op 01/01/1970 01:00:00 door Robin de Vries
 
Joren de Wit

Joren de Wit

29/12/2008 13:36:00
Quote Anchor link
Nou, $cel[36] bestaat dus niet, dat blijkt wel. Die waarde 5 waar jij het over hebt, zit in $cel[34]...
 
Robin de Vries

Robin de Vries

29/12/2008 15:45:00
Quote Anchor link
zover was ik al,

alleen deze filtrering is dus niet juist

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$cel
= explode('   ',$cellen);
?>


zie bovenstaand voorbeeld,

is er een andere manieer om ieder vakje apart te krijgen, want zoals je ziet
is $cel[14] gelijk aan 3 waarden..
 
Joren de Wit

Joren de Wit

29/12/2008 16:02:00
Quote Anchor link
Jij gaat er in je explode() dan ook vanuit dat er tussen twee opeenvolgende waarden altijd 3 spaties zitten, maar dat is niet het geval.

Wat je zou kunnen doen is exploden op een enkele spatie en vervolgens de loze spaties die je in je array krijgt eruit knikkeren...
 
Robin de Vries

Robin de Vries

29/12/2008 16:05:00
Quote Anchor link
dan kom ik dus op dit uit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$regels
= file('downld08.txt');
$size = sizeof($regels) - 1;

$cellen = explode("\t", $regels[$size]);
$cellen = $cellen[0];
$cel = explode(' ',$cellen);
echo $cel[36];
echo '<pre>'.print_r($cel, true).'</pre>';
?>

met als resultaat, deze zooi, zoiezo is het misschien niet het beste om explode uit te voeren op ' ' ...
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Array
(
    [0] =>
    [1] => 9-12-08
    [2] =>
    [3] => 12:20
    [4] =>
    [5] =>
    [6] =>
    [7] => ---
    [8] =>
    [9] =>
    [10] =>
    [11] => ---
    [12] =>
    [13] =>
    [14] =>
    [15] => ---
    [16] =>
    [17] =>
    [18] => ---
    [19] =>
    [20] =>
    [21] =>
    [22] => ---
    [23] =>
    [24] =>
    [25] => 0.0
    [26] =>
    [27] =>
    [28] => ---
    [29] =>
    [30] =>
    [31] => 0.00
    [32] =>
    [33] =>
    [34] => 0.0
    [35] =>
    [36] =>
    [37] => ---
    [38] =>
    [39] =>
    [40] =>
    [41] => ---
    [42] =>
    [43] =>
    [44] =>
    [45] => ---
    [46] =>
    [47] =>
    [48] =>
    [49] => ---
    [50] =>
    [51] =>
    [52] =>
    [53] => ---
    [54] =>
    [55] => 1012.4
    [56] =>
    [57] => 0.00
    [58] =>
    [59] =>
    [60] => 0.0
    [61] =>
    [62] =>
    [63] => ---
    [64] =>
    [65] =>
    [66] =>
    [67] =>
    [68] =>
    [69] => ---
    [70] =>
    [71] =>
    [72] =>
    [73] => ---
    [74] =>
    [75] =>
    [76] =>
    [77] =>
    [78] => ---
    [79] =>
    [80] =>
    [81] => ---
    [82] =>
    [83] =>
    [84] => ---
    [85] =>
    [86] =>
    [87] =>
    [88] =>
    [89] => ---
    [90] =>
    [91] =>
    [92] =>
    [93] =>
    [94] => ---
    [95] =>
    [96] =>
    [97] => 22.2
    [98] =>
    [99] =>
    [100] =>
    [101] => 39
    [102] =>
    [103] =>
    [104] =>
    [105] => 7.6
    [106] =>
    [107] =>
    [108] => 21.1
    [109] =>
    [110] =>
    [111] =>
    [112] => 0.00
    [113] =>
    [114] =>
    [115] =>
    [116] =>
    [117] => 0
    [118] =>
    [119] =>
    [120] =>
    [121] => 1
    [122] =>
    [123] =>
    [124] =>
    [125] =>
    [126] =>
    [127] => 0.0
    [128] =>
    [129] =>
    [130] =>
    [131] => 5
    [132] =>

)
 
Joren de Wit

Joren de Wit

29/12/2008 16:17:00
Quote Anchor link
Zoals ik zei: knikker die lege entries er ook nog eens uit. Of anders creëer je een nieuwe array met alleen de nuttige entries uit de array die je nu hebt:
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
<?php
$aLines
= file('http://stmichaelcollege.nl/weersmc/downld08.txt');

$sData = end($aLines);
$aData = explode(' ', $sData);

$aFinalData = array();
foreach($aData as $i => $sData)
{

    $sData = trim($sData);
    
    if(!empty($sData))
    {

        $aFinalData[] = $sData;
    }
}


echo '<pre>'.print_r($aFinalData, true).'</pre>';
?>
 
Robin de Vries

Robin de Vries

29/12/2008 16:24:00
Quote Anchor link
ik heb het nu zo aangepast (om even te kijken) dat ie de bovenste rij pakt, en ik kom op 33 waarden uit ipv. 36, wat toch vreemd is. hij slaat 2x '0' over, en ergens nog een waarde.
http://stmichaelcollege.nl/weersmc/cron.php
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
<?php
$aLines
= file('http://stmichaelcollege.nl/weersmc/downld08.txt');

$sData = $aLines[3];
$aData = explode(' ', $sData);

$aFinalData = array();
foreach($aData as $i => $sData)
{

    $sData = trim($sData);
    
    if(!empty($sData))
    {

        $aFinalData[] = $sData;
    }
}


echo '<pre>'.print_r($aFinalData, true).'</pre>';
?>
 
Joren de Wit

Joren de Wit

29/12/2008 16:36:00
Quote Anchor link
Argh, in het geval van 0 zal empty() ook true opleveren. Verander regel 12 dus eens door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($sData != '')
?>
 
Frank -

Frank -

29/12/2008 16:39:00
Quote Anchor link
Blanche schreef op 29.12.2008 16:36:
Argh, in het geval van 0 zal empty() ook true opleveren.
En daarom ook nooit empty() gebruiken! De waarde 0 is niet gelijk aan een lege waarde, ook al vindt empty() van wel. Dit is gewoon een bug in PHP, vergeet deze onzin en gooi deze functie uit je code.
 
Robin de Vries

Robin de Vries

29/12/2008 16:39:00
Quote Anchor link
thanks blanche :)
 



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.