Patrick: Bei falscher ID => weiterleiten?

Hallo zusammen,

ich habe eine PHP Seite gemacht bei der die Variable $id
per get übergeben wird. Jetzt will ich eine Abfrage machen,
dass wenn es keinen Datensatz in der DB gibt, der auf die
Variable $id zeigt, soll zur Startseite weitergeleitet werden.

Ich habe folgenden Quelltext:

if (!mysql_result($result,0,'id')) // Falls ungültige ID eingegeben wird, gehe zur Startseite
{
echo "<META HTTP-EQUIV=Refresh Content=1; URL='index.html'>";
};

Er geht jedoch immer wieder auf die gleiche Seite, d.h. wenn die ID 5000
eingegeben wird und diese ist nicht vorhanden, geht er immer wieder auf die Seite mit der ID 5000. Woran liegt das?

Danke für Eure Hilfe!

Gruß

Patrick

  1. Hi,

    Er geht jedoch immer wieder auf die gleiche Seite, d.h. wenn die ID 5000
    eingegeben wird und diese ist nicht vorhanden, geht er immer wieder auf die Seite mit der ID 5000. Woran liegt das?

    entweder daran, dass das Result-Set an sich gültig ist (nur eben leer); oder daran, dass der erzeugte HTML-Code ein syntaktischer Krampf ist. Anführungszeichen, mein Freund! In <meta> gibt es kein URL-Attribut, und "1;" ist als Wert für das Content-Attribut hier äußerst nutzfrei. Zudem behaupte ich einfach mal, dass es die URL "http://dein-server/wo/auch/immer/'index.html'" nicht gibt. Beachte bitte ferner, dass der HTTP-Header "Location" (zu dem dieser http-equiv-<meta>-Tag äquivalent ist) eine *absolute* URL erfordert, keine relative URI.

    Cheatah

    --
    X-Will-Answer-Email: No
  2. Tja ... also erstmal würde ich das Meta-Refresh rausschmeißen und lieber Header-Location verwenden:
    if(...) header("Location: index.html");

    So, und dann wäre ja deine SQL-Abfrage mal interssant. Ich würde das Script nämlich eher so schreiben:
    $sql = "SELECT id FROM Tabelle_blabla WHERE id=$id";
    $result = mysql_query($sql, $connection);
    if(mysql_num_rows($result)==0) // ID nicht gefunden
    {
    // MySQL nicht vergessen zu schließen
    mysql_close($connection);
    header("Location: index.html");
    }

    MfG, Kay

    1. Hi,

      if(...) header("Location: index.html");

      [pref:t=37824&m=207067], letzter Satz.

      Cheatah

      --
      X-Will-Answer-Email: No
      1. Moin, Man könnte das ja auch mit htaccess machen oder? z.B. so:

        RewriteEngine  on RewriteCond %{REQUEST_FILENAME}   !-s RewriteRule /* http://www.einedomain.de/sonicht.html [R,L]

        Grüsse vom Alain

        --
        ...nobody is perfect I am nobody
        1. Hi,

          Man könnte das ja auch mit htaccess machen oder?

          woher soll die Konfiguration eines HTTP-Servers wissen, welche Inhalte irgend eine Datenbank besitzt?

          Cheatah

          --
          X-Will-Answer-Email: No
          1. Moin,

            woher soll die Konfiguration eines HTTP-Servers wissen, welche Inhalte irgend eine Datenbank besitzt?

            stimmt, naja ich tus ja auch nur mit html und nicht mit datenbanken, war vielleicht zu voreilig damit. Ich sehs aber dennoch einfacher sowas mit htaccess und gewöhnlicher html zu realisieren als mit php id etc..

            Grüsse vom Alain

        2. Oh Gott!!! Warum einfach wenn's auch kompliziert geht :-)

          MfG, Kay