Timediff
Ik wil het verschil uitrekenen tussen een vastgestelde begintijd en de huidige tijd. Ik heb al geprobeerd een query te maken, maar dat zit nog niet helemaal goed. iemand weet hoe dit goed moet?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = "SELECT TIMEDIFF('".$row2['begintijd']."','NOW()') AS verschil";
$query = mysql_query($sql);
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$tijdBrokken[0].'</TD></TR>';
}
?>
$sql = "SELECT TIMEDIFF('".$row2['begintijd']."','NOW()') AS verschil";
$query = mysql_query($sql);
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$tijdBrokken[0].'</TD></TR>';
}
?>
Nog even wat info: Deze query staat in een whilelus, die gewoon werkt. De warnings zijn alsvolgt:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/ralphjenl/domains/ralphje.nl/public_html/home/2-gebroeders/POH/verzamelen.php on line 80
De variabelnamen kloppen gewoon allemaal.
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/ralphjenl/domains/ralphje.nl/public_html/home/2-gebroeders/POH/verzamelen.php on line 80
De variabelnamen kloppen gewoon allemaal.
echo je query is en voer hem in in phpmyadmin
Hoe bedoel je dat?
en de output invoeren in phpmyadmin
Ja duhu, maar waar voer ik wat in? Er zit een fout in mijn script, wie weet verbeteringen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql = "
SELECT TIMEDIFF(".$row2['begintijd'].", CURTIME()) AS verschil";
$query = mysql_query($sql) or trigger_error (mysql_error ());
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$tijdBrokken[0].'</TD></TR>';
?>
$sql = "
SELECT TIMEDIFF(".$row2['begintijd'].", CURTIME()) AS verschil";
$query = mysql_query($sql) or trigger_error (mysql_error ());
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$tijdBrokken[0].'</TD></TR>';
?>
Edit:
paar enkele quotes uit de query verwijderd
paar enkele quotes uit de query verwijderd
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Notice: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('2006-08-28 13:59:22', CURTIME()) AS verschil' at line 1 in /home/ralphjenl/domains/ralphje.nl/public_html/home/2-gebroeders/POH/verzamelen.php on line 80
Maar ik heb nog geen idee wat fout is nu.
Maar ik heb nog geen idee wat fout is nu.
zie mijn edit van de vorige post
Ik heb nu deze error gewoon weer:
Notice: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(2006-08-28 13:59:22, CURTIME()) AS verschil' at line 1 in /home/ralphjenl/domains/ralphje.nl/public_html/home/2-gebroeders/POH/verzamelen.php on line 80
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/ralphjenl/domains/ralphje.nl/public_html/home/2-gebroeders/POH/verzamelen.php on line 81
Notice: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(2006-08-28 13:59:22, CURTIME()) AS verschil' at line 1 in /home/ralphjenl/domains/ralphje.nl/public_html/home/2-gebroeders/POH/verzamelen.php on line 80
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/ralphjenl/domains/ralphje.nl/public_html/home/2-gebroeders/POH/verzamelen.php on line 81
Het kan zijn dat TIMEDIFF twee gelijke argumenten verwacht. Dus of allebei TIME, of allebei DATETIME.
Wat je uit zou kunnen proberen is even met de hand letterlijk '13:59:22' invullen in je query, dan weet je het snel genoeg.
Wat je uit zou kunnen proberen is even met de hand letterlijk '13:59:22' invullen in je query, dan weet je het snel genoeg.
Edit:
Deze doet het lokaal prima:
SELECT TIMEDIFF( CURTIME( ) , '12:00:00' ) AS verschil
FROM phphulp
LIMIT 0 , 30
Deze doet het lokaal prima:
SELECT TIMEDIFF( CURTIME( ) , '12:00:00' ) AS verschil
FROM phphulp
LIMIT 0 , 30
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Nee Jan het werkt zo ook niet.
Dit is de code die ik nu heb. Ik zal de rest van de code even plaatsen zodat er beter overzicht is.
Maar als ik dit heb ben ik er nog niet. Ik heb 2 waarden. De datum waarop een productie is aangemaakt, en hoelang hij duurt. Ik moet dan weergeven hoelang het nog duurt voordat de productie klaar is. Anders gewoon 00:00:00.
En later moet ik kijken als hij klaar is dan moeten er weer bewerkingen worden uitgevoerd in de database. Dus dan weet je even wat ik wil.
Weet je misschien een andere oplossing die beter werkt?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "
SELECT TIMEDIFF( CURTIME() , '15:45:00' ) AS verschil";
$query = mysql_query($sql) or trigger_error (mysql_error ());
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
?>
$sql = "
SELECT TIMEDIFF( CURTIME() , '15:45:00' ) AS verschil";
$query = mysql_query($sql) or trigger_error (mysql_error ());
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
?>
Dit is de code die ik nu heb. Ik zal de rest van de code even plaatsen zodat er beter overzicht is.
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
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
<?php
$sql2 = "SELECT * FROM spelproductie WHERE naam = '".$naam."'";
$res2 = mysql_query($sql2);
$get2 = mysql_num_rows($res2);
if($get2 >= 1)
{
echo'
<TABLE WIDTH="520" BORDER="1" BORDERCOLOR="#AAAAAA" cellspacing="0">
<TR STYLE="padding-left: 9px">
<TD><B>Productie</B></TD>
<TD><B>Status</B></TD>
<TD><B>Duur</B></TD>
</TR>';
while($row2 = mysql_fetch_array($res2))
{
echo'
<TR>
<TD STYLE="padding-left: 9px">'.$row2['productievorm'].'
</TD>
<TD ALIGN="right" STYLE="padding-right: 9px">'.$row2['productiestatus'].'
</TD>';
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$row2['eerstvolgendehandeling'].'</TD>';
$sql = "
SELECT TIMEDIFF( CURTIME() , '15:45:00' ) AS verschil";
$query = mysql_query($sql) or trigger_error (mysql_error ());
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$tijdBrokken[0].'</TD></TR>';
}
echo'</TABLE>';
?>
$sql2 = "SELECT * FROM spelproductie WHERE naam = '".$naam."'";
$res2 = mysql_query($sql2);
$get2 = mysql_num_rows($res2);
if($get2 >= 1)
{
echo'
<TABLE WIDTH="520" BORDER="1" BORDERCOLOR="#AAAAAA" cellspacing="0">
<TR STYLE="padding-left: 9px">
<TD><B>Productie</B></TD>
<TD><B>Status</B></TD>
<TD><B>Duur</B></TD>
</TR>';
while($row2 = mysql_fetch_array($res2))
{
echo'
<TR>
<TD STYLE="padding-left: 9px">'.$row2['productievorm'].'
</TD>
<TD ALIGN="right" STYLE="padding-right: 9px">'.$row2['productiestatus'].'
</TD>';
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$row2['eerstvolgendehandeling'].'</TD>';
$sql = "
SELECT TIMEDIFF( CURTIME() , '15:45:00' ) AS verschil";
$query = mysql_query($sql) or trigger_error (mysql_error ());
$tijd = mysql_fetch_object($query);
$tijdBrokken = explode(":",$tijd->verschil);
echo'<TD ALIGN="right" STYLE="padding-right: 9px">'.$tijdBrokken[0].'</TD></TR>';
}
echo'</TABLE>';
?>
Maar als ik dit heb ben ik er nog niet. Ik heb 2 waarden. De datum waarop een productie is aangemaakt, en hoelang hij duurt. Ik moet dan weergeven hoelang het nog duurt voordat de productie klaar is. Anders gewoon 00:00:00.
En later moet ik kijken als hij klaar is dan moeten er weer bewerkingen worden uitgevoerd in de database. Dus dan weet je even wat ik wil.
Weet je misschien een andere oplossing die beter werkt?
Ik moet nu even op pad, maar kijk straks misschien nog wel even. Je moet in ieder geval ook rekening houden met de wisseling van etmalen.
Als je begintijd bijvoorbeeld half twaalf 's avonds is op 20 mei en je eindtijd is twee uur 's nachts op 21 mei moet er evengoed 150 minuten uit rollen, neem ik aan.
Als je begintijd bijvoorbeeld half twaalf 's avonds is op 20 mei en je eindtijd is twee uur 's nachts op 21 mei moet er evengoed 150 minuten uit rollen, neem ik aan.
Ja en dat is dus het probleem...de volgende dag ok. De volgende maand kan ook nog....Maarjah een volgend jaar...en je hebt natuurlijk schrikkeljaar....die eenkeer in de 100 jaar weer niet voorkomt. En omdat mijn script ook in 2100 moet werken :P hehe.
Maar volgens mij kan dat toch met deze functie?
Maar volgens mij kan dat toch met deze functie?
Wie weet hoe ik dit kan aanpakken? BUMB
Als je TIMEDIFF twee DATETIME's voert, doet hij het prima:
SELECT timediff( '2008-01-01 00:01:00', '2007-12-31 23:59:00' ) AS verschil
geeft keurig 00:02:00
SELECT timediff( '2008-01-01 00:01:00', '2007-12-31 23:59:00' ) AS verschil
geeft keurig 00:02:00
Hmmm, ik ben er achter waarom het niet wilde, mijn mysql versie is te laag, je hebt minimaal versie 4.1 nodig om de functie timediff() te gebruiken. Maar hoe krijg ik het voor elkaar dat die versie omhoog gaat. Ik zit namenlijk bij iemand anders op zijn webspace.
Als je niet de beschikking hebt over TIMEDIFF, zul je het verschil met een PHP functie uit moeten rekenen.
Als je de twee tijden in dit formaat zet:
yyyy-mm-dd hh:mm:ss
dan kun je er een UNIX timestamp van maken met strtotime. Dat levert twee getallen op die je van elkaar af kunt trekken om het verschil in seconden te krijgen.
Als je de twee tijden in dit formaat zet:
yyyy-mm-dd hh:mm:ss
dan kun je er een UNIX timestamp van maken met strtotime. Dat levert twee getallen op die je van elkaar af kunt trekken om het verschil in seconden te krijgen.
Maar ik heb in de database een hh:mm:ss en een volle datum, kan ik dan ook gewoon met twee tijden dat uitrekenen, inplaats van date-date?
En exploden op een spatie kan dat?
En het min verschil kijk je dat of niet?
En exploden op een spatie kan dat?
En het min verschil kijk je dat of niet?




