powell: brauche Hilfe bei Aufzählung von Seitenlinks

hallo...

hilf mir doch bitte wer bei folgendem script:
es zeigt mir die seitennavi wie folgt an
1-2-3-4-5-6-7-8-9-10-11-12-13- usw.

soll aber ... -6-7-8-9-10-... anzeigen

ich sehe den wald vor bäumen wohl nicht, obwohl ich beim googlen über etliche änliche themen gestoßen bin

hier mein script :

$zaehler = 1;
 echo "Seite ";
for ($anzahl = 0; $anzahl < $menge; $anzahl = $anzahl + $daten_pro_seite) {

echo ($zaehler == $aktuelle_seite ? '<span class="new"><strong>' . $zaehler . '</strong> ' :
  '<a href="?seite=' . $zaehler . '">' . $zaehler . '</a></span> ');
 $zaehler++;

vielen dank

  1. Hi!

    es zeigt mir die seitennavi wie folgt an
    1-2-3-4-5-6-7-8-9-10-11-12-13- usw.
    soll aber ... -6-7-8-9-10-... anzeigen

    Wofür genau stehen diese Zahlen?

    ich sehe den wald vor bäumen wohl nicht, obwohl ich beim googlen über etliche änliche themen gestoßen bin
    hier mein script :

    Beschreib doch bitte, was die Bestandteile deines Scriptes bedeuten. Was zählt der $zaehler? Die $anzahl und $menge welcher Dinge ist gemeint? Wann ist welcher Variableninhalt nicht mehr gemäß deiner Erwartungen?

    Und warum sortierst du das unter Javascript ein, wenn es sich doch um ein PHP-Problem handelt?

    Lo!

    1. die zahlen sind die links der seitennavigation von folgender seite: in dem fall seite zwei

      http://www.1times.de/HOOK/userliste.php?seite=2

      noch sind es nur drei seiten a fünf einträge. die drei seiten werden mit den links 1-2-3 angezeigt wie du im beispiel sehen kannst. wenn ich jetzt mehr einträge habe möchte ich nicht, dass zahlen (also umblätternavigation) wie zb 1-2-3-4-5-6-7-8-9-10-11-12-13 usw. angezeigt wird, sondern nur (zb wenn man auf seite 4 ist) ...2-3-4-5-6... .

      danke gruß paul

      Hi!

      es zeigt mir die seitennavi wie folgt an
      1-2-3-4-5-6-7-8-9-10-11-12-13- usw.
      soll aber ... -6-7-8-9-10-... anzeigen

      Wofür genau stehen diese Zahlen?

      ich sehe den wald vor bäumen wohl nicht, obwohl ich beim googlen über etliche änliche themen gestoßen bin
      hier mein script :

      Beschreib doch bitte, was die Bestandteile deines Scriptes bedeuten. Was zählt der $zaehler? Die $anzahl und $menge welcher Dinge ist gemeint? Wann ist welcher Variableninhalt nicht mehr gemäß deiner Erwartungen?

      Und warum sortierst du das unter Javascript ein, wenn es sich doch um ein PHP-Problem handelt?

      Lo!

      1. Hi!

        noch sind es nur drei seiten a fünf einträge. die drei seiten werden mit den links 1-2-3 angezeigt wie du im beispiel sehen kannst. wenn ich jetzt mehr einträge habe möchte ich nicht, dass zahlen (also umblätternavigation) wie zb 1-2-3-4-5-6-7-8-9-10-11-12-13 usw. angezeigt wird, sondern nur (zb wenn man auf seite 4 ist) ...2-3-4-5-6... .

        Dann must du also den unteren und den oberen Grenzwert ermittelt. Von da bis da musst du dann iterieren, um die Seitenlinks zu erzeugen. Die Grenzwerte ergeben sich aus der aktuellen Seitennummer ab- und zuzüglich eines Deltas. In dem Fall ist das Delta 2 - zwei hoch und zwei runter. Nun musst du noch festlegen, was für die Fälle geschehen soll, wenn die aktuelle Seite +/- Delta Werte <= 0 und >= max erreicht. Sollen dann auf der anderen Seite Seitenzahlen zugeschlagen werden, so dass immer 5 angezeigt werden, oder sollen die fehlen? Und zu guter Letzt kommt noch der Fall, dass weniger als 5 Seiten vorhanden sind.

        Ich schlage vor, du nimmst dir vielleicht ein Blatt Papier und rechnest mal diese Szenarien durch. Dann weißt du hoffentlich, welche Gemeinsamkeiten und welche Unterschiede die Fälle haben.

        Bitte zitiere nur das, worauf du dich konket beziehst und nicht einfach alles. So ist es hier üblich, weil sich dieses System bewährt hat. Dann passiert es auch nicht, dass du Antworten auf Fragen vergisst.

        Lo!

        1. danke dir ...

          ich krieg das selber aber nicht hin

          lg paul

          1. Hi!

            ich krieg das selber aber nicht hin

            Dann fang doch wenigstens einmal damit an, zeig uns deine Versuche, sag uns deine konkreten Stellen mit Verständnisproblemen. Für den Anfang nehmen wir mal an, du hast zwischen 31 und 35 Datensätze, also 7 Seiten.

            1  2  3  4  5  6  7

            Das einfachste Beispiel fängt in der Mitte an, also bei 4.

            1  2  3 _4_ 5  6  7

            Angezeigt werden sollen Seiten 2..6, also ist 2 der Wert für das Delta.

            1 .2..3._4_.5..6. 7

            Der untere Grenzwert berechnet sich nun aus 4 - Delta (=2) und der obere aus 4 + Delta (=6). Also läuft die Seitenlinksgenerierschleife von jeweils inklusive 2 bis 6.

            Die Fälle 3 und 5 müssen wir nicht weiter betrachten, die sind analog zu 4. Nehmen wir mal Seite 2.

            .1._2_.3..4. 5  6  7

            Mit der bisherigen Rechnung kommt der untere Grenzwert auf den Wert 0, was aber kleiner als 1 ist und somit ungültig. Im einfachsten Fall wird der untere Grenzwert auf 1 gesetzt. Der obere Grenzwert hat kein Problem. Aber: nun werden nicht fünf Seiten angezeigt sondern nur vier. Und - das hast du wieder nicht beantwortet - ist deine Designentscheidung gefordert. In dem Fall könnte man stattdessen die Seiten 1..5 anzeigen, also die eine vom unteren Grenzwert "abgeschnittene" Seite dem oberen Grenzwert zuschlagen.

            -0-.1._2_.3..4.+5+ 6  7

            Analog bei Seite 1.

            -1--0-.1._2_.3.+4++5+ 6  7

            Bei Seite 6 und 7 ist das ganz ähnlich.

            Und nun noch der Fall, dass weniger als 25 Datensätze angezeigt werden sollen, also weniger als fünf Seiten zu sehen sind. Das ist dann der Fall, wenn oberer und unterer Grenzwert aus dem Rahmen fallen. Dann muss man sie einfach nur auf die Grenzen zurückholen und nicht noch am anderen Ende das überzählige Delta draufschlagen (falls das bei mehr als fünf Seiten gemacht werden soll).

            Man kann diesen Sonderfall auch anders angehen, indem man ihn zunächst ignoriert. Man errechnet im ersten Schritt den oberen und untereren Grenzwert. Dann ermittle man für jeweils oben und unten die Differenz zum jeweils zulässigen Minimal-/Maximalwert und schlage sie am anderen Ende drauf. Zum Schluss holt man gegebenenfalls die Grenzwerte in ihre Grenzen zurück.

            Lo!

            1. erstmal vielen dank für die hilfe...  ich schaffe es eigentlich immer recht gut mir scripts zusammen zu kopieren und verstehe auch die meisten vorgänge..

              $menge ( hier werden die datensätze gezählt . nehmen wir mal 50)
              $daten_pro_seite ( steht auf 5, weil fünf datensätze pro seite angezeigt werden sollen.)

              das die fünf datensätze angezeigt werden funktioniert ja schon. die links
              (<a href="?seite=$zähler"> . $zähler . </a>) werden auch korrekt angezeigt,

              also 1-2-3-4-5-6-7-usw.

              diese auflistung würde aber nicht mehr aufhören und ich will wenn zb. seite 3 angezeigt wird eins oder zwei nach vorn und hinten navigieren können.

              kannst du mir nicht etwas script zum ausprobieren posten.

              ein ausschnitt vom bisherigen code ist folgender...

              ----

              for ($anzahl = 0; $anzahl < $menge; $anzahl = $anzahl + $daten_pro_seite)
              {
               echo ($zaehler == $aktuelle_seite ? '<span class="new"><strong>' . $zaehler . '</strong> ' :
                '<a href="?seite=' . $zaehler . '">' . $zaehler . '</a></span> ');
               $zaehler++;
              }

              ----

              lg paul

              1. Hi,

                ich schaffe es eigentlich immer recht gut mir scripts zusammen zu kopieren

                Das ist ja für sich keine besondere Leistung.

                kannst du mir nicht etwas script zum ausprobieren posten.

                dedlfix hat sich gerade die Mühe gemacht, dir recht ausführlich zu beschreiben, wie das theoretische Vorgehen aussehen kann.

                Das jetzt in die Praxis umzusetzen zu versuchen, ist erst mal deine Aufgabe.
                Falls notwendig, beschäftige dich zunächst mit den Grundlagen von PHP.

                Und wenn du dann *konkrete* Probleme hast, kannst du hier auch gerne konkrete Fragen dazu stellen.

                Ein „ich will XY haben, kann aber nicht programmieren - macht ihr mal für mich“-Service ist das hier aber nicht.

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                1. :-)

                  ihr habt recht ... ich werde mich mal näher mit der materie beschäftigen.

                  ihr habt mir dennoch geholfen... danke

  2. hab das jetzt hinbekommen

    sieht so aus

    $link1 = $aktuelle_seite - 1;
    $link2 = $aktuelle_seite;
    $link3 = $aktuelle_seite + 1;
     echo "Seite ";
    //for ($anzahl = 0; $anzahl < $menge; $anzahl = $anzahl + $daten_pro_seite) {
    if ($link1 <= 0){

    $link1 = 1;

    echo "<a href="?seite=" . $link2. "" style="color:#ffcc00">$link2 </a>";
     echo "<a href="?seite=" . $link3. "">$link3 </a>";

    }

    else

    {
     echo "<a href="?seite=" . $link1. "">$link1 </a>";
     echo "<a href="?seite=" . $link2. "" style="color:#ffcc00">$link2 </a>";
     echo "<a href="?seite=" . $link3. "">$link3 </a>";

    }

    vielen dank

    1. Hi!

      if ($link1 <= 0){

      [...]

      }
      else
      {

      [...]

      }

      Da fehlt jetzt aber noch die Behandlung beim Überschreiten des oberen Grenzwertes.

      Lo!