Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Durchblättern von Seiten

Hallo,

ich glaube, dass ich für die meisten von Euch sicher eine völlig doofe Frage stelle.
Das liegt wohl daran, dass ich ein ziemlicher PHP-Neuling bin. Ich versuche gerade einen Online-Buchhandel zu Programmiern (für meine Diplomarbeit als Wi-Ing). Ich habe eine besthende Datenbank, auf die ich zugreifen kann, um Daten auszulesen, zu editieren und zu löschen.

Da es allerdings ziemlich nervend ist, alle 1699 Datensätze auf einer Seite darzustellen, habe ich die Seite auf zehn Datensätze pro Seite beschränkt. Das funktioniert auch schon sehr gut. Jetzt habe ich eine Suchfunktion eingefügt, in der man nach bestimmten Schlagwörtern suchen kann. Die Ergebnisse auf der ersten Seite stimmen auch immer mit dem Suchbegriff überein. Es wird die entsprechende Seitenzahl angezeigt usw. Allerdings wenn ich auf die zweite seite gehe, dann werden alle anderen Datensätze auch wieder angezeigt.

Ich glaube, dass es an der Positionierung meiner $_SERVER['PHP_SELF'] Funkrtion liegt.

Da mein Skript bis jetzt schon über 200 Zeilen umfasst, kann ich es wohl kaum hier im Forum ablegen, so dass Ihr es Euch komplett anschauen könnt. Ich wäre allerdings für hilfreiche Vorschläge dankbar, und würde mein Skript auch gerne zur Ansicht weiterleiten.

Wenn jemand mir helfen könnte, wäre ich echt dankbar.

Gruß
Michael

Hier gehts zum Orginal Eintrag "Durchblättern von Seiten" im Forum

Antworten

Es liegt wohl einzig und allein an einem falschen Query bzw. einer falschen LIMITIERUNG im Query. Poste doch mal relevanten Quellcode, sprich dort, wo dein Query generiert wird.

Außerdem kannst du dir dein Query doch mal ausgeben lassen, um nachzuvollziehen, wo das Problem liegt.

Kennst du: [doc]mysql-seitenweise[/doc]

*schieb*


2.

Offensichtlich geht Dir beim Seitenwechsel irgendwie die Suchbedingung verloren - mehr kann ich dazu nicht sagen. Wie realisierst Du einen Seitenwechsel, wie wird die Suchbedingung weitergereicht, wie werden die Daten limitiert auf die spezielle Seite?


3.

Hallo, johnpatcher

anbei versuche ich mal, den relevanten code zu posten. Ich habe leider nicht viel Erfahrung im Umgang mit dem Forum.

Code:                   In Zwischenablage kopieren (nur IE)
1">

Er ist zwar nicht besonders übersichtlich, aber eigendlich müsste er korrekt sein.

Gruß

Michael

[color="red"]Edit by johnpatcher:
Für PHP Code, bitte die PHP TAGS benutzen, Danke ![/color]


4.

In diesem SQL-Statement wird $_REQUEST['suche'] als Suchpattern benutzt - dieses wird vermutlich via Formular eingegeben.
Auf einer Folgeseite gibt es diese Variable nicht mehr - es sein denn, sie wird explizit via URL (über einen Link, der auf die nächste Seite führt) weitergereicht. Ich denke, da liegt der Hund begraben, dort geht der Wert verloren, die LIKE-Angabe sucht dann nach '%%' und findet ab sofort alles.


5.

So also ich habs grad nicht schneller zur Hand. Version 0.1.2 meines Pageslisters hatte noch einen argen Bug drinnen, 0.1.3 hab ich hier jedoch noch nicht mit Doku etc zur Hand, aber von der Benutzung her hat sich nichts geändert, also kannst du die Doku von 0.1.2 benutzen:

V0.1.2 mit Doku: [url]http://www.dasprids.de/other/pagelister/PageLister-0.1.2.tar.gz[/url]
V0.1.3 plain: [url]http://www.dasprids.de/other/pagelister/PageLister-0.1.3.zip[/url]


6.

Ok, und wie kann ich das umgehen?
sollte ich lieber mit $_GET arbeiten?

Gruß
Michael


7.

Also $_GET['suche'] funktioniert nicht. Ich weiß allerdings auch nicht, wie ich den Wert aus $_REQUEST['suche'] sichern soll, so dass er für den Aufruf der nächsten Seite erhalten bleibt.

Kann mir jemand weiterhelfen, bitte?

Gruß
Michael


8.

Zitat:
Ok, und wie kann ich das umgehen?
Nachschauen ob es so ist - ich kenn doch Deine Seitensteuerung nicht!
Zitat:
sollte ich lieber mit $_GET arbeiten?
Das würde de fakto nichts nützen - wenn $_REQUEST['suche'] leer ist, dann ist auch $_GET['suche'] leer.

Du mußt doch wissen, wie Du dem Anwender ermöglichst, zu blättern. In dem dazugehörigen Link mußt Du entweder "suche=..." als Parameter mit aufnehmen (etwas gehackt, weil unsicher), oder Du arbeitets mit Sessions und gibst das Pattern so gesichert weiter.


9.

Also, ich habe versucht $_POST['suche'] als externe Variable mit zu übergeben. Ohne Erfolg. Bei Sessions habe ich keine Ahnung wie man das macht, da ich noch nie damit gearbeitet habe.
Ich schicke einfach mal ne stark gekürzte Fassung des Skripts. Vielleicht kann ja jemand meien Denkfehler erkennen.

Code:                   In Zwischenablage kopieren (nur IE)
2">

Ich finde nicht wirklich eine möglichkeit den Wert für $_POST['suche'] weiter zu geben.

Für jeden hilfreichen Tip wäre ich echt dankbar.

Gruß
Michael

[color="red"]Edit by johnpatcher:
Formatierung eingefügt, bitte in Zukunft selber beachten ![/color]


10.

Zitat:
Ich finde nicht wirklich eine möglichkeit den Wert für $_POST['suche'] weiter zu geben.
Sessions!

EIne $_POST Variable kann man nicht "weitergeben" - dazu muss IMMER ein Formular abgeschickt werden (oder man muss mit cURL oder Socketfunktionen einen eigenen Request formulieren - das ist mit Atombomben auf Spatzen geschossen). Das Formular wird aber ganz sicher nicht erneut abgeschickt, wenn der Anwender die 2. Seite sehen will - oder spätere Seiten.

Sessions sind SUPEREINFACH. Sie tun EXAKT das, was Du willst: das sind superglobale Variablen, die bei Seitenwechsel (egal ob gleiches Script oder anderes Script auf gleicher Domain) nicht verloren gehen.

Aber erst einmal zu deinem (sehr merkwürdigen) Script:

1) Du gibst IMMER das Suchformular mit aus?? Ich sehe keine If-Abfrage oder ähnliches - wozu das? Die Eingabe eines Suchbegriffs erfolgt doch nur EINMAL und nicht immer pro Seite wieder neu?

2) Was ist
Code:                   In Zwischenablage kopieren (nur IE)
3">

3) Wieso gibt es $_POST['set'] (und was ist das??) und wieso gibt es auch $_GET['site']??? Eine Request wird gePOSTed oder geGETet - nicht beides.

4)Was ist das denn für eine "Variablenzuweisung":
Code:                   In Zwischenablage kopieren (nur IE)
4">

Was soll das??

5) Wo sehe ich den Link zur 2. Seite??


11.

Hi,

Also es ist nicht so ganz einfach zu erklären. Noch einmal - Ich bin ein absoluter Newbie - ich habe eigendlich keine Ahnung vom programmieren.
Aber das hast Du sicher schon mitgekriegt.
zu 1.) Ich gebe das Formular immer mit aus, damit der User seine Suche weiter spezifizieren kann, falls er mit dem Ergebnis nicht zufrieden ist.
zu 2.)
Code:                   In Zwischenablage kopieren (nur IE)
5">

gibt die Aktuelle Seite in der Navigationsleiste an.

zu 3.)$_POST['set'] zeigt an, dass das Formular abgeschickt wurde. $_GET['site'] fragt eine aktuelle Seite ab. SET vs. SITE.

zu 4.) mit
Code:                   In Zwischenablage kopieren (nur IE)
6">

können rferenzen auf zwei Variablen mit an die Funktion navigationsLeiste übergeben werden.

zu 5.) Der Link zur 2. Seite wird über die Navigationsleiste realisiert.

Ich hoffe, dass ich das alles richtg erklären konnte, so hatte ich mir das jedenfalls gedacht.
Michael


12.

Zitat:
$extVariables = '&var1=wert1&var2=wert2';
Na also - dann übergib doch da die Variable(n), die Du wirklich brauchst, und nicht einfach irgendwas. Statt der Variablen "var1" und "var2" benötigst Du doch die Variable "suche", und der Inhalt davon ist weder "wert1" noch "wert2", sondern der Wert von $_REQUEST['suche'].

Zitat:
so hatte ich mir das jedenfalls gedacht.
Ne, Du hast Dir gar nichts dabei gedacht und das mag ich daran nicht. Du hast das irgendwie zusammengepuzzled aus Teilen, die Du irgendwo gefunden hast. Und dazu solltest Du stehen und nicht so tun, als hättest Du es selbst programmiert - dann wüßtest Du nämlich genau, was die Dinge bedeuten.

"Newbie" scheint mir noch geschmeichelt - oder!?


13.

Ich wiederhol mich ungern, aber nimm einfach den PageLister, damit ersparst du dir einiges an Arbeit ;)

V0.1.2 mit Doku: http://www.dasprids.de/other/pagelister/PageLister-0.1.2.tar.gz
V0.1.3 plain: http://www.dasprids.de/other/pagelister/PageLister-0.1.3.zip


14.

Rana,

Ich hatte den Wert von $_REQUEST['suche'] versucht zu übergeben. Es hat nicht geklappt. Ich habe nie behauptet, dass ich die Ideen alle selbst erdacht habe. Natürlich stammen viele Grundzüge aus Büchern, die ich gelesen habe.
Ich weiß nicht, woher Du Deine Weisheit nimmst. Mir ist sie jedenfalls nicht in die Wiege gelegt worden. Und lernen tut man durch Versuch und Irtum. Und wenn man nicht weiter kommt, dann fragt man jemand, der schon mehr Erfahrung hat, als man selbst. Das ist jedenfalls der Grund, warum ich hier bin. Um zu lernen. Anstatt mich anzupöbeln versuchs doch mal mit einer kreativen Idee.
Das ich meinen Wert nicht übergeben bekomme, weiß ich auch alleine. Dazu brauche ich Deine Fachkundigen Mitteilungen nicht.

Tschau
Michael


15.

Rana nimmt seine Weisheit und Gewißheit aus Jahrelanger Erfahrung ;)... Und er wurde schon geanauso vermöbelt wie du, da muss jeder durch ;)


16.

Hallo DASPRID,

Ich habe Deinen Rat angenommen, und mir den PageLister besorgt. Allerdings habe ich noch nicht ganz herausgefunden, wie er funktioniert. Wegen zwei Rechner in Arbeit. Einer am Netz, der andere Offline.
Ich werde es aber sofort nachhohlen. Allerdings wenn Du mir noch einige Dinge mit auf den Weg geben willst, wär ich nicht böse drüber.
Ich glaube schon, dass jeder mehr oder weniger durch diese harte Schule gehen muss. Allerdings ist es nie angenehm. Ich habe keine Erfahrung im Umgang mit Foren, darum ist es wohl besonders ungewohnt. Ich hatte immer geglaubt, ein forum sah dazu da, um Wissen weiter zu geben, und nicht dazu, die schlechten Erfahrungen, die man selber gemacht hat an andere zurück zu geben. Aber vielleicht habe ich mich geirrt.

Gruß
Michael


17.

Es kommt halt ganz darauf an, wie du dich anstellst. Im Forum helfen wir gerne bei Sachen weiter, die nicht in einer Doku stehen oder schon 1000 mal besprochen werden (siehe Suchfunktion). Wir sind kein Lexikon, dass man einfach auf- und wieder zuschlagen kann. Bestimmte Sachen stehen nicht umsonst niedergeschrieben. Beherzige dass und versuch immer selbst erst auf eine Lösung zu kommen. Wenn du es wirklich selbst nicht hinkriegst, dann steht es dir frei, dich hier zu informieren, dann helfen wir auch gerne weiter. Naja, und dem PageLister liegt in der V0.1.2 noch eine Demo bei, damit kommst du vielleicht mehr zurecht. Ansonsten habe ich auch alle Methoden gut dokumentiert. Wenn sonst noch Fragen offen sind, kannst du mich gerne auch per ICQ stören, Nummer steht im Profil.


18.

Zitat:
Rana nimmt seine Weisheit und Gewißheit aus Jahrelanger Erfahrung
Stimmt.
Zitat:
Und er wurde schon geanauso vermöbelt wie du, da muss jeder durch
Ne - da muss ich Dich enttäuschen. Ich stand nie im Leben auf der Seite der Fragenden. Ich habe de fakto alles immer selbst herausgefunden - klingt anspruchsvoll, ist für mich aber selbstverständlich, wenn man Programmierer sein will.

@michaelgruse
Zitat:
Ich glaube schon, dass jeder mehr oder weniger durch diese harte Schule gehen muss
Das glaube ich ganz und gar nicht. Ich glaube hingegen, dass entweder einige Menschen um Welten zu ungeduldig und zu wenig einfallsreich sind, und - noch wichtiger - dass bei weitem nicht jeder Mensch Programmierer sein kann.

Es kann ja auch nicht jeder über 2,40m hoch springen - nur letzteres scheint einfacher zu akzeptieren zu sein.


19.

Also Rana!

Auch Du hast irgendwo Dein Wissen her - entweder man fragt oder liest Bücher oder sucht seine Infos im Internet.
Ist ja auch ok so.

Und prinzipiell kann jeder Programmieren, genauso wie jeder Rechnen oder Lesen und Schreiben kann
(von Legasthenikern mal abgesehn)

Wie gut jemand diese Dinge kann ist wieder was anderes.

Die Kritik daß viele zu ungeduldig sind trifft zu und oft sind sie auch zu bequem.


Zum Thema:
Bei dem Script werden zwei Funktionalitäten vermischt, nämlich die Suche und das Blättern.
Die Variable für die Blätterfunktion übergibst am besten per GET, den Suchstring per POST-Formular.
Damit der Suchwert über Seiten hinweg erhalten bleibt, kannst eine Session verwenden.
Das ist alles etwas komplexer, deswegen baust Schritt für Schritt Dein Script aus.

Ich würde kein fertiges Script übernehmen, jedenfalls nicht wenn ich nicht jede Zeile hundertprozentig
nachvollziehen kann.
Eine Blätterfunktion kriegt man mit Nachdenken auch alleine hin, die Suchfunktion ist im wesentlichen
eh nur eine sql-Abfrage und bezüglich der Session mußt Dich eben noch mal schlau machen
- z.B. hier: http://tut.php-q.net/


20.

Zitat:
Rana postete
Ne - da muss ich Dich enttäuschen. Ich stand nie im Leben auf der Seite der Fragenden. Ich habe de fakto alles immer selbst herausgefunden - klingt anspruchsvoll, ist für mich aber selbstverständlich, wenn man Programmierer sein will.

War auch nur geraten ;>. Ich hab auch nie irgendwen gefragt, sondern mich immer bis zu einem Ergebniss durchgerungen. Macht einfach mehr Spass, als das einem einer die Lösung verrät ;)

Bernd: Bei fertigen (komplexen) Klassen wie dem PageLister muss man nicht zwangsweise verstehen, wie sie funktionert, sondern nur, wie man sie verwendet. Siehe PHPMailer.


21.

@DASPRiD

ach so - ich wußt nicht, daß das eine Klasse ist.


22.

Hajo schaus dir doch an, da hab ich einiges an Arbeit reingesteckt ;), ist aber nichtnur für MySQL zu gebrauchen.


23.

Zitat:
Anstatt mich anzupöbeln versuchs doch mal mit einer kreativen Idee.
Genau das ist Problem: wenn Du den Thread mal verfolgst, habe ich VON ANFANG AN richtig kreativ gehandelt und konkrete Hinweise gegeben. Ich habe sogar OHNE Kenntnis des Codes auf die richtige Ursache getippt (s. Post 002). Das ganze habe ich bestätigt in Post 004. "Pöbeln" kann ich dort nicht entdecken.

In Post 010 habe ich den Code analysiert und hinterfragt, und schließendlich habe ich in Post 012 ganz konkret beschrieben, wie das Problem letztendlich zu beheben ist.

Nur: das nützte leider nichts. Weil Du meine geschriebenen Worte nicht in die Tat umsetzen kannst. Weil Du keinerlei Kenntnisse hast von dem, was ich Dir versucht habe zu erklären Meine Enttäuschung darüber nennst Du "pöbeln".

Und was bliebe mir denn jetzt nur noch übrig? Richtig: Dir den vollständig richtigen Code zu programmieren und Dir hier zu präsentieren. Aber genau das werde ich nicht tun, denn darin sehe ich nicht den Sinn des Forums. Das ist zwar ein Anfängerforum, aber dennoch gehe ich davon aus, dass hier Leute fragen, die eine Antwort SELBST in die Tat umsetzen. Sonst könnte man es gleich ins Jobforum setzen.


Hier gehts zum Orginal Eintrag "Durchblättern von Seiten" im Forum
 
phpforum.de | Impressum