Tijd uit database + 2 uur
Maar in 1 database (datetime) staat de datum en tijd als volgt, voorbeeld:
2008-07-21 16:00:00
Nu wil ik graag dat er bij de tijd niet 16:00:00 staat maar 18:00:00.
Dit betreft diverse nieuws artikelen dus het gaat om steeds wisselende tijden.
De tijd haalt het script uit de tabel "publishedOn"
De bedoeling is dat de goede tijd tussen: <newspublication_date>" . $row['publishedOn'] . "</newspublication_date> komt te staan.
Wie kan mij hier mee helpen ?
Het script:
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
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
<?php
header("Content-type: text/xml");
$host = "localhost";
$user = "user";
$pass = "password";
$database = "database";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
$query = "SELECT * FROM ap_articles WHERE status = 'visible' AND publishedOn < NOW() ORDER BY publishedOn DESC LIMIT 0, 1000";
$resultID = mysql_query($query, $linkID) or die("Data not found.");
$xml_output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$xml_output .= "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:news=\"http://www.google.com/schemas/sitemap-news/0.9\">\n";
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t<url>\n";
$xml_output .= "\t\t<loc>" . $row['url'] . "</loc>\n";
$xml_output .= "\t<news:news>\n";
// Escaping illegal characters
$row['publishedOn'] = str_replace(" ", "T", $row['publishedOn']);
$xml_output .= "\t\t<news:publication_date>" . $row['publishedOn'] . "</news:publication_date>\n";
$xml_output .= "\t<news:keywords>" . $row['keywords'] . "</news:keywords>\n";
$xml_output .= "\t</news:news>\n";
$xml_output .= "\t</url>\n";
}
$xml_output .= "</urlset>";
echo $xml_output;
?>
header("Content-type: text/xml");
$host = "localhost";
$user = "user";
$pass = "password";
$database = "database";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
$query = "SELECT * FROM ap_articles WHERE status = 'visible' AND publishedOn < NOW() ORDER BY publishedOn DESC LIMIT 0, 1000";
$resultID = mysql_query($query, $linkID) or die("Data not found.");
$xml_output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$xml_output .= "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:news=\"http://www.google.com/schemas/sitemap-news/0.9\">\n";
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t<url>\n";
$xml_output .= "\t\t<loc>" . $row['url'] . "</loc>\n";
$xml_output .= "\t<news:news>\n";
// Escaping illegal characters
$row['publishedOn'] = str_replace(" ", "T", $row['publishedOn']);
$xml_output .= "\t\t<news:publication_date>" . $row['publishedOn'] . "</news:publication_date>\n";
$xml_output .= "\t<news:keywords>" . $row['keywords'] . "</news:keywords>\n";
$xml_output .= "\t</news:news>\n";
$xml_output .= "\t</url>\n";
}
$xml_output .= "</urlset>";
echo $xml_output;
?>
Gewijzigd op 01/01/1970 01:00:00 door SSC Contact Centers B.V.
Gewijzigd op 01/01/1970 01:00:00 door Mathijs
PHP Newbie schreef op 23.07.2008 16:19:
DATE_ADD(NOW(), INTERVAL 2 HOURS)
Waar en hoe moet ik dit neer zetten in het script ?
Dat stukje code geeft de huidige datum en tijd + 2 uur. Deze moet je dus neerzetten in de SQL code waar je die datum nodig hebt.
Maar ik moet niet de huidige tijd +2 uur hebben maar de tijd van de nieuwsartikelen welke hij uit de database haalt. Hoe moet k dat doen ?
PHP Newbie schreef op 23.07.2008 16:22:
Dat stukje code geeft de huidige datum en tijd + 2 uur. Deze moet je dus neerzetten in de SQL code waar je die datum nodig hebt.
Bij wijze van test:
Als ik probeer om de code tussen de <news:publication_date> tags te zetten geeft hij de DATEADD enz.. als normale tekst weer, hij doet niets met de code, hoe kan dit?
Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Mathijs
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
$query = "SELECT
url,
pubslishedOn,
keywords,
DATE_ADD(publishedOn, INTERVAL 2 HOURS) AS publishedOnLater
FROM
ap_articles
WHERE
status = 'visible'
AND publishedOn < NOW()
ORDER BY
publishedOn DESC LIMIT 0, 1000";
url,
pubslishedOn,
keywords,
DATE_ADD(publishedOn, INTERVAL 2 HOURS) AS publishedOnLater
FROM
ap_articles
WHERE
status = 'visible'
AND publishedOn < NOW()
ORDER BY
publishedOn DESC LIMIT 0, 1000";
Nu kun je de publicatiedatum + 2 uur opvragen met de variabele $row['publishedOnLater']
Wat moet ik aanpassen ?
Date add heb je niet nodig je kunt gewoon publishedOn + INTERVAL 2 HOURS
Beetje rare error, is dat de exacte error?
weg haal werkt het script wel, hij geeft niet de resultaten weer, maar ik krijg geen error meer.
Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Mathijs
Na 'keywords' moet nog een comma en let eens op SanThe's text. Niet bumpen, kthxbai.
Dit werkt over het algemeen op elke database
publishedOn + INTERVAL 2 HOUR
Gewijzigd op 01/01/1970 01:00:00 door Noppes
Noppes schreef op 23.07.2008 17:53:
Tja en als je nu gelijk afleert om DATE_ADD en DATE_SUB te gebruiken dan kom je veel verder.
Dit werkt over het algemeen op elke database
publishedOn + INTERVAL 2 HOUR
Dit werkt over het algemeen op elke database
publishedOn + INTERVAL 2 HOUR
Helemaal gelijk
Dank jullie wel, het probleem is nu opgelost.