Seite 1 von 1

Blätterfunktion für phpBB

Verfasst: 09.01.2006 12:41
von Maffy
Ich erstelle einen Episoden Guid für TV Serien. Jetzt möchte ich gerne eine Blätterfunktion erstellen mit der ich in einer ausgewählten Serie durch die einzelnen Staffeln der Serie blättern kann.

Wie stelle ich die Anzahl der vorhanden Staffeln in einer Serie fest.
Und wie erstelle ich daraus eine Blätterfunktion für das phpBB Forum .

Es genügt ein Vorwärts und Zurück Button

Code: Alles auswählen

	$sql = "SELECT serie_id, season_id, folge_title, folge_desc, folge_img
			   FROM " . EPG_FOLGEN_TABLE . "
			   WHERE serie_id = ".$serie." AND season_id = ".$staffel."
			   ORDER BY folge_id";
Ich hoffe das mir jemand dabei helfen kann.

Verfasst: 09.01.2006 15:42
von fanrpg

Code: Alles auswählen

	$start = ( !empty($_GET['start']) ) ? intval($_GET['start']) : 0;
	$start = $start * 25;
Damit legen wir die Anzahl fest wie viele Sachen angezeigt werden.
$start wird noch gebraucht.
Dann modifizieren wir mal deine MySQL Abfrage:

Code: Alles auswählen

   $sql = "SELECT serie_id, season_id, folge_title, folge_desc, folge_img 
            FROM " . EPG_FOLGEN_TABLE . " 
            WHERE serie_id = ".$serie." AND season_id = ".$staffel." 
            ORDER BY folge_id
            LIMIT $start, 25";
Dann ermitteln wir die Anzahl der Ergebnisse die Allgemeine gefunden werden sprich alle:

Code: Alles auswählen

$sql = "SELECT * FROM ".EPG_FOLGEN_TABLE;
$result = $db->sql_query($sql);
$total = mysql_num_rows($result);
Das oben kommt unter der Auswertung deiner MySQL Abfrage.

Und jetzt berechnen wir daran dann die Seitenanzahl:

Code: Alles auswählen

	$i = 1;
	$total = $total * 0.25;
	$total = ceil($total);
	while($i != $total)
	{
	$i++;
	echo ', <a href="dein_file.php?start='.$i.'">'.$i.'</a> ';
	}
Mehr ist das nicht.

Verfasst: 09.01.2006 15:55
von S2B
fanrpg hat geschrieben:Und jetzt berechnen wir daran dann die Seitenanzahl:

Code: Alles auswählen

	$i = 1;
	$total = $total * 0.25;
	$total = ceil($total);
	while($i != $total)
	{
	$i++;
	echo ', <a href="dein_file.php?start='.$i.'">'.$i.'</a> ';
	}
Dafür gibt es beim phpBB doch eine Funktion generate_pagination()!?

Code: Alles auswählen

$pagination = generate_pagination(append_sid("name_der_datei.$phpEx"), $total, 25, $start);

Verfasst: 09.01.2006 16:00
von fanrpg
Oh wusst ich gar nicht, aber die Funktion gibt mir andere Seitenzahlen aus als die die ich bei $start brauche.

Verfasst: 10.01.2006 09:56
von Maffy
Dafür gibt es beim phpBB doch eine Funktion generate_pagination()!?

Bei normalen Serien die bei der Staffel 1 beginnen und x Staffeln haben könnte ich die normale Pagination Funktion des phpBB Forums verwenden.

Mein Problem ist allerdings das es insgesamt 32 Staffeln + ca. 400 Folgen für die Serie gibt.

Leider verfüge ich, bzw. stehen keine Serien Daten für die Staffeln 1 - 14 zu Verfügung

Therotisch müsste ich ertmal feststellen bei welcher Staffel die Serie beginnt und dann die Blätterfunktion entsprechend erstellen lassen.

Verfasst: 10.01.2006 11:54
von Maffy
Ok, ich habe mir jetz eine eigene Pagination für das Blättern durch die Sieren Staffeln einer Serie gebastelt.

Evt. könnte mann das auch noch einwenig besser bzw. einfacher Programmieren.

Auf jedenfall funktioniert das Blätter jetzt so, wie ich es haben wollte.

Code: Alles auswählen


#
# // Staffel Pagination
# 

	$next_staffel = floor($staffel) + 1;
   	$back_staffel = floor($staffel) - 1; 
	
	// Testen ob in der nächsten Staffel Folgen angelegt sind
	$sqlnext = "SELECT serie_id, staffel_id, folge_title, folge_desc, folge_img, folge_approval
			   FROM " . EPG_FOLGEN_TABLE . "
			   WHERE serie_id = ".$serie." AND staffel_id = ".$next_staffel." AND folge_approval = 1
			   ORDER BY folge_id";
	
	if( !($result = $db->sql_query($sqlnext)) )
	{
		message_die(GENERAL_ERROR, 'Could not query folgen list', '', __LINE__, __FILE__, $sql);
	}
	
	$total_next = $db->sql_numrows($result);

	if( $total_next == 0 )
	{
		$link_next = '';
		$nav_next_staffel = '';
	} else {
		$link_next = append_sid('epiguid.'.$phpEx.'?mode='.$mode.'&serie='.$serie.'&staffel='.$next_staffel.'');
		$nav_next_staffel = ' Staffel '.$next_staffel.' ';
	}
	
	// Testen ob in der vorherigen Staffel Folgen angelegt sind
	$sqlback = "SELECT serie_id, staffel_id, folge_title, folge_desc, folge_img, folge_approval
			   FROM " . EPG_FOLGEN_TABLE . "
			   WHERE serie_id = ".$serie." AND staffel_id = ".$back_staffel." AND folge_approval = 1
			   ORDER BY folge_id";
	
	if( !($result = $db->sql_query($sqlback)) )
	{
		message_die(GENERAL_ERROR, 'Could not query folgen list', '', __LINE__, __FILE__, $sql);
	}
	
	$total_back = $db->sql_numrows($result);	
		
	if( $total_back == 0 )
	{
		$link_back = '';
		$nav_back_staffel = ' ';
	} else {
		$link_back = append_sid('epiguid.'.$phpEx.'?mode='.$mode.'&serie='.$serie.'&staffel='.$back_staffel.'');
		$nav_back_staffel = ' Staffel '.$back_staffel.'  ';
	}
	
	$link_staffel_index = append_sid('epiguid.'.$phpEx.'?mode=serie&serie='.$serie.'');
	$staffel_index = ' Staffel Übersicht ';
	
	$template->assign_block_vars('pagina', array(	
		
		'L_NEXT_STAFFEL' => $link_next,
		'NEXT_STAFFEL' => $nav_next_staffel,
		
		'L_BACK_STAFFEL' => $link_back,
   		'BACK_STAFFEL' => $nav_back_staffel,
		
		'AKTUELL' => $staffel,
		
		'L_BACK_STAFFEL_INDEX' => $link_staffel_index,
		'BACK_STAFFEL_INDEX' => $staffel_index,
		
	));

Verfasst: 10.01.2006 14:45
von Maffy
Habe das ganse jetzt mal im Forum eingerichtet.

Hier ist der Link zur Seite:

Episoden Guid

Mfg Maffy