Database automatisch vullen
Kan een database ook automatisch gevuld worden? Het probleem (of uitdaging ;)) is alsvolgt:
Ik heb een weerstation welke allerlei data genereert die ik op mijn website weergeef. Dit is eigenlijk alleen maar actuele data. Nu wil ik ook een beetje historie weergeven. En volgens mij kan dat met een database.
Ik kan mijn weerstation elke 5 minuten een txt bestand aan laten maken, welke geupload wordt naar mijn site. (http://www.weerstation-houten.nl/NOAA/downld02.txt) Op de site heb ik nu een tabel gemaakt waarin ik handmatig 1x per maand alle getallen verwerk. Nu wil ik dit automatisch laten gaan. De bedoeling is om een tabel te (laten) maken waarin op de regels de dagen van de maand staan en in de kolommen bv de min/max temperatuur, neerslag etc. Het txt bestand geeft van elke 5 minuten de data van de afgelopen 2 dagen. Dus wanneer er een dag voorbij is, zou deze in de database opgenomen moeten zijn. Ik heb geen idee of het mogelijk is en heb dus 0 ervaring met sql. Wel een klein beetje met php...Wie helpt mij op weg?
http://www.php.net/manual/en/function.sleep.php
Gewijzigd op 01/01/1970 01:00:00 door bart van der veen
Heb je een abonnement met PHP en MySQL ondersteuning?
Gewijzigd op 01/01/1970 01:00:00 door Rene Zwolsman
include of read_file_content
Rene schreef op 01.04.2007 19:10:
Als het meteen kan, zou natuurlijk veel handiger zijn. Ik heb een abonnement met php 5 en MySQL 4. Maar dat plakken van een txt bestand moet dat dan niet handmatig?
Dat hangt er vanaf. Op welke plek komt het tekstbestand terecht dat door je weerstation gegenereerd wordt? Op je eigen computer? Of in een map op je homepage?
Kan allebei. Kan uploaden en op pc opslaan.
Ik heb net even naar je eerste voorbeeld van een tekstbestand gekeken. Het is een ASCI bestand met een vaste kolombreedte. Als de volgorde van je kolommen niet verandert, is het mogelijk om een uploadpagina te maken die de gegevens rechstreeks in een database importeert.
Ik kan niks aan het bestand veranderen. Wordt zo automatisch gegenereerd. Maar dan de pagina met ftp uploaden?
Nee, ik zou gewoon de inhoud van het tekstbestand in een formulier op een uploadpagina plakken. Dan kan je PHP script de gegevens interpreteren en in een MySQL database zetten.
Ben er nog niet zo in thuis (net in boek php/mysql voor dummies begonnen...) Zie daar wel iets over formulier staan. Maar de term uploadpagina is me niet helemaal duidelijk?
Als je nog een half uurtje online bent, maak ik een voorbeeldje voor je.
ja hoor. ik ben er nog wel. ga nog wel even wat puzzelen
Klopt het dan dat ik wel elke dag het bestand moet uploaden?
Je zult wel elke dag het bestand moeten uploaden inderdaad.
Nou, dat lukt denk ik wel om elke dag te uploaden. Hoe zie ik wat de php code achter de uploadpagina is? Nu zie ik alleen de html uitvoer. Of zit er niet meer achter? En als ik bv morgen weer upload komt de nieuwe data er dan onder te staan?
De mate van vanzelfsprekendheid van jouw kant is omgekeerd evenredig met de hulpvaardigheid van mijn kant ;-)
owkee, ik begrijp hem. Zal eens kijken of mij dat ook lukt.
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
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
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
<?php
require 'classes/class.upload.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Weerstation Uploadpagina</title>
<style type="text/css">
html, body {
margin: 0px;
padding: 0px;
}
#container {
margin: 0px auto;
width: 800px;
padding: 5px;
border: 3px solid #fff;
background: #eee;
}
body {
background: #aaa;
}
h1 {
font: 24px georgia;
color: #366;
border-left: 13px solid #f90;
border-bottom: 1px solid #666;
padding-left: 25px;
padding-bottom: 5px;
margin-top: 25px;
}
p, label, input, select, option {
font: 12px verdana;
color: #666;
}
p, table {
margin: 0px 0px 5px 55px;
}
select {
margin-left: 16px;
}
img {
background: #fff;
border: 1px solid #ccc;
padding: 3px;
}
label {
cursor: pointer;
}
.vis {
display: block;
}
.invis {
display: none;
}
pre {
font: 12px "courier new";
color: green;
border: 1px solid green;
padding: 15px;
margin: 15px auto;
width: 600px;
}
table.info {
border: 1px solid #fff;
}
table.info th, table.info td {
text-align: left;
vertical-align: top;
}
th, td {
font: 10px verdana;
padding: 3px;
margin: 0px;
border: 1px solid #366;
}
th {
font-weight: bold;
background: #fff;
}
</style>
</head>
<body>
<div id="container">
<h1>Upload weerstation gegevens</h1>
<form method="post" action="#" enctype="multipart/form-data">
<p>
<label for="userfile">kies een tekstbestand:</label>
<input id="userfile" name="userfile" type="file" size="80">
</p>
<p>
<input type="submit" value="upload">
</p>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$upload = new weerstation ('userfile', 'images');
$upload->move_file ();
foreach ($upload->get_upload_info () as $info) {
echo $info;
}
foreach ($upload->get_errs () as $err) {
echo $err;
}
$data = file ($upload->get_file ());
$data = array_slice ($data, 3, count ($data) - 3);
foreach ($data as $line) {
$test = spliti ('/ */', $line);
echo '<pre>';
print_r ($test);
echo '</pre>';
}
}
?>
</div>
</body>
</html>
require 'classes/class.upload.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Weerstation Uploadpagina</title>
<style type="text/css">
html, body {
margin: 0px;
padding: 0px;
}
#container {
margin: 0px auto;
width: 800px;
padding: 5px;
border: 3px solid #fff;
background: #eee;
}
body {
background: #aaa;
}
h1 {
font: 24px georgia;
color: #366;
border-left: 13px solid #f90;
border-bottom: 1px solid #666;
padding-left: 25px;
padding-bottom: 5px;
margin-top: 25px;
}
p, label, input, select, option {
font: 12px verdana;
color: #666;
}
p, table {
margin: 0px 0px 5px 55px;
}
select {
margin-left: 16px;
}
img {
background: #fff;
border: 1px solid #ccc;
padding: 3px;
}
label {
cursor: pointer;
}
.vis {
display: block;
}
.invis {
display: none;
}
pre {
font: 12px "courier new";
color: green;
border: 1px solid green;
padding: 15px;
margin: 15px auto;
width: 600px;
}
table.info {
border: 1px solid #fff;
}
table.info th, table.info td {
text-align: left;
vertical-align: top;
}
th, td {
font: 10px verdana;
padding: 3px;
margin: 0px;
border: 1px solid #366;
}
th {
font-weight: bold;
background: #fff;
}
</style>
</head>
<body>
<div id="container">
<h1>Upload weerstation gegevens</h1>
<form method="post" action="#" enctype="multipart/form-data">
<p>
<label for="userfile">kies een tekstbestand:</label>
<input id="userfile" name="userfile" type="file" size="80">
</p>
<p>
<input type="submit" value="upload">
</p>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$upload = new weerstation ('userfile', 'images');
$upload->move_file ();
foreach ($upload->get_upload_info () as $info) {
echo $info;
}
foreach ($upload->get_errs () as $err) {
echo $err;
}
$data = file ($upload->get_file ());
$data = array_slice ($data, 3, count ($data) - 3);
foreach ($data as $line) {
$test = spliti ('/ */', $line);
echo '<pre>';
print_r ($test);
echo '</pre>';
}
}
?>
</div>
</body>
</html>
zou je achter elke regel php kunnen zetten wat deze doet? Dan leer ik er ook wat van. Wat staat er allemaal in het require bestand? ik heb e.e.a. in de vorm van mijn site gezet maar hij vraagt dus om de classes.upload.php. Staan daar de upload errors en de upload info in?