Zur Navigation

Suche soll einen definierten Link öffnen

1 Marko

Hallo

Ich habe eine einfache Suche



<form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" value=""
Seite-1 <a href="http://www.meineseite.de/Seite-1.html"</a>

   <input type="submit" id="search_submit" value="Suchen" />
</form>


Die Seite öffnet, das Suchfenster ist in Funktion, gebe ich Seite-1 ein wird der Link nicht geöffnet.

Es soll explizit diese seite geöffnet werden, es ist keine Suche im normalen Sinn.

Gibt jemand "Mehl" ein soll die Seite Mehl geöffnet werden, also nichts durchsuchen, wohl vermutlich eine .php Datei in der die Links definiert werden?

Gruß
Marko

gruß
Marko

17.03.2017 11:25

2 Jörg

   <input type="text" value=""
Seite-1 <a href="http://www.meineseite.de/Seite-1.html"</a>

Das ist kaputte HTML und kann kein Browser vernünftig verarbeiten.

Ein Text-Input benötigt ein name Attribut und muss wie jedes andere HTML-Element mit einem ">" geschlossen werden.

Der (ebenfalls defekte) Link macht hier keine Sinn.

Gibt jemand "Mehl" ein soll die Seite Mehl geöffnet werden

OK, du möchtest anscheinend so eine Art Weiterleitungsformular. Als Label würde sich hier vielleicht "Seite" eignen:

<form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <label for="seite">Seite</label>
    <input type="text" id="seite" name="seite" value="">
    <input type="submit" id="search_submit" value="Suchen" />
</form>

Gesendet wird das Formular zur selben Seite ($_SERVER['PHP_SELF']), also musst du oben noch eine Überprüfung einbauen, ob das Formular abgesendet wurde, die Seite in einem von dir vordefinierten Array enthalten ist und ggf. zur dazugehörigen URL weiterleiten. Das könnte so ausschauen (ungetestet):

<?php

$seiten = array(
    'mehl' => 'http://example.com/mehl.html',
    'zucker' => 'http://example.com/zucker.html'
);

if (! empty($_GET['seite'])) {
    // Groß- in Kleinbuchstaben umwandeln:
    $seite = strtolower($_GET['seite']);
    if (array_key_exists($seite, $seiten)) {
        header('Location: ' . $seiten[$seite]);
        exit;
    }
}

?>
<!-- HTML-Dokument mit Suchformular -->

17.03.2017 13:25 | geändert: 17.03.2017 13:27

3 Marko

Hallo
Jörg
Danke für die Ausführungen:

Ich habe dies einmal in meiner Seite getestet.

Die Seite öffnet, das Suchfenster ist zu sehen Eingabe "mehl"

Zeigt im Browser

"www.meineseite.de/suche.php?seite=mehl"

Dies wird zugefügt "?seite=mehl"

Es springt aber nicht bei vorhanden sein von "mehl" zur Seite Mehl?

Gruß
Marko

18.03.2017 17:37

4 Jörg

Die Seite öffnet, das Suchfenster ist zu sehen Eingabe "mehl"

Zeigt im Browser

"www.meineseite.de/suche.php?seite=mehl"

Dies wird zugefügt "?seite=mehl"

Soweit scheint es schonmal korrekt zu funktionerien

Es springt aber nicht bei vorhanden sein von "mehl" zur Seite Mehl?

Wird das HTML dadrunter angezeigt oder eine PHP-Fehlermeldung oder nur eine leere Seite?

Der PHP-Code muss ganz oben in der Datei suche.php stehen. Es darf auch keine Leerzeile oder ein oder mehrere Leerzeichen davor stehen, weil andernfalls die Funktion header() nicht ausgeführt wird.

18.03.2017 19:24

5 Marko

Hallo
Jörg

Danke für die Ausführungen, habe den Fehler behoben.

Gruß
Marko

18.03.2017 20:16

Beitrag schreiben (als Gast)





[BBCode-Hilfe]