PHP Navigation ohne das #section in der URL?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
url.tld/#section

Ist nichts anderes als ein anchor-link. Sprich eine html-Verweisung. Das hat nichts mit PHP zu tun. Wenn du einen anchor mit dieser ID definierst wird der anchor-link dafür sorgen, dass der Browser beim Öffnen der Seite direkt zu diesem anchor springt.

Mehrere Optionen:

  • Über .htaccess und mod_rewrite direkt eine Weiterleitungsengine implementieren.
  • Bei action="" einfach die Datei angeben, in der sich das Formular befindet.
Woher ich das weiß:Berufserfahrung
Ollig00 
Fragesteller
 08.11.2019, 09:25

Ja, das hat nichts mit PHP zu tun. Allerdings würde ich gerne wissen, ob es mit PHP oder JS etc möglich wäre? Siehe mein Kommentar unter der Antwort von ohwehohach.

MfG

0
Ollig00 
Fragesteller
 08.11.2019, 09:30
@KapitaenNiveau

Das sieht ebenfalls nach etwas Richtigem aus! Ich werde das mal in der Seite einbauen und schauen, welche Methode besser ist. Danke Dir!

0

Mir erschließt sich zwar der Sinn nicht ganz dahinter aber wenn es sein muss, kannst du in dem Antwortformular natürlich auch per JavaScript zu einer Sprungmarke gehen:

window.location.href = "#section";

Alternativ kannst du auch zu einer bestimmten ID springen:

document.getElementById("section-id").scrollIntoView();

In modernen Broesern geht das sogar flüssig:

document.getElementById("section-id").scrollIntoView({
  behavior: 'smooth',
  block: 'start'
});
Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.
Ollig00 
Fragesteller
 08.11.2019, 11:47

Danke. Sowas ist zwar nicht exakt das, aber eine super Alternative. Sogar schöner :)

0

Warum solltest du das wollen? Normal würde man dafür erstmal gar keine Form nutzen, die abgesendet wird, sondern einen Link, der zu dieser Id springt. Dabei wird die Seite dann auch nicht neu geladen, sondern es ist lediglich ein Scrollen durch den Browser auf Clientseite. Zumindest sieht man in deinem Beispiel nicht, warum eine Anfrage an den Server gesendet werden sollte.

Davon ab möchte ggf. jemand z.B. einen Bookmark setzen für genau diesen Abschnitt der Seite. Warum solltest du ihm das erschweren, indem du die URL manipulierst und auf etwas falsches zeigen lässt?

Ansonsten kann man mittlerweile die angezeigte URL und den Pagetitel ändern oder darauf reagieren. Das ist aber vor allem für den umgekehrten Fall gedacht, sprich eine Seite die auf Ajax aufbaut, bei der man die Seite nicht neu lädt aber die URL ändern möchte, damit man beim Bookmarken und co. eben diesen geänderten State speichert.

Die entsprechenden APIs wären history.pushState bzw. das popstate.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

Also zunächst einmal geht das nicht, dass man das "#section" in der URL dann verbirgt, denn es ist nun einmal Teil der URL.

Zweitens: Warum machst Du das denn über eine Form mit einem weiteren Roundtrip zum Server? Normalerweise nimmt man dafür einen normalen Link. Dann geht's ohne Neuladen der Seite...

Ohne den Anchor würde es per Javascript gehen, indem Du "scrollIntoView()" aufrufst mit dem DOM-Element, das angezeigt werden soll.

https://www.w3schools.com/jsref/met_element_scrollintoview.asp

Ollig00 
Fragesteller
 08.11.2019, 09:24

In welchem Sinne einen normalen Link? Die Seite beinhaltet viel Content und die Form ist weit unten. Logischerweise möchte ich nach Absenden zu dieser Form scrollen/navigieren.

Ich habe mal gelesen, dass es die Möglichkeit gibt, den Submit im Hintergrund laufen zu lassen, das dann ohne neu laden wäre. Aber wie würde das dann funktionieren?

MfG

0
Ollig00 
Fragesteller
 08.11.2019, 09:28
@ohwehohach

Super, das sieht schon mal nach etwas Richtigem aus! Danke Dir!

0