formulier met countdown en Submit na einde, werkt niet
De code:
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
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
<!DOCTYPE html>
<HEAD>
<TITLE>Count Down Timer</TITLE>
<style>
input[type=submit] {
padding:5px 15px;
background:red;
color:#ffffff;
border:0 none;
cursor:pointer;
-webkit-border-radius: 5px;
border-radius: 5px;
}
input[type=text] {
background:aliceblue;
color:green;
font-weight: bold;
}
textarea {
background:aliceblue;
color:green;
font-weight: bold;
}
h1 {
color:red;
}
</style>
<SCRIPT>
var running = false
var endTime = null
var timerID = null
function startTimer(duration) {
running = true
now = new Date()
now = now.getTime()
// change last multiple for the number of minutes
endTime = now + (1000 * 60 * duration)
showCountDown()
document.getElementById("submit").disabled = true
}
function showCountDown() {
var now = new Date()
now = now.getTime()
if (endTime - now <= 0) {
stopTimer('Einde')
formSubmit()
// of alert("Time is up. Put down your pencils.")
} else {
var delta = new Date(endTime - now)
var theMin = delta.getMinutes()
var theSec = delta.getSeconds()
var theHour = delta.getHours() -1
var theTime = ((theMin < 10) ? "0" : "") + theMin
theTime += ((theSec < 10) ? ":0" : ":") + theSec
document.forms[0].timerDisplay.value = "resttijd: "+ ((theHour<1) ? "0":theHour) + ":" +theTime
if (running) {
timerID = setTimeout("showCountDown()",1000)
}
}
}
function stopTimer(status) {
clearTimeout(timerID)
running = false
document.forms[0].timerDisplay.value = status
document.getElementById("submit").disabled = false
}
function formSubmit() {
//activate submit button
document.getElementById("submit").disabled = false;
//and submit form
document.getElementById("MyForm").submit();
}
</SCRIPT>
</HEAD>
<BODY>
<center>
<h2>Artikel plaatsen</h2>
</center>
<FORM name="MyForm" id=MyForm" action="PlaatsArtikel.php" onkeypress="return event.keyCode != 13;">
<center>
Kopzin<br>
<INPUT TYPE="text" NAME="KopArtikel" PLACEHOLDER="Kopzin" SIZE="100" required ><br><br>
Tekst<br>
<TEXTAREA ROWS="8" COLS="100" NAME="BodyArtikel" PLACEHOLDER="Tekst" required></TEXTAREA>
<br><hr width="65%">
Klik "verstuur nu" of klik op een van onderstaande knoppen voor uitgesteld verzenden.<br>
<INPUT TYPE="button" NAME="startTime" VALUE="1 minuut" onClick="startTimer(1)">
<INPUT TYPE="button" NAME="startTime" VALUE="1 uur" onClick="startTimer(60)">
<INPUT TYPE="button" NAME="startTime" VALUE="3 uur" onClick="startTimer(180)">
<INPUT TYPE="button" NAME="startTime" VALUE="6 uur" onClick="startTimer(360)">
<INPUT TYPE="button" NAME="startTime" VALUE="9 uur" onClick="startTimer(540)">
<INPUT TYPE="button" NAME="startTime" VALUE="12 uur" onClick="startTimer(720)">
<br><br>
<INPUT TYPE="button" NAME="clearTime" VALUE="Stop Timer" onClick="stopTimer('Gestopt!')" style="color:red;">
<INPUT TYPE="text" NAME="timerDisplay" VALUE="00:00" Size="17">
<br><br><hr width="65%"><center>
<INPUT TYPE="submit" id="submit" NAME="submit" Value="Verstuur Nu" >
</form>
</FORM>
</BODY>
</HTML>
<HEAD>
<TITLE>Count Down Timer</TITLE>
<style>
input[type=submit] {
padding:5px 15px;
background:red;
color:#ffffff;
border:0 none;
cursor:pointer;
-webkit-border-radius: 5px;
border-radius: 5px;
}
input[type=text] {
background:aliceblue;
color:green;
font-weight: bold;
}
textarea {
background:aliceblue;
color:green;
font-weight: bold;
}
h1 {
color:red;
}
</style>
<SCRIPT>
var running = false
var endTime = null
var timerID = null
function startTimer(duration) {
running = true
now = new Date()
now = now.getTime()
// change last multiple for the number of minutes
endTime = now + (1000 * 60 * duration)
showCountDown()
document.getElementById("submit").disabled = true
}
function showCountDown() {
var now = new Date()
now = now.getTime()
if (endTime - now <= 0) {
stopTimer('Einde')
formSubmit()
// of alert("Time is up. Put down your pencils.")
} else {
var delta = new Date(endTime - now)
var theMin = delta.getMinutes()
var theSec = delta.getSeconds()
var theHour = delta.getHours() -1
var theTime = ((theMin < 10) ? "0" : "") + theMin
theTime += ((theSec < 10) ? ":0" : ":") + theSec
document.forms[0].timerDisplay.value = "resttijd: "+ ((theHour<1) ? "0":theHour) + ":" +theTime
if (running) {
timerID = setTimeout("showCountDown()",1000)
}
}
}
function stopTimer(status) {
clearTimeout(timerID)
running = false
document.forms[0].timerDisplay.value = status
document.getElementById("submit").disabled = false
}
function formSubmit() {
//activate submit button
document.getElementById("submit").disabled = false;
//and submit form
document.getElementById("MyForm").submit();
}
</SCRIPT>
</HEAD>
<BODY>
<center>
<h2>Artikel plaatsen</h2>
</center>
<FORM name="MyForm" id=MyForm" action="PlaatsArtikel.php" onkeypress="return event.keyCode != 13;">
<center>
Kopzin<br>
<INPUT TYPE="text" NAME="KopArtikel" PLACEHOLDER="Kopzin" SIZE="100" required ><br><br>
Tekst<br>
<TEXTAREA ROWS="8" COLS="100" NAME="BodyArtikel" PLACEHOLDER="Tekst" required></TEXTAREA>
<br><hr width="65%">
Klik "verstuur nu" of klik op een van onderstaande knoppen voor uitgesteld verzenden.<br>
<INPUT TYPE="button" NAME="startTime" VALUE="1 minuut" onClick="startTimer(1)">
<INPUT TYPE="button" NAME="startTime" VALUE="1 uur" onClick="startTimer(60)">
<INPUT TYPE="button" NAME="startTime" VALUE="3 uur" onClick="startTimer(180)">
<INPUT TYPE="button" NAME="startTime" VALUE="6 uur" onClick="startTimer(360)">
<INPUT TYPE="button" NAME="startTime" VALUE="9 uur" onClick="startTimer(540)">
<INPUT TYPE="button" NAME="startTime" VALUE="12 uur" onClick="startTimer(720)">
<br><br>
<INPUT TYPE="button" NAME="clearTime" VALUE="Stop Timer" onClick="stopTimer('Gestopt!')" style="color:red;">
<INPUT TYPE="text" NAME="timerDisplay" VALUE="00:00" Size="17">
<br><br><hr width="65%"><center>
<INPUT TYPE="submit" id="submit" NAME="submit" Value="Verstuur Nu" >
</form>
</FORM>
</BODY>
</HTML>
Graag jullie hulp.
Dan is het juist de bedoeling dat je dit server-side moet regelen.
De timer die dan bepaalt of de review mag worden bekeken staat dan in de query:
Hoi Ariën, hij heeft helemaal niets. De artikelen worden live geplaatst. Dus ik dacht dan aan de browserkant eea uit te stellen. Uiteraard moet hij de computer aan laten staan, om te plaatsen. Plaatsing op server is direct vanaf zijn huidige formulier. Daarom had ik dit bedacht.
De vraag is nog steeds: Hoe plaatst hij zijn artikelen dan online, en waar slaat hij die dan op?
Gewijzigd op 03/01/2018 20:47:22 door - Ariën -
Het zijn allemaal tekstbestanden. Het laatste bestand heet “nws-artikel.txt” en dat wordt door php op de pagina getoond. En wat er niet is, wordt dus niet geïndexeerd. Een nieuw artikel wordt gewoon over de oude geschreven. Erg simpel. Maar voor hem werkt het.
Met een database werkt het wel stukken makkelijker. Vooral al je extra data wilt opslaan, of dingen wilt koppelen. Als je het simpel wilt doen zou WordPress ook prima voldoen.
Gewijzigd op 03/01/2018 20:54:39 door - Ariën -
Ik bedacht dit formulier waar hij dus de inhoud kan invoeren. De timer aanklikken en vervolgens wordt door de browser het artikel, formulier geplaatst. Zo simpel mogelijk. Het zou dus lukken als het formulier na de countdown wordt gesumbitted. Een php-pagina wordt, uiteraard beveiligd, aangeroepen en die plaatst dan het artikel. Maar wellicht te simpel bedacht door mij.
Niet echt handig. Stel je voor dat deze uitvalt, er een stroomstoring is of heel simpel je browser opeens wordt afgesloten. Dan kan je lang wachten totdat die online komt te staan.
De beste oplossing is om het artikel gewoon online te zetten, maar met een publicatiedatum. De server bepaald dan of iemand hem wel of niet mag bekijken.
Je kan dan zelfs tijdens vakanties of tijdens je afwezigheid een artikel inplannen.
Waarom gebruik je geen Wordpress? Is in een handomdraai geinstalleerd, en je kan ook gepland berichten uitvoeren.
Gewijzigd op 03/01/2018 21:00:14 door - Ariën -
Dat moet zijn hele site overgezet gaan worden. Dus had ik deze tussenoplossing bedacht. Wellicht te simpel. Nu kan ik niets verder doen voor hem.
Als ik hier lees zie ik al heel veel mogelijkheden:
https://codex.wordpress.org/Importing_Content#Importing_from_a_Site_of_Static_Pages
En deze addon, lijkt mij ook waardevol: https://wordpress.org/plugins/import-html-pages/
Gewijzigd op 03/01/2018 21:04:02 door - Ariën -
Gewijzigd op 03/01/2018 21:04:16 door Jan te Pas
Graag gedaan!
Gewijzigd op 03/01/2018 21:06:24 door - Ariën -
Code (php)
1
2
3
4
5
6
2
3
4
5
6
function formSubmit() {
//activate submit button
document.getElementById("submit").disabled = false;
//and submit form
document.getElementById("submit").click();
}
//activate submit button
document.getElementById("submit").disabled = false;
//and submit form
document.getElementById("submit").click();
}
De click drukt de Submit in. Kleine aanpassing. Neemt niet weg dat de hele oplossing een workaround is voor zijn probleem. Nogmaals dank.
Je kan deze in je .txt bestanden opslaan.
Of gebruik XML voor een betere structuur als je dergelijke metadata wilt opslaan. Hoewel een database nog verstandiger is.
Gewijzigd op 04/01/2018 08:54:56 door - Ariën -
Ik ga druk uitoefenen om het systeem ‘eindelijk’ over te zetten. Groet
Ik denk dat het handiger is als je inderdaad het moment van schrijven en het moment van publiceren ontkoppelt. Dit kun je heel eenvoudig doen door artikelen een status te geven en/of een publicatiedatum op grond waarvan je bepaalt of een artikel getoond moet worden of niet.
Vraag ik mij opnieuw af: waarom de hang naar werken met bestanden? Je bent ondertussen op een niveau bezig waarin je naar wat intelligentere automatisering moet gaan kijken dan -excusez le mot- het priegelen met bestanden. Dit werkt op een gegeven moment meer tegen dan mee, vooral wanneer je met (nu wellicht nog kleine, maar op den duur groeiende) collecties gestructureerde data werkt.
En vooral als je op deze collectie data allerlei vragen gaat afvuren waarbij je moet kunnen rekenen, en de data moet kunnen filteren, sorteren en manipuleren. Stel dat dadelijk alle artikelen in een (of meer) bestand(en) zitten. Stel vervolgens dat je verschillende auteurs hebt. Hoe trek je dan alle artikelen uit zo'n (of meerdere) bestand(en) als je geïnteresseerd bent in alle artikelen van de auteur "Henk" die dit jaar geschreven zijn? Dat is een hels karwei om dat uit een ongestructureerd bestand te trekken. En deze vragen zullen op den duur komen. Voor een backend waarin je deze data beheert, of een rapport waarin je dit soort statistieken verzamelt. Dit is een haast ondoenlijke klus als de data waarop je deze vraagstukken wilt loslaten totaal ongestructureerd is. In een database is dit anders, dan komt het ophoesten van al deze informatie neer op een query als:
Code (php)
1
2
3
4
5
2
3
4
5
SELECT *
FROM articles
WHERE author = 'Henk'
AND YEAR(publish_date) = YEAR()
AND published = 1
FROM articles
WHERE author = 'Henk'
AND YEAR(publish_date) = YEAR()
AND published = 1
Ik bedoel, dat lijkt mij simpeler dan bestanden uitpakken, doorploeteren, resultaten verzamelen et cetera.
Dus: wat is de reden dat je niet van het hulpmiddel "database" gebruik maakt? Heb je hier geen ervaring mee? (Gewoon beginnen!) Ondersteunt je webhost wel PHP maar niet het gebruik van databases? (Wie doet dat nog tegenwoordig, tijd om over te stappen?). Een andere reden? (Ik hoor het graag).
Op het moment dat je een artikelsysteem (of liever gezegd, een soort workflow) aan het bouwen bent kom je er eigenlijk niet meer omheen dat je van een soort van DB gebruikt. Het gebruik van platte bestanden schiet dan gewoon tekort.
Gewijzigd op 04/01/2018 16:11:21 door Thomas van den Heuvel
Hoi Thomas, dank voor jouw stuk. Ik ga er helemaal in mee. Echter mijn kennis wil (nog) niet veranderen. Dit wordt het laatste dat ik voor hem doe op het oude platform van hem. Liever goed dan houtje touwtje.... ik werk liever database gestuurd omdat ik in tabellen het denkmodel kan vastleggen. Dank.