Seite 1 von 1

Auf welcher Seite ist er denn?

Verfasst: 10.08.2007, 11:25
von Michael1967
Hallo,

mal eine Frage. Wie kann ich herausfinden - auf welcher Seite sich ein Eintrag befindet?

Ich habe eine Blätterfunktion in meinen Kategorien -

Seite: 1 2 3 4 5 6 7 8 9

Nehmen wir an ein Eintrag befindet sich auf Seite 7. Auf den Detailseiten soll nun angezeigt werden (per Link), dass sich dieser Eintrag in der Kategorie bla bla bla auf Seite 7 befindet.

Wie kann man sowas abfragen? Oder geht das gar nicht? Ich weiß nicht wie ich an die 7 komme *heul*

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 10.08.2007, 13:26
von Kylee
Dazu müsste man wissen wie dein Portal (was auch immer) aufgebaut ist.

Theoretischer Lösungsansatz :

Nehmen wir an deine seiten werden dynamisch generiert, und pro seite eine gewisse anzahl von einträgen gelistet geordnet nach id. 1,2,3,4, etc.

Nehmen wir weiters an pro Seite werden 20 Einträge angezeigt ...

So hätte ein Beitrag von Seite 7 eine id zwischen 120 und 140 für unser beispiel nehmen wir den Beitrag id=125.

Deine funktion muss nun die id des Beitrags auslesen und durch 20 teilen.

125/20 = 6,25

Alles was eine komma stelle aufweist muss noch auf die nächst höhere ganze zahl aufgerundet werden.

6,25 = 7

soweit so gut .... bei dem beispiel hättest du schon deine seitenzahl nämlich 7.

Anderes Beispiel ...

Jetzt nehmen wir aber an (wie allgem. üblich) das deine beiträge nicht 1,2,3,4.. etc geordnet sind sondern DESC etc. ..4,3,2,1

Du nimmst erstmal die selbe funktion die du geschrieben hast.

Dann bastelst du eine neue funktion die die DB Einträge abzählt. Diese Zahl dividierst du durch deine Beitragsanzahl pro Seite in unserem Beispiel wieder 20.

DB Einträge = 341
341/20 = 17,05
wieder auf eine ganze zahl aufrunden = 18 Seiten Gesamt

dann ziehst du die aus der ersten funktion errechnete seitenanzahl ab
18-7 = 11
Der Beitrag id=125 wird also mit der umgedrehten Ordnung und einer Datensatzanzahl von 341 auf der 11 Seite ausgegeben.

Ich hoffe der theoretische Lösungsansatz hilft dir weiter ...

LG Kylee

Edit:

Tja wenn man theorie zur praxis umwandelt (oder auch nur ein wenig genauer darüber nachdenkt) merkt man das sich fehler einschleichen. *schäm*.

Bei meinen Beispielen gibt es nämlich ein Problem sobald du datensätze löschst sind sind die id's nicht mehr korrekt.

Du müsstest die erste funktion soweit umschreiben das sie zählt wieviele Datensätze vor dem Beitrag mit der id 125 in der DB eingetragen sind und dann diese zahl statt der id verwenden.

LG Kylee

Verfasst: 10.08.2007, 14:25
von Vitali Neumann
Hab das mit der Rechnung nicht so verstanden aber:

Das mit dem Listing ist ja Dynamisch! Geht ja nicht!
Was heute auf der ersten Seite ist wird morgen auf Seite 2 Stehen etc..

Nehmen wir Wordpress, da kannst du doch den Posting direkt aus der DB auslesen.
Mit URL.( die Steht ja drinne hab nachgesen ) Das in die Mail Packen und fertisch ist die Kiste
Plus die Kategorie!

Ich hoffe ich hab es richtig verstanden

Verfasst: 10.08.2007, 16:26
von Kylee
Das bleibt auch dynamisch die funktion musst du ja in variablen schreiben durch das neu berechnen bei jedem seiten aufruf ...


Aber gut ich seh schon .. mir is eh grad fad ... :

Da ich immer noch keine Beispiele von dir habe gehe ich einfach weiter davon aus das id DESC geordnet wird und 20 Sätze pro seite angezeigt werden ...

Code: Alles auswählen

//als erstes zählen wir mal alle datensätze und dividieren sie durch deine beitragsanzahl pro seite
$sql_gesamt = mysql_query("SELECT COUNT(*) FROM table");
   $res1 = mysql_fetch_array($sql_gesamt);
   $res2[0] = $res1[0]/20;    
//das ergibt eine zahl die wir aufrunden müssen 
$res3[0] = ceil($res2[0]);
//damit hast du deine gesamtseitenanzahl dynamisch berrechnet jetzt müssen wir nur noch herausfinden auf welcher davon dein eintrag steht
//lass dir die id deines beitrags ausgeben und speichere es in der variable $id
//wir zählen alle datensätze die vor deinem Beitrag geschrieben wurden und dividieren diese wieder durch die beitragsanzahl pro seite
$sql_seite = mysql_query&#40;"SELECT COUNT&#40;*&#41; FROM table WHERE id < '$id'"&#41;;
   $result = mysql_fetch_array&#40;$sql_seite&#41;;
   $result2&#91;0&#93; = $result&#91;0&#93;/20;   
//wieder aufrunden
$result3&#91;0&#93; = ceil&#40;$result2&#91;0&#93;&#41;;
//abschliessend wird die seitenanzahl der gesamtseitenanzahl abgezogen
echo "Der Beitrag befindet sich auf Seite&#58;";
echo $res3&#91;0&#93;-$result3&#91;0&#93;;
um das script anzupassen tausche table durch deinen tabellen namen ... "20" durch deine pro seite aufgerufenen beiträge (muss auf der seite stehen LIMIT) und fertisch :)

LG Kylee

Verfasst: 10.08.2007, 16:42
von Michael1967
Hmmmmm,

Die ID ist nicht so - 244, 255, 256, 257 geordnet, sondern wirr durch den Garten *gg*

Es wurden und werden ja auch Einträge gelöscht. Neue Einträge gehen immer ans Ende. Was heute auf der ersten Seite ist - ist morgen auch noch da.

Verfasst: 11.08.2007, 02:19
von To-Bi-As
Hi Michael,

also mit der ID kannste da nichts anfangen, weil wie Du ja selber sagst, es wird auch mal was gelöscht und gibt verschiedene Kategorien. Es ist ein Webkatalog, das hattest Du noch nicht gesagt.

Aber Du kannst auf der Detailseite anhand der Kategorie (oder Subkategorie) errechnen lassen wie viele Einträge es dort gibt. Sprich, Du sortiert nach dem Datum (neue zuletzt - wie ich :-) ) Also kannst Du eine DB-Abfrage starten die dir alle Einträge (bzw. die Anzahl) zurückgibt, die kleiner/gleich dem Datum des aktuellen sind. Also eine Abfrage nach Datum <= dem aktuellen Datum vom Eintrag und das ganze beschränkt auf die aktuelle Kategorie.

Dann bekommste eine Zahl, z.B 37. Das heißt dann, dass der Eintrag Platz 37 ist. Nun musste halt rechnen je nach Anzahl Einträgen pro Seite. Bei 10 / Seite ist es Seite 4.

Gruß, Ingo

Verfasst: 11.08.2007, 09:37
von Michael1967
Wenn der Eintrag mit Detailseite immer auf der letzten Seite ist, dann ist das alles kein Problem. Aber neue Einträge können auch ganz vorne stehen, wenn beispielsweise freiwillig (keine Backlinkplicht) ein Backlink gesetzt wird.

Deswegen haut das alles nicht hin *gg*

Aber danke für die Hilfe. :D

Verfasst: 11.08.2007, 14:36
von To-Bi-As
Hi Michael,

ok, wieder was neues. Ich gehe aber mal davon aus dass die Einträge mit Backlink, die dann vorne vor den anderen stehen auch nach dem Datum sortiert werden. Also musst Du das nur mit in die Abfrage nehmen. An sich ist es nichts anderes als die normale Listenansicht, halt nur nicht auf z.B. 10 Datensätze beschränkt.

Wenn der Eintrag mit Backlink ist ist es ja ganz einfach, dann müssen auch nur die mit BL abgefragt werden, sortiert nach Datum bis zum Datum des aktuellen Eintrags. Der letzte ist es dann.

Ist er ohne, ist es schwieriger, weil wie Du ja sagst später einer mit Backlink hinzukommen kann. In dem Fall dann alle mit Backlink abfragen und zusätzlich alle ohne bis zum Datum des aktuellen Datensatzes. Ergibt dann z.B. 7 mit Backlink und 45 ohne. Der letzte "ohne BL" ist dann der den Du suchst. Sprich 7+45 = 52 -> Seite 6.

Würden dann später mal 10 mit Backlink hinzukommen, dann wären es eben 17 mit BL aber immer noch 45 ohne, sprich Nummer 62 ist der den Du suchst -> Seite 7. (Bei 10 / Seite)

Habs jetzt nicht getestet, aber rein rechnerisch müsste es stimmen ;-)

Gruß, Ingo