Beginnende beginner heeft hulp nodig
Wat wil ik?
Iets wat op een nieuwssysteem lijkt, maar zonder SQL of enige vorm van beveiliging. Ik wil graag 2 tekst vakken, een titel en tekst vlak, op het moment dat ik op submit druk, moeten die 2 samen met de correcte datum worden opgeslagen in een tekst bestand. Bij de volgende keer invullen moeten de volgende 3 dingen (datum/titel/tekst) in het zelfde tekst bestand eronder worden geplaatst. Ik wel het gebruiken om als actieve desktop in te stellen. Zo kan ik namelijk documenteren wat ik op het werk allemaal doe.
Wat heb ik?
Ga er maar van uit dat het bestand taken.txt al bestaat en geCHMOD is naar 777.
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
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
<?php
$file = 'taken.txt';
$date = date("H:i - D d.m.y");
$titel = $_POST["titel"];
$inhoud = $_POST["inhoud"];
// If alles ingevuld, else invullen
if (!isset($_POST['submit'])) {
?>
<html>
<form method="post" action="<?php echo $PHP_SELF ?>">
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="100">Dag</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td valign="top" width="100">Uitgevoerde werkzaamheden</td>
<td><textarea cols="75" rows="15" name="inhoud"></textarea></td>
</tr>
<tr>
<td colspan="2"><input name="submit" type="submit" value="Toevoegen!"></td>
</tr>
</table>
</form>
</html>
<?php
}
else{
print "Succes ingevuld ($date, $titel, $inhoud) naar bestand ($file)";
}
// Controle of bestand schrijfbaar is
if (is_writable($file)) {
// Openen van bestand in toevoeg modus met cursor onderaan.
if (!$handle = fopen($file, 'a')) {
print "Kan het bestand niet openen ($file)";
exit; }
// Schrijf content naar bestand dat we geopend hebben.
if (!fwrite($handle, $date, $titel, $inhoud)) {
print "Kan niet schrijven naar bestand ($file)";
exit; }
fclose($handle);
}
else{
print "Het bestand $file is niet schrijfbaar";
}
?>
$file = 'taken.txt';
$date = date("H:i - D d.m.y");
$titel = $_POST["titel"];
$inhoud = $_POST["inhoud"];
// If alles ingevuld, else invullen
if (!isset($_POST['submit'])) {
?>
<html>
<form method="post" action="<?php echo $PHP_SELF ?>">
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="100">Dag</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td valign="top" width="100">Uitgevoerde werkzaamheden</td>
<td><textarea cols="75" rows="15" name="inhoud"></textarea></td>
</tr>
<tr>
<td colspan="2"><input name="submit" type="submit" value="Toevoegen!"></td>
</tr>
</table>
</form>
</html>
<?php
}
else{
print "Succes ingevuld ($date, $titel, $inhoud) naar bestand ($file)";
}
// Controle of bestand schrijfbaar is
if (is_writable($file)) {
// Openen van bestand in toevoeg modus met cursor onderaan.
if (!$handle = fopen($file, 'a')) {
print "Kan het bestand niet openen ($file)";
exit; }
// Schrijf content naar bestand dat we geopend hebben.
if (!fwrite($handle, $date, $titel, $inhoud)) {
print "Kan niet schrijven naar bestand ($file)";
exit; }
fclose($handle);
}
else{
print "Het bestand $file is niet schrijfbaar";
}
?>
Zelfs de syntax van het bestand klopt niet meer, omdat ik teveel dingen heb lopen verplaatsen. Ik verwacht niet dat iemand dit voor mij dit schrijft, wat ik wel hoop dat iemand mij een beetje de goede richting in kan helpen. Ik heb namelijk geen flauw idee of ik wel de goede dingen bij elkaar zet. Waarom ik geen kant en klaar systeem gebruik van deze site? Ten eerste omdat ik het leuk vind om wat uit te proberen, ten tweede omdat het meeste met SQL werkt of overbodige nieuwsfuncties heeft die ik niet nodig heb.
Edit: syntax klopt wel weer, maar het script klopt nog steeds van geen kant. Krijg het invul veld wel, maar er word niets in het bestand gezet.
Gewijzigd op 01/01/1970 01:00:00 door Nik
Een paar tips/opmerkingen:
Je maakt deze $vars aan:
$titel = $_POST["titel"];
$inhoud = $_POST["inhoud"];
Dat is eigenlijk overbodig want je kan de $_POST-vars zo op de plek zetten waar je ze nodig hebt. Beter is om de $_POST-vars altijd te checken op 'correcte input', 'niet leeg', en andere dingen zodat ze niet je database, file en/of layout om zeep helpen.
Jij gebruikt 'print', ik zou 'echo' gaan gebruiken. Dat is sneller en het is toch elke keer weer één letter minder om te typen. Verder hou $vars buiten de quotes van de echo.
Dus:
print "Succes ingevuld ($date, $titel, $inhoud) naar bestand ($file)";
Zou ik zo doen:
echo 'Succes ingevuld (' . $date ', ' . $titel . ', ' . $inhoud . ') naar bestand (' . $file . ')';
Als je iets print of echoot en je gebruikt direct daarna exit, dan kan dat ook in één keer.
print "Kan het bestand niet openen ($file)";
exit;
Zo:
exit('Kan het bestand niet openen (' . $file . ')');
In deze regel:
if (!fwrite($handle, $date, $titel, $inhoud))
heb je nu vier parameters, dat moeten er twee zijn.
Dus met punten tussen de $vars:
if (!fwrite($handle, $date . $titel . $inhoud))
Bedankt voor je hulp, ik ga die dingen even aanpassen.
Het script werkt inmiddels dankzij jullie hulp. Zoals je al zei Jan, het wordt klakkeloos achter elkaar gezet en ik had graag een scheiding ertussen. Maar voor ik het kon vragen hebben jullie al antwoord gegeven. Hartstikke bedankt. Als iemand nog op of aanmerkingen heeft hoop ik het graag te horen.
Nik
Daarnaast kennen DB's geweldige DATE/TIME-functies. Op die manier kan je de data ook heel makkelijk sorteren waardoor je kan kijken wat er in een bepaald tijdsbestek valt.
Elwin
11.11.2006 - 19:42||11.11.2006 - 19:42|11111111|2222222
Dit zou moeten zijn:
11.11.2006 - 19:42|11111111|2222222
Dan nog het probleem dat de 2de invoer niet op een nieuwe regel in het tekst bestand begint.
Mijn code zit er op het moment als volgt uit:
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
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
<?php
$file = 'taken.txt';
$date = date("d.m.Y - H:i");
// If alles ingevuld, else invullen
if (!isset($_POST["submit"])){
?>
<html>
<form method="post" action="<?php echo $PHP_SELF ?>">
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="100">Dag</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td valign="top" width="100">Uitgevoerde werkzaamheden</td>
<td><textarea cols="75" rows="15" name="inhoud"></textarea></td>
</tr>
<tr>
<td colspan="2"><input name="submit" type="submit" value="Toevoegen!"></td>
</tr>
</table>
</form>
</html>
<?php
}
else{
echo '<b>De volgende gegevens zijn succesvol ingevuld: </b><br><br>
Datum: ' . $date . '<br>
Dag: ' . $_POST["titel"] . '<br>
Werkzaamheden: ' . $_POST["inhoud"] . '<br><br>';
}
// Controle of bestand schrijfbaar is
if (is_writable($file)) {
// Openen van bestand in toevoeg modus met cursor onderaan.
if (!$handle = fopen($file, 'a+')) {
exit('Kan het bestand niet openen (' . $file . ')');
}
// Schrijf content naar bestand dat we geopend hebben.
if (!fputs ($handle, $date . '|' . $_POST["titel"] .'|'. $_POST["inhoud"]));{
exit('Kan niet schrijven naar bestand (' . $file . ')');
}
fclose($handle);
}
else{
echo 'Het bestand (' . $file . ') is niet schrijfbaar';
}
[/code]
Een voorbeeld is te bekijken op www.aqid.nl/taken.php en taken.txt
$file = 'taken.txt';
$date = date("d.m.Y - H:i");
// If alles ingevuld, else invullen
if (!isset($_POST["submit"])){
?>
<html>
<form method="post" action="<?php echo $PHP_SELF ?>">
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="100">Dag</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td valign="top" width="100">Uitgevoerde werkzaamheden</td>
<td><textarea cols="75" rows="15" name="inhoud"></textarea></td>
</tr>
<tr>
<td colspan="2"><input name="submit" type="submit" value="Toevoegen!"></td>
</tr>
</table>
</form>
</html>
<?php
}
else{
echo '<b>De volgende gegevens zijn succesvol ingevuld: </b><br><br>
Datum: ' . $date . '<br>
Dag: ' . $_POST["titel"] . '<br>
Werkzaamheden: ' . $_POST["inhoud"] . '<br><br>';
}
// Controle of bestand schrijfbaar is
if (is_writable($file)) {
// Openen van bestand in toevoeg modus met cursor onderaan.
if (!$handle = fopen($file, 'a+')) {
exit('Kan het bestand niet openen (' . $file . ')');
}
// Schrijf content naar bestand dat we geopend hebben.
if (!fputs ($handle, $date . '|' . $_POST["titel"] .'|'. $_POST["inhoud"]));{
exit('Kan niet schrijven naar bestand (' . $file . ')');
}
fclose($handle);
}
else{
echo 'Het bestand (' . $file . ') is niet schrijfbaar';
}
[/code]
Een voorbeeld is te bekijken op www.aqid.nl/taken.php en taken.txt
Misschien Elwin zn raad opvolgen en toch maar met SQL aan de slag gaan?