spezielle Blätterfunktion (Problem)
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
anwenden
array
code
copyright
datum
einfall
einzelnen rubriken
index
jemand
jeweiligen rubrik
limit
ordern
parameter
problem
rubrik
setzen
start
waldorf
zeile
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
@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...:P
Beitrag geändert: 5.10.2008 7:40:31 von waldorf -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage