Anzahl der neuen Beiträge auslesen
06.04.05, 12:59:22
hama
Hallo
Ich habe nochmals eine Bitte:
Auf der Startseite meiner Website möchte ich die Anzahl der neuen Beiträge seit dem letzten Besuch im Forum ausgeben. Bei der Anzahl Mitglieder oder bei der Anzahl neuer PN's usw. habe ich es (mit Hilfe) geschafft, aber bei den neuen Beiträgen komme ich nicht weiter. Ich habe erfahren, dass gewisse Zeilen von der search.php (bei Zeile 217, wo die Abfrage zusammengebaut wird) übernommen werden können. Ziel ist es nachher, dass ich beispielsweise mit $new_posts die Anzahl ausgeben werden kann.
So sieht es bei "Total Beiträgen" aus (als Beispiel, funktioniert):
[PHP] // total posts
$total_posts = implode('', $_board->fetch_first('SELECT SUM(`posts`)
FROM '.$TB_BOARD_FORUM));[/PHP]
So sieht es bei den "Neuen PN's" aus (als Beispiel, funktioniert):
[PHP]// Neue Private Nachrichten
$_user['pn_new'] = 0;
if (is_numeric($_user['id'])) {
$_user['pn_new'] = intval( implode('', $_board->fetch_first('SELECT COUNT(*)
FROM '.$TB_BOARD_MSG.'
WHERE to_id = '.$_user['id'].'
AND `del` <> 1
AND view = 0')));[/PHP]
Und eben hierzu suche ich die Lösung:
[PHP]// Neue Forum-Posts
$new_posts;
if;[/PHP]
Danke für ein bisschen Hilfe und eine gute Zeit :)
hama
06.04.05, 13:02:26
BugHunter2k
[php]
$result=$_db->query_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].' WHERE postdate > '.$user['lastvisit']);
$newposts=$result['posts'];
[/php]
das $user['lastvisit']; musst du evtl ncoh ändern, da muss die timestamp vom letzten besuch hin (steht irgendwo in $user oder $_user oder so.
06.04.05, 13:07:59
hama
Im search.php ist bei neuen Beiträgen PMF_TIME angegeben. Muss ich etwas von dieser Zeile einbauen?
[PHP] } elseif ($get == 'new') {
$where = 'p.`post_date` > '.(($_user['last_login']) ? $_user['last_login'] : PMF_TIME);[/PHP]
Thanks
hama
06.04.05, 13:09:25
BugHunter2k
$_user['last_login']
das schaut gut
06.04.05, 13:55:35
hama
Geht noch nicht:
Habe das eingebaut:
[PHP] // total new posts
$result=$_db->query_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].' WHERE postdate > '.$user['last_login']);
$newposts=$result['posts']; [/PHP]
und gebe aus mit $newposts
Wenn's keine neuen Posts hat, sollte 0 ausgegeben werden. Das bringe ich auch nicht hin. Es kommt eh noch gar keine Ausgabe. :(
Gruss :)
hama
06.04.05, 13:57:58
BugHunter2k
postdate ist falsch,
das muss
post_date heissen
06.04.05, 14:19:39
hama
Fatal error: Call to undefined function: query_first() in /home/httpd/vhosts/orst.ch/httpdocs/head.php on line 48
Line 48:
[PHP] $result=$_db->query_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].' WHERE post_date > '.$user['last_login']);[/PHP]
:(
06.04.05, 14:22:20
BugHunter2k
stimmt, das ding heisst fetch_first...
[php]
$result=$_db->fetch_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].' WHERE post_date > '.$user['last_login']);
[/php]
06.04.05, 14:38:29
hama
[PHP]// total new posts
$result=$_db->fetch_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].' WHERE post_date > '.$user['last_login']);
$newposts=$result['posts']; [/PHP]
gibt auf der Startseite die Fehlermeldung:
SQL Error: 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 'WHERE post_date > LIMIT 0,1' at line 1
Tja, leider kann ich nichts anderes als ausprobieren. Ist aber kein Stress, wenn's nicht geht ... Die Freude ist dann umso grösser, wenn plötzlich keine Fehlermeldung mehr kommt.
Gruss
hama
06.04.05, 15:15:27
BugHunter2k
[php]
// total new posts
$result=$_db->fetch_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].' WHERE post_date > '.$_user['last_login']);
$newposts=$result['posts'];
[/php]
06.04.05, 17:47:58
hama
[PHP]// total new posts
$result=$_db->fetch_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].' WHERE post_date > '.$_user['last_login']);
$newposts=$result['posts']; [/PHP]
gibt:
SQL Error: 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 'WHERE post_date > 1112791826 LIMIT 0,1' at line 1
SELECT count(*) as posts FROM WHERE post_date > 1112791826 LIMIT 0,1
Geht noch nicht. Aufgeben? :(
Gruss
hama
06.04.05, 17:55:19
BugHunter2k
[php]
$result=$_db->fetch_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].'post WHERE post_date > '.$_user['last_login']);
[/php]
06.04.05, 18:00:02
hama
Gibt leider ...
SQL Error: Table 'oshomepage.post' doesn't exist
SELECT count(*) as posts FROM post WHERE post_date > 1112795912 LIMIT 0,1
06.04.05, 18:01:47
BugHunter2k
Wo steht denn das ding ?
in der index.php ?
sach mal die stelle,
es scheint so, als ob die variable $_cfg fehlt
06.04.05, 18:30:14
hama
Die Abfrage schreibe ich in die head.php meiner website.
Brauchst du mehr oder andere Informationen?
06.04.05, 18:31:40
BugHunter2k
aan welche stelle in der head ?
zeilennr. bzw. die zeilen davor oder danach
06.04.05, 18:33:35
hama
Das ist der Anfang der head.php:
[PHP]### Session Include
include($_cfg['MAIN'].'/lib/sessions.inc.php');
#
#
### Template Classe includen
include($_cfg['MAIN'].'/lib/tpl.inc.php');
$_style = new pmf_style($_cfg['STYLE']);
#
#
### neue Private Nachrichten ? && Anzahl Members
$_user['pn_new'] = 0;
if (is_numeric($_user['id'])) {
$_user['pn_new'] = intval( implode('', $_board->fetch_first('SELECT COUNT(*)
FROM '.$TB_BOARD_MSG.'
WHERE to_id = '.$_user['id'].'
AND `del` <> 1
AND view = 0')));
// members
$members = implode('', $_board->fetch_first('SELECT COUNT(*)
FROM '.$TB_BOARD_USER));
// total posts
$total_posts = implode('', $_board->fetch_first('SELECT SUM(`posts`)
FROM '.$TB_BOARD_FORUM));
// total hits
$total_hits = implode('', $_board->fetch_first('SELECT SUM(`views`)
FROM '.$TB_BOARD_TOPIC));[/PHP]
Gruss
hama
06.04.05, 18:42:09
hama
Das ist die head.php inkl. // total new posts ($result ... ist auf Zeile 47):
[PHP]fetch_first('SELECT COUNT(*)
FROM '.$TB_BOARD_MSG.'
WHERE to_id = '.$_user['id'].'
AND `del` <> 1
AND view = 0')));
// members
$members = implode('', $_board->fetch_first('SELECT COUNT(*)
FROM '.$TB_BOARD_USER));
// total posts
$total_posts = implode('', $_board->fetch_first('SELECT SUM(`posts`)
FROM '.$TB_BOARD_FORUM));
// total hits
$total_hits = implode('', $_board->fetch_first('SELECT SUM(`views`)
FROM '.$TB_BOARD_TOPIC));
// total new posts
$result=$_db->fetch_first('SELECT count(*) as posts FROM '.$_cfg['DB_PREFIX'].'post WHERE post_date > '.$_user['last_login']);
$newposts=$result['posts'];
// new Gallery DB
$_gallery = new db($_cfg['DB_SERVER'], $_cfg['DB_GALLERY_USER'], $_cfg['DB_GALLERY_PASS'], $_cfg['DB_GALLERY_NAME']);
// gallery_pics
$gallery_pics = implode('', $_gallery->fetch_first('SELECT COUNT(*) FROM cpg130_pictures AS p, cpg130_albums AS a WHERE p.aid = a.aid AND a.category <> 9'));
// gallery hits
$gallery_hits = implode('', $_gallery->fetch_first('SELECT SUM(`hits`) FROM cpg130_pictures AS p, cpg130_albums AS a WHERE p.aid = a.aid AND a.category <> 9'));
// gallery members
$gallery_members = implode('', $_gallery->fetch_first('SELECT COUNT(user_id) FROM cpg130_users'));
// calendar
$result = $_board->query('SELECT id, subject, typ, UNIX_TIMESTAMP(event_date) AS date
FROM '.$TB_BOARD_CALENDAR.'
WHERE event_date >= DATE_ADD(NOW(), Interval 0 day)
AND event_date <= DATE_ADD(NOW(), Interval 100 day)
AND (typ=0 OR (user_id = '.intval($_user['id']).' AND typ=1)) ORDER BY `event_date`
LIMIT 10');
$liste = array();
while($event = $_board->fetch_array($result)) {
if ($event['typ']){
$tmp='
'.$event['subject'].'';
} else {
$tmp=$event['subject'];
}
$liste[] = '
' .$tmp.' ('.date('d.m.',($event["date"])).')';
}
$event_list = (count($liste) > 0) ? implode('
', $liste) : '';
}
?>[/PHP]
06.04.05, 18:42:15
BugHunter2k
ok, so sollte das dann klappen
(hoff ich zumindest mal)
[php]
$new_posts = implode('', $_board->fetch_first('SELECT COUNT(*) FROM '.$TB_BOARD_POST.' WHERE post_date > '.$_user['last_login']));
[/php]
PS:welceh forenverison setzt du ein,
das sieht für mcih nach einer 3er version aus.
06.04.05, 18:45:10
hama
Zu sehen auf [URL="www.orst.ch "]www.orst.ch[/URL] (mit test test auf Startseite anmelden)
Dann sollte die Anzahl neuer Beiträge links oben in der zweiten Zeile erscheinen (0 oder eben die entsprechende Anzahl).
Gruss
hama