Ankersprünge
treziman
- programmiertechnik
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
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
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
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
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
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
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
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
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
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
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
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