treziman: Ankersprünge

Ja, hallo erstmal...
hier meldet sich mal wieder die Nervensäge. Diesmal mit einem Seemannsproblem -> Anker.

Ein Sprung zu einem Anker von einer Seite zur nächsten, ist ja kein Ding. Bei mir sieht es aber so aus:

Beschreibung on
Aus einer DB werden Suchergebnisse in einer Tabelle angezeigt, 10 pro Seite. Es gibt eine Blätterfunktion. Wenn nun Ergebnis Nr. 5 auf Seite 2 angeklickt wird, ruft der User ein anderes Skript in demselben iframe auf. Der Rücksprung erfolgt also später wieder auf Seite 2, aber an den Anfang der Suchergebnisse, immer im selben iframe (bei einem neuen Browserfenster brauchte ich ja keinen Rücksprung). Der Anker für den Rücksprung wird wie folgt gesetzt:
<td id = "<?php echo $id ?>"> ($id = id aus der DB)

und die ID wird mit dem Link übergeben, und beim Rücksprung an den Link angehängt (#$id; in PHP)
Beides funktioniert, die ID kommt jedesmal an.
Nur der Rücksprung zum Anker geht nicht, und ich erhalte dann eine Meldung, dass es keine Suchergebnisse gibt. Meine Erklärung dafür wäre, dass es diesen Anker zum Zeitpunkt des Rücksprungs noch nicht wieder gibt, da erst wieder die Suchergebnisse aus der DB geholt werden müssen.
Beschreibung off

Der Ankersprung ist nicht zwingend erforderlich, da nur 10 Ergebnisse pro Seite angezeigt werden und man nur ein kleines Stück scrollen muss. Aber er wäre benutzerfreundlicher.
Ich bin da jetzt im Zweifel, ob ich etwas falsch mache oder ob dieser Vorgang grundsätzlich nicht geht. Oder ist meine Erklärung richtig? Was sagen die Profis?

Ich akzeptiere auch Amateurantworten...

Gruss und Dank
Thorsten

  1. Hi,

    Aus einer DB werden Suchergebnisse in einer Tabelle angezeigt, 10 pro Seite. Es gibt eine Blätterfunktion. Wenn nun Ergebnis Nr. 5 auf Seite 2 angeklickt wird, ruft der User ein anderes Skript in demselben iframe auf. Der Rücksprung erfolgt also später wieder auf Seite 2, aber an den Anfang der Suchergebnisse, immer im selben iframe (bei einem neuen Browserfenster brauchte ich ja keinen Rücksprung).

    Wenn du den Nutzer einfach den Zurück-Button nutzen lässt, auch nicht - alle aktuellen Browser springen dabei m.W. an die vorherige Scrollposition zurück.

    Der Anker für den Rücksprung wird wie folgt gesetzt:
    <td id = "<?php echo $id ?>"> ($id = id aus der DB)

    Du verwendest nicht-nummerische IDs in deiner Datenbank?

    Nur der Rücksprung zum Anker geht nicht, und ich erhalte dann eine Meldung, dass es keine Suchergebnisse gibt.

    Ich sehe keinen Zusammenhang zwischen dem Anker und „keinen Suchergebnissen“.

    Meine Erklärung dafür wäre, dass es diesen Anker zum Zeitpunkt des Rücksprungs noch nicht wieder gibt, da erst wieder die Suchergebnisse aus der DB geholt werden müssen.

    Der Browser wartet mit dem Anspringen eines Ankers, bis das komplette Dokument geladen ist - daran kann's als kaum liegen.

    Ich bin da jetzt im Zweifel, ob ich etwas falsch mache oder ob dieser Vorgang grundsätzlich nicht geht. Oder ist meine Erklärung richtig? Was sagen die Profis?

    Die weisen auf die Tipps für Fragende hin, und erbitten eine *nachvollziehbare* Problembeschreibung.

    MfG ChrisB

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

      Wenn du den Nutzer einfach den Zurück-Button nutzen lässt, auch nicht - alle aktuellen Browser springen dabei m.W. an die vorherige Scrollposition zurück.

      Doch, das geht. Ist aber nicht so schön.

      Der Anker für den Rücksprung wird wie folgt gesetzt:
      <td id = "<?php echo $id ?>"> ($id = id aus der DB)

      Du verwendest nicht-nummerische IDs in deiner Datenbank?

      Doch. Die ID ist numerisch, Typ: BTREE / unique / auto_increment

      Der Browser wartet mit dem Anspringen eines Ankers, bis das komplette Dokument geladen ist - daran kann's als kaum liegen.

      Aha, dann muss ich wohl doch irgendwas falsch machen.

      Gut, erstmal danke. Bevor ich weiteres poste, probiere ich erstmal weiter. Ich melde mich nochmal.

      Gruss
      Thorsten

      1. Hi,

        Der Anker für den Rücksprung wird wie folgt gesetzt:
        <td id = "<?php echo $id ?>"> ($id = id aus der DB)

        Du verwendest nicht-nummerische IDs in deiner Datenbank?

        Doch. Die ID ist numerisch

        Na dann überleg doch mal, warum mich der oben stehenden Code-Schnippsel zu dieser Nachfrage, die eher rhetorischer Natur war, veranlasst hat ... ;-)

        MfG ChrisB

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

          Na dann überleg doch mal, warum mich der oben stehenden Code-Schnippsel zu dieser Nachfrage, die eher rhetorischer Natur war, veranlasst hat ... ;-)

          Ich denke, Du willst darauf hinaus, dass der Ankername mit einem Buchstaben beginnen soll? In der Beschreibung zu Ankern steht "sollte" nicht "muss". Aber egal, ich habe jetzt den Ankernamen verändert, indem ich ein "a" voranstelle. Sieht also etwa so aus: "a15". Geht auch nicht. Beim Rücksprung werden auch wieder andere Variablen mit übergeben. Z. B. die Seite der Suchergebnisse, also Seite_2 für die Ergebnisse 10 - 19. Ich habe festgestellt, dass diese Variablen nicht mit übergeben werden, sobald ich den Anker an den Link anhänge. Stimmt etwas mit meiner Schreibweise nicht?

          Unter PHP:
          echo"<a href='example.php#$id?var1=$x&var2=$y'>";

          ...php?#id&var1... hab ich auch versucht. geht beides nicht.

          In der Statuszeile unten im Browser stehts aber richtig.

          Gruss
          Thorsten

          1. Hi,

            jepp, alles klar!

            Muss so aussehen:

            echo"<a href='example.php?var=$var#$id'>...";

            Also den Anker zum Schluss. Muss man erstmal wissen. Hab die Lösung schliesslich ergoogelt. Trotzdem Dank, Chris, das "a" lasse ich mal davor.

            Gruss
            Thorsten

    2. Der Anker für den Rücksprung wird wie folgt gesetzt:
      <td id = "<?php echo $id ?>"> ($id = id aus der DB)

      Du verwendest nicht-nummerische IDs in deiner Datenbank?

      IDs, die mit Zahlen beginnen, sind in HTML5 erlaubt, weil es sämtliche Browser unterstützen, weil es in URLs erlaubt ist, weil nichts dagegen spricht, solange man nicht XML produziert.

      Mathias

  2. Hallo,

    <td id = "<?php echo $id ?>"> ($id = id aus der DB)

    Hier gibst du deiner Zelle eine ID. Was sollte den Browser dazu veranlassen, diese anzuspringen?

    Meine Anker definiere ich immernoch mit <a name="ankername">...</a> und springe sie an mit <a href="#ankername">...</a>. Das mag sehr konservativ sein, erscheint mir aber durchaus noch als logisch. Man möge mich gerne korrigieren, falls man das heutzutage anders macht.

    Viele Grüße,
    Sebastian

    1. Hi,

      Man möge mich gerne korrigieren, falls man das heutzutage anders macht.

      Man macht, siehe die Anmerkung unter http://de.selfhtml.org/html/verweise/projektintern.htm#anker

      MfG ChrisB

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

        Man macht, siehe die Anmerkung unter http://de.selfhtml.org/html/verweise/projektintern.htm#anker

        Danke! Hin und wieder bekomme ich das Gefühl, es würde nicht schaden, einfach nochmal bei null anzufangen, alles zu lernen :-/

        Viele Grüße,
        Sebastian

        1. Hi,

          Man macht, siehe die Anmerkung unter http://de.selfhtml.org/html/verweise/projektintern.htm#anker
          Danke! Hin und wieder bekomme ich das Gefühl, es würde nicht schaden, einfach nochmal bei null anzufangen, alles zu lernen :-/

          Naja, daß ids als Ziel eines Ankersprungs erlaubt sind, ist ja noch nicht so lange möglich. Erst seit HTML 4.0 (W3C Recommendation 18-Dec-1997), also seit gut 14 Jahren ...

          (ja, ich weiß, in den Drafts zu 4.0 war's auch schon drin ...)

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
          1. Hallo,

            Danke! Hin und wieder bekomme ich das Gefühl, es würde nicht schaden, einfach nochmal bei null anzufangen, alles zu lernen :-/

            Womit ich weniger meinte, dass es seit meiner Lernanfänge so viel Neues gäbe. Aber ich war jung und braucht noch kein Geld. Heute würde ich sehr viel gewissenhafter, strukturierter und konsequenter lernen. Mit anderen Zielen und Ansprüchen.

            Viele Grüße,
            Sebastian