[Forum] Letzter Beitrag

Online-Skater

Erfahrenes Mitglied
Hallo ich habe ein Problem und zwar will ich in meinem Forum einen Link einbauen der zum letzten Post in dem jeweiligen Forum springt.
Code:
Link --> http://www.domain.de/index.php?go=viewtopic&tid=4#51
4 - Topicid
51 - Postid mit Anker

Es funktioniert ja wunderbar wenn der Post auf der ersten Seite ist, d.h. unter den ersten 12 Einträgen des Topics, danach kommt eine neue Seite und der Link würde wie folgt aussehen:
Code:
http://www.domain.de/index.php?go=viewtopic&tid=4&page=1
D.h. wenn der Post auf der 2ten Seite(page=1) liegt funktioniert es nicht mehr weil der parameter page nicht enthalten ist s.o.
Die Frage ist wie machen das "Profi bzw. gute Foren" ?
Mir fallen 2 Möglichkeiten ein, die eine den link gleich mit page übergeben, d.h. ich müsste schon vorher ermitteln auf welche Seite sich die Postid befindet
oder
auf der viewtopic.php ermitteln zur welcher Seite die postid gehört, wobei ich dann aber (#51) aus dem link extrahieren müsste und dann bei Ermittlung per header weiterleiten.
Wie macht man das ich stelle mir die 2. Möglichkeit einfach vor aber das ist weder performant noch optimal ?

mfg
 
Zuletzt bearbeitet:
Also ich habe versucht die 2te Möglichkeit umzusetzen und musste feststellen das man die url garnicht nach dem Anker extrahieren kann, somit habe ich die pid nicht als anker sondern als parameter mitgegeben. Diese Lösung funktioniert einwandfrei. Modrewrite muss ich mal bei meinem Provider ausprobieren.
PHP:
if (defined("ZUGRIFF"))
{
  echo '<div align="center"><span class="title">Forum</span></div><br />';
  $tid = $_GET['tid'];
  if (isset($tid) and is_numeric($tid))
  {
    if (isset($_GET['pid']) and is_numeric($_GET['pid']))
  	{
  	  $pid = $_GET['pid'];
      $sql = "SELECT `pid` FROM `ds_forum_post` WHERE `tid`='$tid' AND `pid`<'$pid';";
      if ($erg = mysql_query($sql))
      {
	    if (mysql_num_rows($erg))
		{
		  $number = mysql_num_rows($erg);
		  $page = floor($number/$ds_fmax);
		  header("Location: http://www.domain.de/index.php?go=$ds_link&tid=$tid&page=$page#$pid");
		  exit;
		} 
	  }
	  else Fehler();
  	}
// klassische Anzeige
 
Zurück