URL: https://www.overclockers.at/coding-stuff/prob_mit_mysqlabfrage_75638/page_1 - zur Vollversion wechseln!
tach :>
also es geht um ein forum. ich würde gerne die neuen threads, die seit dem letzten besuch im forum neu sind, zählen.
ich hab eine tabelle thread_visits.
----------------------------------------
| thread_id | user_id | threadvisit |
----------------------------------------
und eine tabelle forum_threads (vereinfacht)
----------------------------
| id | time | posted_by |
----------------------------
die userid ist $u_id
jetzt würde ich gern mit mysql_num_rows die threads zählen, in denen die time > threadvisit ist. und wenns keinen eintrag in thread_visits für den thread gibt (also wenn der thread neu ist) muss halt auch irgendwie +1 gezählt werden ^^
ich würde das, wenn möglich, gern in einer abfrage machen.
sollte mit reinem sql leichter zu lösen sein
select count(id)
from thread_visits, forum_threads
where thread_visits.user_id=$u_id and thread_visits.threadvisit<forum_threads.time
mh...
öhm
versteh ich nich ganz ^^
kannst du das vll so schreiben, dass ichs in den code einbinden kann?
wenns keine umstände macht
aber ich sag dir, dass das mit 90% wahrscheinlichkeit nicht das is was du brauchst, weil deine problemstellung in sich nicht schlüssig ist... wie wärs wenn du dir mal sql und php reinziehst bevor du solche adaptionen durchführst?Code: PHPmysql_query(" SELECT count(thread_visits.thread_id) FROM thread_visits, forum_threads WHERE thread_visits.user_id=$u_id AND thread_visits.thread_id=forum_threads.id AND thread_visits.threadvisit<forum_threads.time");
mhh... ok das mit threadvisit < time is echt unlogisch ^^
also ich hab deins mal ausprobiert. es liefert nich das gewünschte ergebnis
also ich denk mir das so. irgendwie muss ich die 2 tabellen zusammenfügen, also per left join. und dann müssen die reihen gezählt werden, in denen der threadvisit NULL ist, also es in der tabelle thread_visits keinen eintrag für den thread gibt, weil der user diesen thread noch nicht gelesen hat.
also so :
(wenns eine row nicht gibt, dann wird doch daraus NULL gemacht oda? )
--------------------------------------------------------------------
| id | time | posted_by | thread_id | user_id | threadvisit |
-------------------------------------------------------------------
| 1 | 1111 | 2 | NULL | NULL | NULL |
-------------------------------------------------------------------
also so ähnlich ich hoff das man das jetzt besser versteht.
war klarZitat von Martinalso ich hab deins mal ausprobiert. es liefert nich das gewünschte ergebnis
nicht unbedingt, kommt auf das feld anZitat von Martin(wenns eine row nicht gibt, dann wird doch daraus NULL gemacht oda?)
ich zumindest nichtZitat von Martinich hoff das man das jetzt besser versteht.
mh grml
ok dann nicht.
mh so.... habs jetzt doch selbst hinbekommen, falls es dich interessiert. aber halt umständlich³ wie ich find.
Code: PHP$select_threads = mysql_query("SELECT * FROM forum_threads WHERE board_id = '$dat[id]'"); $threads = mysql_num_rows($select_threads); if($threads > 0) { $tv_num = 0; while($d = mysql_fetch_array($select_threads)) { if(mysql_num_rows(mysql_query("SELECT * FROM thread_visits WHERE thread_id = '$d[id]' AND sltable = '$mytable' AND user_id = '$u_id'")) > 0) { $tv_num++; } } $red_threads = $threads-$tv_num; if($red_threads != 0) { echo " <font color=\"#ff0000\">(" . $red_threads . ")</font>"; } }
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025