1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Nextpage per php automatisch einfügen

Dieses Thema im Forum "Konfiguration" wurde erstellt von Andreas 2012, 6. Februar 2013.

  1. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Hallo Wordpress-Freunde,

    ich lese den Inhalt einer Datenbank mittels einer while-Schleife in meine statischen Wordpress-Seiten ein. Das klappt auch super. Nun möchte ich die sehr langen Seiten aber automatisch splitten und habe dazu in der php-Schleife einen echo-Befehl eingefügt, der den nextpage-tag einfügt.
    Leider werden die Seiten aber nicht geteilt, im Quellcode des Browsers erscheint lediglich der Text "<!--nextpage-->.
    Wenn ich zur Gegenprobe auf einer Testseite den Befehl direkt eingebe, funktioniert alles.

    Weiß jemand, wie man den Befehl in dem Datenbank-Script so eingibt, dass er auch ausgeführt wird :confused:
    Ich habe was von hooks und filter gelesen, werde aber nicht so richtig schlau draus.

    Vielen Dank für eure Hilfe im voraus!

    Gruß
    Andreas
     
  2. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Hat niemand eine Idee, wie man <!--nextpage--> automatisch einfügen kann? :cry:
     
  3. Shadow

    Shadow Well-Known Member

    Registriert seit:
    12. Februar 2007
    Beiträge:
    2.907
    Zustimmungen:
    35
  4. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Hallo Shadow, danke für deine Antwort. Aber auf der Seite geht es ja um das Styling der Blätter-Funktionalität. Bei mir ist das Problem, dass der nextpage-Befehl einfach nicht umgesetzt wird, sondern als Text ausgegeben wird.
     
  5. Shadow

    Shadow Well-Known Member

    Registriert seit:
    12. Februar 2007
    Beiträge:
    2.907
    Zustimmungen:
    35
    auf der codex Seite ist der wichtige Hinweise :
    (you need to use the html-mode of the editor to do so)
    also nicht im Visual sonder HTML Editormodus eintragen, dann funktionierts
    bzw wenn du im PHP verwenden willst ist nicht der <!--nextpage--> Text verwendbar, sondern die funktion muss du einbauen
     
    #5 Shadow, 8. Februar 2013
    Zuletzt bearbeitet: 8. Februar 2013
  6. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Wie man statt des nextpage-Befehls direkt die Paginierungs-Funktion an der entsprechenden Stelle einfügt weiß ich nicht. Aber ich habe jetzt statt des echo-Befehls return benutzt. Jetzt beendet er die Seite an der gewünschten Stelle. Aber es fehlen die Paginierung sowie die Folgeseiten. Hier der Code für die Datenbankansprache:

    if(mysql_num_rows($Ergebnis)>0) {

    $counter=0;

    while ($Datensatz) {
    echo "... Inhalt der Datenbankzeilen... ";
    $Datensatz = mysql_fetch_array($Ergebnis);

    $counter++;
    if( ($counter%30)==0) {
    return "<!--nextpage-->";
    }

    }
    }
    else { echo "Keine Datens&auml;tze gefunden..."; }

    Hat jemand eine Idee?
     
  7. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Ich versuch mal zu verstehen und wiederzugeben, was ich mir aus deinen Fragen zusammenreimen kann. Bitte korrgier mich, wenn ich das falsch verstehe:

    1.) du hast eine Datenbank (oder DB Tabelle) die nix mit WordPress zu tun hat.
    2.) die Inhalte dieser Tabelle (Anzahl) ist bei weitem größer als 30 Einträge.
    3.) du möchtest alle Einträge per WordPress statischer Seite blätterbar machen in Schritten zu 30 Datenbankeinträgen.
    4.) du hast dazu ein eigenes WordPress Template für eine spezielle statische Seite angelegt und diese mit o.g. Code modifiziert.

    Wenn das o.g. stimmt, dann wirst du das auf diese Weise nicht zum Blätterns bringen können. In so einem Falle kommst du nur mit einem eigenen Plugin dahin, das auf eine spezielle statische Page während des Erstellen des eigentlichen Datenbankinhaltes der WordPress Seite eingreift und deren Inhalt noch vor Benutzung als Loop im Template so modifiziert, das schon ein paginierbares Ergebnis vorliegt.

    Sollte ich was falsch verstanden haben, dann ist o.g. kurzer Anriss einer Lösungsmöglichkeit hinfällig. Deswegen hab ich den noch nicht detaillierter ausgeführt.
     
  8. Shadow

    Shadow Well-Known Member

    Registriert seit:
    12. Februar 2007
    Beiträge:
    2.907
    Zustimmungen:
    35
    hast du schon mal etwas von PHP gehört, das ist eine scriptsprache und diese befehle habe ganz bestimmte funktionen, eine vielleicht variation gibt es dabei nicht, wie bei jeder Programmiersprache,
    und eine funktion ruft man auch so auf, wie man mit Programmiersprachen eine funktion aufruft, aber vielleicht hast du nichtmal die von mir verwiesene codex seite gelesen, das ist schade, denn dort wäre es genauso angeführt wie man es einbaut.

    daher wichtige Seiten www.php.net codex.wordpress.org,
     
    #8 Shadow, 9. Februar 2013
    Zuletzt bearbeitet: 9. Februar 2013
  9. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Hallo codestyling, danke für deine Antwort.

    Du hast es genau richtig verstanden. Ich habe eine mysql-Datenbanktabelle mit mehreren tausend Zeilen, die ich über die genannte Schleife in eine statische Wordpress-Page einlesen möchte. Funktioniert alles wie gesagt tadellos, bis auf das Problem mit der Seitenteilung. Die existierende Wordpress-Blätterfunktion, welche ja auch mit statischen Seiten funktioniert, würde ich gern nutzen. Aber wordpress arbeitet den <!--nextpage-->-Befehl innerhalb der PHP-Schleife nicht ab.

    Leider habe ich den Lösungsansatz von dir nicht ganz begriffen :oops:
     
    #9 Andreas 2012, 9. Februar 2013
    Zuletzt bearbeitet: 9. Februar 2013
  10. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Hast du noch weiteren Inhalt für diese statische Seite, der zusätzlich zu den je 30 Einträgen (zumindest bei den ersten 30) erscheinen soll oder ist es nur die pure Blätterung der Fremdtabelle?
     
  11. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Neben den Datenbankeinträgen sind da ja noch die header-Bestandteile inkl. Überschrift (.entry-title), ein einleitender Text im .entry-content und der Footer.
     
  12. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Hallo Andreas,

    vielleicht hilft dir dies weiter. Zuerstmal eine Tabelle, die ich zusätzlich zu WordPress Tabellen in meiner Datenbank habe:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Bei mir hat dieses Tabelle im Test über 180 Einträge, die Betriebssystem, Browser etc. als Statistiken enthält. Diese möchte ich nun mit 10 Zeilen pro blätterbarer Seite auf einer WP static Page anzeigen, ohne mir jemals wieder Gedanken darüber zu machen und vollautomatisch je nach Zustand der "externen Tabelle".

    Zuerst habe ich einen neue Testseite angelegt. Diese hat bei mir die ID=43. Kannst deine existierende Seite auch benutzen.

    Danach habe ich in die functions.php meines Themes folgendes eingebaut. Man kann es auch als Plugin verpacken, dann geht es mit jedem Theme:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die einzigen Änderungen, die du machen müsstest, wären $per_page (Anzahl Zeilen pro Page), $affected_page_id (die betroffend statische WordPress Seite) , natürlich die entspechende Datenbanktabelle in beiden SQL Abfragen und ggf. das Markup, in das du die Daten verpacken willst.

    Dann läuft das ganz ohne weiteres Zutun mit einem stinknormalen Page Template, ich hatte Twenty Twelfe im Einsatz. Hier ein Screenshot:
    foreign_content.png
     
    #12 codestyling, 9. Februar 2013
    Zuletzt bearbeitet: 9. Februar 2013
  13. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Hallo codestyling, vielen Dank erst mal für deine Hilfe :razz:

    Habe den Code in meine functions.php übertragen und die entsprechenden Variablen ersetzt. Die Frage ist jetzt: wie bzw. wo genau rufe ich die Funktion auf? Könntest du das anhand meines Scriptes sagen? Vielen Dank im voraus!
     
  14. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Sobald du die von mir genannten Variablen (Seiten ID, Anzahl pro Seite) und die entsprechende Datenbanktabelle in den 2 SQL Anfragen angepasst hast (sowie in der enthalten Schleife über die Zeilen aus der anderen Tabelle das markup und die Daten so generiert hast, dann erscheint es in der Seite, die du mit Seiten ID festgelegt hast automatisch).
     
  15. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Das Script funktioniert bei mir irgendwie nicht, die Seite wird mit allen Einträgen ohne Teilung gezeigt. Muss ich denn nur das script in die functions.php nachtragen und das war's?

    Mein Code für die DB-Abfrage sieht übrigens so aus:

    $Ergebnis = mysql_db_query("datenbankname", $SQLString, $Verbindung);
    $Datensatz = mysql_fetch_array($Ergebnis);
    if(mysql_num_rows($Ergebnis)>0) {
    while ($Datensatz) {
    echo "... Tabellenzellen werden mit den DB-Inhalten befüllt ...";
    $Datensatz = mysql_fetch_array($Ergebnis);
    }
    }
    else {
    echo "Keine Datensätze gefunden...";
    }
     
    #15 Andreas 2012, 9. Februar 2013
    Zuletzt bearbeitet: 9. Februar 2013
  16. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Ich glaub, du liest nicht, was ich geschrieben hab.

    Mein statische Seite heißt "Testpage für Externen Inhalt" und hat die ID 43. Das sollte bei dir schon mal anders sein. In meinem Codeschnipsel beziehe ich mich weiterhin auf meine Datenbanktabelle "cs_xt_counter_userinfostat", die zwar in der gleichen Datenbank steht, aber nicht zu WordPress gehört.
    Die Struktur meiner Tabelle hab ich ja beschrieben, die Struktur deiner Tabelle solltest du selbst kennen.
    Also muß das noch an deine Tabelle angepasst werden und die Ausgabe der eingelesenen Zeilen entsprechend deinen Wünschen angepasst werden.
    Wenn das samt deiner Anpassungen dann in deiner functions.php steht, dann bekommst du automatisch auf deiner statischen Seite die Fremdinformationen zum blättern angezeigt.
     
  17. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Die Änderungen, die du gerade erwähnst, hatte ich original umgesetzt und in die functions.php geschrieben, also inkl. ID-Nr., Tabellennamen etc. Trotzdem passiert bei mir nichts.
     
  18. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Kann es sein, dass du mit einer externen Datenbank arbeiten willst? Also nicht mit der, in der die WordPress Daten liegen?
     
  19. Andreas 2012

    Andreas 2012 Well-Known Member

    Registriert seit:
    25. November 2012
    Beiträge:
    71
    Zustimmungen:
    0
    Ja, es ist tatsächlich eine andere. Also auf dem gleichen Webspace, aber die Datenbank lautet anders. Ist das der Grund?
     
  20. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Ja, das ist der Grund.
    Anbei die ganze Sache als Plugin.

    Die Sektion, wo Änderungen zu machen sind, ist markiert und dieses hier:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und natürlich den Tabellennamen in den 2 SQL Abfragen darin anpassen (und Ausgabe deiner Columns, was immer du da auslesen magst).

    Dort kannst du auch die Daten für die andere Datenbank angeben und mit der anderen DB arbeiten. Hab ich auch testet.
    Wenn du es als Plugin einsetzt, dann muß es aus der functions.php wieder raus :)

    Den Anhang page-with-external-content-paginated.zip betrachten
     
    #20 codestyling, 10. Februar 2013
    Zuletzt bearbeitet: 10. Februar 2013
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden