kostenloser Webspace werbefrei: lima-city


spezielle Blätterfunktion (Problem)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    waldorf

    waldorf hat kostenlosen Webspace.

    Hallo PHP-Experten;-)

    Ich habe folgendes Problem bei einer speziellen Blätterfunktion, vielleicht hat ja jemand
    einen zündenden Einfall (ich muss etwas weiter ausholen):
    Kurz gesagt geht es darum, dass ich in einem dynamischen Menü blättern will. Das Menü funktioniert so, dass automatisch Menülinks erzeugt werden zu einzelnen Rubriken. Der erste Link heißt „Übersicht“ – er führt zur Ansicht sämtlicher Einträge aller Rubriken. Die Rubrikenlinks zeigen natürlich nur die Einträge der jeweiligen Rubrik.
    So, nun will ich in den Einträgen blättern – wenn ich in der Übersicht blättern will, will ich natürlich in allen Einträgen blättern. Wenn ich in den Rubriken blättern will, dann nur in der jeweiligen Rubrik.
    UND GENAU LETZTERES IST DAS PROBLEM. Das Blättern in der Übersicht funktioniert, nicht aber das in den Rubriken – da gelange ich durch Blätterlinks wieder in die Übersicht.:-(

    Die wichtigsten programmiertechnischen Facts:

    1. Programmierung des Menüs:

    Die Menüeinträge bilden ein Array ($rubriken[]). Der nullte Value des numerischen Arrays lautet „Übersicht“:

    <? $rubriken = array(„Übersicht“);?>


    oder

    <? $rubriken[0] = „Übersicht“ ?>


    Erzeugt wird das Menü nun dynamisch mit einer Schleife:

    <? 
    foreach($rubriken as $index => $menue) {
    echo “<p><a href="?id=$index">$menue</a></p>”;  // vor den inneren Anführungszeichen noch backslashes
    }
    ?>


    Die Anzeige der Einträge wird per GET-Parameter (über die Menülinks) erzeugt:

    <? $id = $GET_[`id`]; ?>


    Wenn der Parameter 0 ist, also $id leer, dann sollen hiermit alle Einträge gezeigt werden:

    <? $where = $rubriken[$id];
    if (empty($id)) $query = "SELECT * FROM blog ORDER BY datum  DESC LIMIT $start, $step";?>


    (Das LIMIT verweist schon auf die Blätterfunktion, siehe unten.) Ist der Parameter id größer 0, handelt es sich um die Rubriken und es sollen dann nur die Rubrikeinträge gezeigt werden:
    <? 
    else $query = "SELECT * FROM blog WHERE rubrik = '$where' ORDER BY datum DESC LIMIT $start, $step";
    ?>


    Sodele. Das zum Menü. Kurz noch zur Blätterfunktion, sie erklärt sich eigentlich selbst:

    <?
    $sql1= "SELECT * FROM blog";
    $result1 = mysql_query($sql1);
    $zeilen = mysql_num_rows($result1);
    
    
    $start = 0;   // Startwert 
    $step = 2;   // Anzahl der anzuzeigenden Einträge 
    if (isset($_GET["start"])) {  
    $start = $_GET["start"]; // Startwert als GET-Parameter setzen
    }
    
    
    $sql1= "SELECT * FROM blog";
    $result1 = mysql_query($sql1);
    $zeilen = mysql_num_rows($result1);
             
    for ($i = 0; $zeilen > $i; $i = $i + $step) {
    $anf = $i + 1;
    $end  = $i + $step;   
    if ($end > $zeilen) {
    $end = $zeilen;
    }
    if ($anf == $end) {
    echo "[ <a href="?start=$i">$end</a>] ";
    } else {
    echo "[ <a href="?start=$i">$anf-$end</a>] ";
    }
    }
    ?>


    Damit gelingt das Blättern in der Übersicht. Wer hat eine Idee, wie ich den Code so
    Ergänzen kann, dass ich auch in den einzelnen Rubriken blättern kann??
    Danke!!



    Beitrag geändert: 5.10.2008 6:51:54 von waldorf
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    waldorf

    waldorf hat kostenlosen Webspace.

    @all

    Ich hab die Lösung bereits gefunden.
    Kurz zur Erläuterung. Das Problem war, dass
    durch Aktivieren der Blätterlinks in den Rubriken mit einem Mal
    folgende Bedingung erfüllt war:

    <?
    if (empty($id)) $query = "SELECT * FROM blog ORDER BY datum  DESC LIMIT $start, $step";?>


    Es war dann kein GET-Parameter id mehr gegeben, der wurde ja
    nur durch die Menülinks übergeben. Obige Bedingung ist
    aber die Bedingung für das Anzeigen der Übersicht - somit
    gelangte ich in den Rubriken durch Blättern wieder in die
    Übersicht. Ich musste also dafür sorgen, den id-GET-Parameter
    in die Blätter-Links für die Rubriken zu bekommen.
    Außerdem musste ich noch einmal die Funktion mysql_num_rows()
    speziell für die gewählten Rubriken anwenden, gezählt werden
    sollte nur die Zeilenanzahl der ausgewählten Rubriken.
    Komplett ergibt sich für die Blätterfunktion der Rubriken:

    <?
    $where = $rubriken[$id];
        $select = "id, UNIX_TIMESTAMP(datum) as datum, titel, beitrag, rubrik, link, url ";
    
    $sql2= "SELECT $select FROM blog WHERE rubrik = '$where' ORDER BY datum DESC";
    $result2 = mysql_query($sql2);
    $zeilen2 = mysql_num_rows($result2);
    $start2 = 0;
    $step2 = 2;
    if (isset($_GET["start2"])) {  //
    $start2 = $_GET["start2"];} // Startwert als GET-Parameter setzen
    
    for ($i2 = 0; $zeilen2 > $i2; $i2 = $i2 + $step2) {
    $anf2 = $i2 + 1;
    $end2  = $i2 + $step2;   
    if ($end2 > $zeilen2) {
    $end2 = $zeilen2;
    }
    if ($anf2 == $end2) { 
    echo "[ <a href="?id=$id&start2=$i2">$end2</a>] ";
    } else { 
    echo "[ <a href="?id=$id&start2=$i2">$anf2-$end2</a>] ";
    }
    }
    
    if (!empty($id) or $_GET["start2"]) {$query = "SELECT $select FROM blog WHERE rubrik = '$where' ORDER BY datum DESC LIMIT $start2, $step2";
        $sql = mysql_query($query)
               or die(mysql_error());}


    Copyright by waldorf...:cool::P



    Beitrag geändert: 5.10.2008 7:40:31 von waldorf
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!