Hilfe bei Blätterfunktion

Bulldozer82

Grünschnabel
Moin Leute,

habe mir hier aus mehreren Tutorials und Threads eine Blätterfunktion zusammengebastelt, die auch fast perfekt funktioniert.

1. Problem : Wenn man per URL-Parameter keine Seitenzahl mitgibt, kommt es zu einer Fehlermeldung. "Undefined index ['p']"

2. Problem : Ich habe zum testen 3 Datensätze in der betreffenden Tabelle. Es werden aber nur 2 Datensätze rausgeholt, und die Blätterleiste so angezeigt :

Seite 1 - index.php?p=0 - Beim Aufruf kommt es zu einer Fehlermeldung

Seite 2 - index.php?p=1 - Anzeige von Datensatz 1 aus der Tabelle

Seite 3 - index.php?p=2 - Anzeige von Datensatz 2 aus der Tabelle


Ich habe schon alles möglich rumprobiert um das Problem selbst zu lösen, komme aber einfach nicht weiter. Was muss ich ändern, damit die erste Seite auch "index.php?p=1" ist?

Ich hoffe ich habe das Problem verständlich beschrieben.


Hier der Code:

PHP:
<?php
			  error_reporting(E_ALL);
			  
			  include 'config.php';
			  
			     @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
        die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR
        die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
		
if(!isset($_GET['p'])) 
    $queryString = 0;
else 
    $queryString = $_GET['p'];
    
    // Konfigurationsdatei laden
	$sql = "SELECT * FROM `tabelle`;";
	$items = mysql_num_rows(mysql_query($sql));
    $itemsPerPage = 1;
    $queryString = 'p';
    $extendedQueryString = '';
	
 
	function browsePages($items, $itemsPerPage, $queryString, $extendedQueryString)
{    
    // Wenn mehrere Query Strings angegeben sind wird & als Oberator gewählt, ansonsten ?
    if($extendedQueryString == '') 
        $operator = '?';
    else 
        $operator = '&';
    // Wenn mehr vorhanden Einträge, als auf eine Seite Passen, dann starte Berechnung & Ausgabe
    if($items > $itemsPerPage) 
    {
        // Seitenanzahl bestimmen
        $pages = intval($items / $itemsPerPage);
        if($items % $itemsPerPage) 
            $pages++;
        echo 'Seiten : ';
        // Eine Seite zurück & Startseite
        if($_GET[$queryString] != 0)
        {    
            $iNegativeQS = $_GET[$queryString] - $itemsPerPage;
            echo '    
            <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'=1">Erste</a> - 
            <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.$iNegativeQS.'">Zurueck</a> - ';
        }
        $iLastPage = ($pages * $itemsPerPage) - $itemsPerPage;
        // Seiten auflisten
        for($i = $_GET[$queryString] - 3; $i <= $_GET[$queryString] + 3; $i++)
        {
            if(!($i <= -1) && !($i > ($iLastPage / $itemsPerPage)))/// 
            {
                $showNumber = $i + 1;
                if($_GET[$queryString] == $i)
                    echo '['.$showNumber.'] ';
                else //    Beispiel:            index.php    (    ?category=$i    )    ? // &      page        =     $j
                    echo '<a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.$i.'">'.$showNumber.'</a> ';
            }
        }    
        // Eine Seite weiter & letzte Seite
        if($_GET[$queryString] != ($iLastPage / $itemsPerPage))
        {
            $iPositiveQS = ($_GET[$queryString] + ($itemsPerPage / $itemsPerPage));
            echo '    
            - <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.$iPositiveQS.'">Weiter</a>  
            - <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.($iLastPage / $itemsPerPage).'">Letzte</a>';
        }
    }
}  


	    
if (!isset($_GET['p'])) {                                      //Abfrage, wenn keine Seitenzahl gegeben ist.


		  $sql = "SELECT * FROM `tabelle` LIMIT 0,".$itemsPerPage.";";
		} else {                                         //Abfrage, wenn eine Seitenzahl gegeben ist.
    $abeintrag = $_GET['p'] * $itemsPerPage - $itemsPerPage;
    $sql = "SELECT * FROM `tabelle` LIMIT ".$abeintrag.",".$itemsPerPage.";";
				
}

$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
    echo "Ausgabe der Ergebnisse BLA BLA"}

    // Blätterfunktion einbinden - [Anzahl der Beiträge], [Beiträge pro Seite], [Query String], [zusätzlicher Query String]
    browsePages ($items, $itemsPerPage, $queryString, $extendedQueryString);

	?>
 
Was passiert denn, wenn Du $querstring um 1 erhöhst, nachdem du ihn abgefangen hast ?

PHP:
if(!isset($_GET['p']))  
    $queryString = 1; 
else  
    $queryString = intval($_GET['p'])+1;

MfG
Andy
 
Hi,

Du benutzt später ja gar nicht $queryString, sondern $_GET[$queryString], was nach einem vorherigen $queryString = $_GET['p'] reichlich sinnfrei ist. Würde gar nicht funktionieren, wenn Du nicht ein paar Zeilen drunter Deine Zuweisung durch $queryString = 'p' wieder überklatschen würdest. Hast den Überblick über Deine Variablen verloren? ;)

LG
 
Thx ich habe aber schon unzählige Tutorials gelesen... :(

So komme ich einfach nicht weiter.


Hab mal weiter versucht :

PHP:
<?php
              error_reporting(E_ALL);
              
              include 'config.php';
              
                 @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
        die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR
        die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
        
if(!isset($_GET['p'])) 
    $Pager = 1;
else 
    $Pager = $_GET['p'];
    
    // Konfigurationsdatei laden
    $sql = "SELECT * FROM `tabelle`;";
    $items = mysql_num_rows(mysql_query($sql));
    $itemsPerPage = 1;
    $queryString = 'p';
    $extendedQueryString = '';
    
 
    	function browsePages($items, $itemsPerPage, $queryString, $extendedQueryString)
		
{    if(!isset($_GET['p'])) 
    $Pager = 1;
else 
    $Pager = $_GET['p'];
	
    // Wenn mehrere Query Strings angegeben sind wird & als Oberator gewählt, ansonsten ?
    if($extendedQueryString == '') 
        $operator = '?';
    else 
        $operator = '&';
    // Wenn mehr vorhanden Einträge, als auf eine Seite Passen, dann starte Berechnung & Ausgabe
    if($items > $itemsPerPage) 
    {
        // Seitenanzahl bestimmen
        $pages = intval($items / $itemsPerPage);
        if($items % $itemsPerPage) 
            $pages++;
        echo 'Seiten : ';
        // Eine Seite zurück & Startseite
        if($Pager != 1)
        {    
            $iNegativeQS = $Pager - $itemsPerPage;
            echo '    
            <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'=1">Erste</a> - 
            <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.$iNegativeQS.'">Zurueck</a> - ';
        }
        $iLastPage = ($pages * $itemsPerPage) - $itemsPerPage;
        // Seiten auflisten
        for($i = $Pager - 3; $i <= $Pager + 3; $i++)
        {
            if(!($i <= -1) && !($i > ($iLastPage / $itemsPerPage)))/// 
            {
                $showNumber = $i + 1;
                if($Pager == $i)
                    echo '['.$showNumber.'] ';
                else //    Beispiel:            index.php    (    ?category=$i    )    ? // &      page        =     $j
                    echo '<a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.$i.'">'.$showNumber.'</a> ';
            }
        }    
        // Eine Seite weiter & letzte Seite
        if($Pager != ($iLastPage / $itemsPerPage))
        {
            $iPositiveQS = ($Pager + ($itemsPerPage / $itemsPerPage));
            echo '    
            - <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.$iPositiveQS.'">Weiter</a>  
            - <a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.($iLastPage / $itemsPerPage).'">Letzte</a>';
        }
    }
}  

if ($Pager == 1) {                                       //Abfrage, wenn erste Seite


          $sql = "SELECT * FROM `tabelle` LIMIT 0,".$itemsPerPage.";";
        } else {                                         //Abfrage, wenn andere Seite
    $abeintrag = $_GET['p'] * $itemsPerPage - $itemsPerPage;
    $sql = "SELECT * FROM `tabelle` LIMIT ".$abeintrag.",".$itemsPerPage.";";
                
}

$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
    echo "Ausgabe der Ergebnisse BLA BLA"}

    // Blätterfunktion einbinden - [Anzahl der Beiträge], [Beiträge pro Seite], [Query String], [zusätzlicher Query String]
    browsePages ($items, $itemsPerPage, $queryString, $extendedQueryString);

    ?>

Ich glaube das in diesen Teil etwas geändert werden muss damit kein link zu "index?p=0" erstellt wird :

PHP:
// Seiten auflisten
        for($i = $Pager - 3; $i <= $Pager + 3; $i++)
        {
            if(!($i <= -1) && !($i > ($iLastPage / $itemsPerPage)))/// 
            {
                $showNumber = $i + 1;
                if($Pager == $i)
                    echo '['.$showNumber.'] ';
                else //    Beispiel:            index.php    (    ?category=$i    )    ? // &      page        =     $j
                    echo '<a href="'.$_SERVER['PHP_SELF'].$extendedQueryString.$operator.$queryString.'='.$i.'">'.$showNumber.'</a> ';
            }
        }

Sitze jetzt schon mehrere Wochen an dieser verdammten Blätterfunktion, bitte helft mir...
 
Zurück