mysqldumper
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 23.06.2005, 16:38   #1
Registered User
 
Registriert seit: Mar 2003
Kuhnibert macht alles soweit korrekt

Problem mit Paging von mike


Hi,
Ich habe ein Problem mit dem Paging Script von Mike. Und zwar will ich nur ganz bestimmte Datensätze aus einer Tabelle pagen.
JA er hat es schon in seinem Tutorial beschrieben aber ich kriegs einfach nicht hin, dass er mir das vernünftig paged. Kann mir jemand helfen?

Hier mal mein Quelltext:

paging.obj.php
Code:
<?
class c_paging
{
var $database; //Link zur Datenbankressouce
var $pagingtable; // Name der Tabelle die gepagt wird
var $link; // Seite auf die verlinkt wird
var $max; //Maximale Anzahl der Datensätze
var $maxpages; //Maximale Anzahl an Seiten
var $rows; //Anzahl der ausgegebenen Zeilen 
var $position; //Aktuelle Zeigerposition
var $left; // Anzahl Seiten-Links links von aktueller Seite 
var $right; // Anzahl Seiten-Links rechts von aktueller Seite 	



function countRows($sql='')
{
    if($sql)
    {
        $this->__countRows($sql);
    }
} 


function c_paging($db, $table,$position,$link='',$rows=10,$left=5,$right=5)
{
//Werte zuweisen
	$this->database = $db;
	$this->pagingtable= $table;
	$this->position = (!$position)? 1:$position;
	$this->rows = $rows;
	$this->left = $left;
	$this->right = $right;
//Link vorbereiten
	$this->__prepLink($link);
//Maximale Anzahl zählen und Seiten ermitteln
	$this->__countRows();
}

function __countRows($sql='')
{
//zählt die maximale Anzahl der Zeilen
//und ermittelt die benötigten Seiten

	$sql = "SELECT count(*) FROM ".$this->pagingtable;
	$result = @ mysql_query($sql,$this->database);
	$row = @ mysql_fetch_row($result);
	$this->max = $row[0];
//Anzahl der Seiten ermitteln
//ceil deshalb, damit auch noch die letzten Zeilen der Tabelle mitgenommen werden
	$this->maxpages = ceil($row[0] / $this->rows);
}

function __prepLink($link)
{
//Dient dazu, dass die Pagingvariable richtig an den Link angehängt wird
	if(!$link)
//wenn nix angegeben wurde, dann nehmen wir mal an, dass auf sich selbst referenziert wird
	 $this->link = $_SERVER[PHP_SELF]."?";
	else
//wurde ein Link übergeben, dann müssen wir darauf achten, dass der Parameter richtig angehängt wird.
//Dazu schauen wir nach, ob bereits ein '?' in dem string ist = es sind bereits Parameter vorhanden
//wenn das der Fall ist, hängen wir uns mit '&' dran ansonsten bauen wir ein '?' dran
		$this->link = (strstr($link, "?"))? $link.'&': $link.'?';
}


function drawList()
{
//Laufvariable initialisieren
$i=1; //Start
$i_ende=$this->maxpages; //Ende
$prevdots='';
$nextdots='';
//hier wird die Postition des Listenzählers im Bezug auf die Gesamtliste errechnet.

//wenn die Seitenanzahl grösser als links und rechts zusammen ist, dann müssen wir die Postition errechnen
if($this->maxpages > ($this->left+$this->right)) 
{
	//Ist die aktuelle Seitenposition grösser als der linke Standardwert
	if($this->position > $this->left) 
	{
	  //Dann wird der Startwert der Laufwvariable auf Aktuelle Postition - linker Standardwert gesetzt
	 	$i = $this->position - $this->left;
		$prevdots=' ... ';
		// Wenn die Aktuelle Position + rechter Standardwert kleiner als die Maximale Seitenanzahl ist
		if(($this->position + $this->right) < $this->maxpages) 
		{
	 		//Dann wird der Endewert der Laufvariable auf aktuelle Position + rechter Standardwert gesetzt
	 		$i_ende = $this->position + $this->right;
	 		$nextdots=' ... ';
		}
		else //Wenn die Aktuelle Postion gegen Ende der Anzahl der Seiten geht
		//Dann wird der Startwert der Laufwvariable auf maxpages - summe der links/rechts Standardwerte gesetzt
		//Das wird dazu benötigt, dass immer die gleiche Anzahl an Seiten angezeigt wird.
			$i = $i_ende - ($this->left+$this->right);
	}
	else //Seitenposition bewegt sich auf den Anfang der Seite zu.
		//Dann wird der Endewert der Laufwvariable auf die summe der links/rechts Standardwerte gesetzt
		//Das wird dazu benötigt, dass immer die gleiche Anzahl an Seiten angezeigt wird.
	{
	 	$i_ende = ($this->left+$this->right);
	 	$nextdots=' ... ';
	}
	 	
}

//der Loop, der die Page-Links aufbaut
//hier können dann die gestalterischen Fähigkeiten ausgelebt werden :)
	for ($i; $i <= $i_ende; $i++)
	{
		//Aktuelle Position bestimmen - und falls es gleich der abgearbeiteten ist,
		//dann speziell als 'aktuelle Seite anzeigen lassen
		if($i == $this->position)
		$temp.= " [".$i."]";
		else
		//ansonsten den Link mit der Seite aufbauen
		$temp.= " <a href=".$this->link."page=".$i.">".$i."</a>";
	}
	return $prevdots.$temp.$nextdots;
}


function drawNext()
{
//nächste Seite - Funktion
	if($this->position < $this->maxpages)
		$temp =  " <a href=".$this->link."page=".($this->position + 1).">›</a>";
	else
		$temp =  " ›";
	
	return $temp;
}

function drawLast()
{
//letzte Seite - Funktion
	if($this->position < $this->maxpages)
		$temp = " <a href=".$this->link."page=".$this->maxpages.">»</a>";
	else
		$temp = " »";
	
	return $temp;
}

function drawPrev()
{
//vorige Seite - Funktion
	if($this->position > 1)
		$temp = " <a href=".$this->link."page=".($this->position - 1).">‹</a>";
	else
		$temp = " ‹";
	
	 return $temp;
}

function drawFirst()
{
//Erste Seite - Funktion
	if($this->position > 1)
		$temp = " <a href=".$this->link."page=1>«</a>";
	else
		$temp = " «";
	
	 return $temp;
}

function drawPages()
{
// Zusammenfassung der Ausgabefunktionen
if(!$this->max) return '';
	$temp.=$this->drawFirst();
	$temp.=$this->drawPrev();
	$temp.=$this->drawList();
	$temp.=$this->drawNext();
	$temp.=$this->drawLast();
return $temp;
}


function getLimit()
{
	//Stellt den LIMIT - Teistring für die DB Query zusammen 
	$nextpos = ($this->position - 1)*$this->rows;
	return " LIMIT ".$nextpos.", ".$this->rows;
}

}

?>

meine Seite auf der gepaged werden soll:
Code:
<?php


  $link = mysql_connect("$host","$dbuser","$dbpasswort") or die("Connect nicht möglich: ".mysql_error());

$paging = new c_paging(& $link, $nachrichtenName,$_GET[page],"index.php?aktion=privatenachrichten&mitglied=".$mitglied."&id=25",25,3,3);

  $sql = "SELECT * from $nachrichtenName WHERE empfaenger ='".$mitglied."' ORDER BY nummer DESC ".$paging->getLimit();
  $result = mysql_db_query("$dbName",$sql) or die(mysql_error());
  $eintraganzahl = mysql_num_rows($result);




	if($eintraganzahl == '0')
	{
	echo "<i>-- keine privaten Nachrichten --</i><br><br>";
	}
	else
	{

	while($row = mysql_fetch_assoc($result)) {

	//ID zu Absendername suchen
	$sqlid = "SELECT userID FROM $tabellenName WHERE login = '$row[absender]'";
	$resultid = mysql_db_query("$dbName",$sqlid) or die(mysql_error());
	$rowid = mysql_fetch_assoc($resultid);


	$zeitpunkt = explode("&nbsp;",$row['datum']);
	$datum = substr($zeitpunkt[0], 0, 6);
	$datumjahr = substr($zeitpunkt[0], 8, 10);
	$stunde = substr($zeitpunkt[1], 0, 5);

	if($row['empfaenger'] != '')
	{

	echo "<a href='#' onclick=\"window.open('index.php?aktion=steckbrief&mitglied=".$rowid[userID]."', '$rowid[userID]steckbrief','toolbar=no,status=no,menubar=no,scrollbars=yes,width=650,height=400');return false;\">".$row['absender']."</a>";
	}
	}

	}

	echo "<br><br>".$paging->drawPages();


?>
Kuhnibert ist offline   Mit Zitat antworten


Alt 23.06.2005, 16:51   #2
Registered User
 
Registriert seit: Mar 2003
Kuhnibert macht alles soweit korrekt
Als kleine Anmerkung noch, ich binde beide Dateien paging.obj.php und meine Seite auf der gepaged wird, auf der Index-Seite ein!
Danke für jede Hilfe!

Gruß Kuhnibert
Kuhnibert ist offline   Mit Zitat antworten
Alt 24.06.2005, 12:20   #3
TP-Insider
 
Benutzerbild von MuschPusch
 
Registriert seit: May 2002
Ort: Niederlande
MuschPusch ist auf einem guten Weg
Was funktioniert denn nicht???
MuschPusch ist offline   Mit Zitat antworten
Alt 24.06.2005, 17:48   #4
Registered User
 
Registriert seit: Mar 2003
Kuhnibert macht alles soweit korrekt
Es zeigt mir immer die falsche Seitenzahl an. Es zeigt mir im Grund genommen immer 4 Seiten an weil ich auch 4 Seiten mit je 30 Zeilen in der Datenbank belegt habe. Aber diese 4 Seiten sind nicht von einem Benutzer sondern die privaten Nachrichten von ALLEN Benutzern. Und ich will eben nur die anzeigen die für einen bestimmten Benutzer sind (was ja auch funktioniert). Aber es zählt mir eben alle Nachrichten und berechnet dadurch die Seitenzahl (4).

Versteht ihr was ich meine?
Kuhnibert ist offline   Mit Zitat antworten
Alt 27.06.2005, 06:37   #5
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
Du musst vorab noch die funktion countRow (oder so) mit der Condition füttern.
post #9 aus dem Tut sollte dein Problem lösen.
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 27.06.2005, 15:18   #6
Registered User
 
Registriert seit: Mar 2003
Kuhnibert macht alles soweit korrekt
Hi, also ich habe das paging.obj wie du es im Post #9 gesagt hast modifiziert und wie ich denke alles richtig eingebaut. ABER es zeigt mir jetzt keine Seitenzahlen mehr an.
Kannst du noch mal einen Blick auf meinen Quellcode werfen?
Danke..

Gruß Kuhnibert


paging.obj.php
Code:
<?
class c_paging
{
var $database; //Link zur Datenbankressouce
var $pagingtable; // Name der Tabelle die gepagt wird
var $link; // Seite auf die verlinkt wird
var $max; //Maximale Anzahl der Datensätze
var $maxpages; //Maximale Anzahl an Seiten
var $rows; //Anzahl der ausgegebenen Zeilen 
var $position; //Aktuelle Zeigerposition
var $left; // Anzahl Seiten-Links links von aktueller Seite 
var $right; // Anzahl Seiten-Links rechts von aktueller Seite 	



function countRows($sql='')
{
    if($sql)
    {
        $this->__countRows($sql);
    }
} 


function c_paging($db, $table,$position,$link='',$rows=10,$left=5,$right=5)
{
//Werte zuweisen
	$this->database = $db;
	$this->pagingtable= $table;
	$this->position = (!$position)? 1:$position;
	$this->rows = $rows;
	$this->left = $left;
	$this->right = $right;
//Link vorbereiten
	$this->__prepLink($link);
//Maximale Anzahl zählen und Seiten ermitteln
	$this->__countRows();
}

function __countRows($sql='')
{
//zählt die maximale Anzahl der Zeilen
//und ermittelt die benötigten Seiten

        $sql = ($sql)? $sql: "SELECT count(*) FROM ".$this->pagingtable;
	$result = @ mysql_query($sql,$this->database);
	$row = @ mysql_fetch_row($result);
	$this->max = $row[0];
//Anzahl der Seiten ermitteln
//ceil deshalb, damit auch noch die letzten Zeilen der Tabelle mitgenommen werden
	$this->maxpages = ceil($row[0] / $this->rows);
}

function __prepLink($link)
{
//Dient dazu, dass die Pagingvariable richtig an den Link angehängt wird
	if(!$link)
//wenn nix angegeben wurde, dann nehmen wir mal an, dass auf sich selbst referenziert wird
	 $this->link = $_SERVER[PHP_SELF]."?";
	else
//wurde ein Link übergeben, dann müssen wir darauf achten, dass der Parameter richtig angehängt wird.
//Dazu schauen wir nach, ob bereits ein '?' in dem string ist = es sind bereits Parameter vorhanden
//wenn das der Fall ist, hängen wir uns mit '&' dran ansonsten bauen wir ein '?' dran
		$this->link = (strstr($link, "?"))? $link.'&': $link.'?';
}


function drawList()
{
//Laufvariable initialisieren
$i=1; //Start
$i_ende=$this->maxpages; //Ende
$prevdots='';
$nextdots='';
//hier wird die Postition des Listenzählers im Bezug auf die Gesamtliste errechnet.

//wenn die Seitenanzahl grösser als links und rechts zusammen ist, dann müssen wir die Postition errechnen
if($this->maxpages > ($this->left+$this->right)) 
{
	//Ist die aktuelle Seitenposition grösser als der linke Standardwert
	if($this->position > $this->left) 
	{
	  //Dann wird der Startwert der Laufwvariable auf Aktuelle Postition - linker Standardwert gesetzt
	 	$i = $this->position - $this->left;
		$prevdots=' ... ';
		// Wenn die Aktuelle Position + rechter Standardwert kleiner als die Maximale Seitenanzahl ist
		if(($this->position + $this->right) < $this->maxpages) 
		{
	 		//Dann wird der Endewert der Laufvariable auf aktuelle Position + rechter Standardwert gesetzt
	 		$i_ende = $this->position + $this->right;
	 		$nextdots=' ... ';
		}
		else //Wenn die Aktuelle Postion gegen Ende der Anzahl der Seiten geht
		//Dann wird der Startwert der Laufwvariable auf maxpages - summe der links/rechts Standardwerte gesetzt
		//Das wird dazu benötigt, dass immer die gleiche Anzahl an Seiten angezeigt wird.
			$i = $i_ende - ($this->left+$this->right);
	}
	else //Seitenposition bewegt sich auf den Anfang der Seite zu.
		//Dann wird der Endewert der Laufwvariable auf die summe der links/rechts Standardwerte gesetzt
		//Das wird dazu benötigt, dass immer die gleiche Anzahl an Seiten angezeigt wird.
	{
	 	$i_ende = ($this->left+$this->right);
	 	$nextdots=' ... ';
	}
	 	
}

//der Loop, der die Page-Links aufbaut
//hier können dann die gestalterischen Fähigkeiten ausgelebt werden :)
	for ($i; $i <= $i_ende; $i++)
	{
		//Aktuelle Position bestimmen - und falls es gleich der abgearbeiteten ist,
		//dann speziell als 'aktuelle Seite anzeigen lassen
		if($i == $this->position)
		$temp.= " [".$i."]";
		else
		//ansonsten den Link mit der Seite aufbauen
		$temp.= " <a href=".$this->link."page=".$i.">".$i."</a>";
	}
	return $prevdots.$temp.$nextdots;
}


function drawNext()
{
//nächste Seite - Funktion
	if($this->position < $this->maxpages)
		$temp =  " <a href=".$this->link."page=".($this->position + 1).">›</a>";
	else
		$temp =  " ›";
	
	return $temp;
}

function drawLast()
{
//letzte Seite - Funktion
	if($this->position < $this->maxpages)
		$temp = " <a href=".$this->link."page=".$this->maxpages.">»</a>";
	else
		$temp = " »";
	
	return $temp;
}

function drawPrev()
{
//vorige Seite - Funktion
	if($this->position > 1)
		$temp = " <a href=".$this->link."page=".($this->position - 1).">‹</a>";
	else
		$temp = " ‹";
	
	 return $temp;
}

function drawFirst()
{
//Erste Seite - Funktion
	if($this->position > 1)
		$temp = " <a href=".$this->link."page=1>«</a>";
	else
		$temp = " «";
	
	 return $temp;
}

function drawPages()
{
// Zusammenfassung der Ausgabefunktionen
if(!$this->max) return '';
	$temp.=$this->drawFirst();
	$temp.=$this->drawPrev();
	$temp.=$this->drawList();
	$temp.=$this->drawNext();
	$temp.=$this->drawLast();
return $temp;
}


function getLimit()
{
	//Stellt den LIMIT - Teistring für die DB Query zusammen 
	$nextpos = ($this->position - 1)*$this->rows;
	return " LIMIT ".$nextpos.", ".$this->rows;
}

}

?>

meine Seite auf der gepaged werden soll:
Code:
<?php


  $link = mysql_connect("$host","$dbuser","$dbpasswort") or die("Connect nicht möglich: ".mysql_error());

$paging = new c_paging(& $link, $nachrichtenName,$_GET[page],"index.php?aktion=privatenachrichten&mitglied=".$mitglied."&id=25",25,3,3);

  $sql = "SELECT * from $nachrichtenName WHERE empfaenger ='".$_GET[mitglied]."' ORDER BY nummer DESC ".$paging->getLimit();
  $result = mysql_db_query("$dbName",$sql) or die(mysql_error());
  $eintraganzahl = mysql_num_rows($result);

  $sql="SELECT count(*) $nachrichtenName WHERE empfaenger = '".$_GET[mitglied]."' ORDER BY nummer DESC ".$paging->getLimit();
  //$paging->countRows($sql); ist ganz unten für die Seitenzahlen!




	if($eintraganzahl == '0')
	{
	echo "<i>-- keine privaten Nachrichten --</i><br><br>";
	}
	else
	{

	while($row = mysql_fetch_assoc($result)) {

	//ID zu Absendername suchen
	$sqlid = "SELECT userID FROM $tabellenName WHERE login = '$row[absender]'";
	$resultid = mysql_db_query("$dbName",$sqlid) or die(mysql_error());
	$rowid = mysql_fetch_assoc($resultid);


	$zeitpunkt = explode("&nbsp;",$row['datum']);
	$datum = substr($zeitpunkt[0], 0, 6);
	$datumjahr = substr($zeitpunkt[0], 8, 10);
	$stunde = substr($zeitpunkt[1], 0, 5);

	if($row['empfaenger'] != '')
	{

	echo "<a href='#' onclick=\"window.open('index.php?aktion=steckbrief&mitglied=".$rowid[userID]."', '$rowid[userID]steckbrief','toolbar=no,status=no,menubar=no,scrollbars=yes,width=650,height=400');return false;\">".$row['absender']."</a>";
	}
	}

	}

	echo "<br><br>".$paging->countRows($sql);


?>
Kuhnibert ist offline   Mit Zitat antworten
Alt 27.06.2005, 22:05   #7
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
öffnen (new c_paging...)
zählen (countRows(select count(*) from tabelle where die gleiche Bedingung wie bei der liste)
liste holen (select * from tabelle where gleiche Bedinugng wie beim count + getLimit())
liste ausgeben
navileiste ausgeben (drawPages)

sorry, dass ich kurz angebunden bin, aber
a) hab ich seeehr wenig zeit und
b) supporte ich eigentlich nicht mehr
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 28.06.2005, 09:10   #8
Registered User
 
Registriert seit: Mar 2003
Kuhnibert macht alles soweit korrekt
Hi,
Danke. Funktioniert super
Hatte anfänglich noch richitge Schwierigkeiten, bis ich gesehen habe dass ich bei der Zähl-SQL-Anweisung das "FROM" vergessen hatte
Aber jetzt gehts

Danke.

Gruß kuhnibert
Kuhnibert ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Problem mit Paging von mike Problem mit Paging von mike
« suche von produkten in der auktion im ebay-shop? hilfe benötigt! | XML ? Baum einklappen?? »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67