Mischa: Weiterleitungsprobleme mit PHP

Hallo SelfForumler,

ich habe an euch eine Frage, die mich momentan stark beschäftigt und auf die ich bislang keine Lösung gefunden habe:

Ich habe eine PHP-Datei 'page.php' geschrieben, welche in einem Frameset als Standardseite ausgeführt wird. Sie enthält ein grafisches Grundgerüst und fügt automatisch die Inhalte einer Datenbank an die gewünschten Stellen ein (Überschrift, Untertitel, Haupttext usw.). Nun habe ich eine zweite Datei 'team.php' angelegt, welche genau dann (und nur dann!) aufgerufen werden soll, wenn die Variable $nr gesetzt ist (also wenn isset($nr)=true) UND die Variable $cat=3 ist. Wichtig dabei ist, dass die 'team.php' in diesem Fall STATT (dem Rest) der 'page.php' ausgeführt wird. Ich habe also an den Beginn meiner 'page.php' folgenden Code geschrieben:

if ($cat = 3 && isset($nr)) {
        header('Location: team.php?nr=$nr');
        exit;
}

Rufe ich nun die Seite 'page.php' auf, ohne eine Variable $nr zu setzen, so ergeben sich, so bekomme ich eine Fehlermeldung
"Warning: Supplied argument is not a valid MySQL result resource [...]"
und die Inhalte der Datenbank werden nicht mehr eingefügt. Rufe ich die Seite 'page.php?nr=1234' auf, so wird die 'team.php' ausgegeben, OBWOHL die $cat != 3 ist!!!

Habe ich da irgendwo einen großen Fehler gemacht oder warum funktioniert das nicht? Sobald ich die o.g. vier Zeilen aus meiner 'page.php' lösche, klappt wieder alles einwandfrei (für mich ein Mysterium...).

Gibt es vielleicht noch eine andere Möglichkeit außer header(), einen "Seitenswitch" einzubauen - also im Fall 1 auf die Seite 1 im Frame zu laden und im Fall 2 die Seite 2?! Wie gesagt handelt es sich hierbei um KOMPLETTE PHP-Seiten - include() ist also nicht angebracht.

Übrigens: Die Seite, auf der das Problem auftaucht, findet ihr hier:
http://www.youth-page.de/master/page.php

Danke für eure Hilfe bereits im Voraus.

Viele Grüße,
Mischa

--
=========================
www.youth-page.de
www.mischa-hildebrand.de
  1. Nabend,

    Ich habe eine PHP-Datei 'page.php' geschrieben, welche in einem Frameset

    Wenn du schon PHP zur Verfügung hast, warum verwendest du dann noch Frames?

    if ($cat = 3 && isset($nr)) {

    "$cat = 3" sollte eigentlich immer TRUE zurückliefern, nicht jedoch "$cat == 3" oder gar "$cat === 3", siehe: http://www.php3.de/operators.

    header('Location: team.php?nr=$nr');

    header('Location: ') erwartet eine absolute URI. Wenn die Weiterleitung so funktionieren sollte, dann ist es ein toller Service, auf den du dich allerdings nicht verlassen solltest.

    http://www.youth-page.de/master/page.php

    </faq/#Q-19>

    Danke für eure Hilfe bereits im Voraus.

    Ich denke einmal, dass es der Fehler mit dem falschen Operator ist. Falls nicht, melde dich auch noch einmal ;)

    Bis denne,

    1. Hallo,

      Ich habe eine PHP-Datei 'page.php' geschrieben, welche in einem Frameset
      Wenn du schon PHP zur Verfügung hast, warum verwendest du dann noch Frames?

      Weil ich damit erreichen kann, dass gewisse grafische Elemente (wie Header und Footer) immer angezeigt werden und der Scrollbalken innerhalb anderer HTML-Elemente angezeigt wird. Wüsste keine Möglichkeit, wie sich so etwas mit PHP realisieren lässt...

      if ($cat = 3 && isset($nr)) {
      "$cat = 3" sollte eigentlich immer TRUE zurückliefern, nicht jedoch "$cat == 3" oder gar "$cat === 3", siehe: http://www.php3.de/operators.

      Mannomann - hätte nich gedacht, dass ich auf sowas nochmal reinfalle! Klar, da hat ein '=' gefehlt. Ich sitze daran seit gestern abend und hab's nicht gemerkt. *peinlich*

      header('Location: team.php?nr=$nr');
      header('Location: ') erwartet eine absolute URI. Wenn die Weiterleitung so funktionieren sollte, dann ist es ein toller Service, auf den du dich allerdings nicht verlassen solltest.

      Hmmmm... das wusste ich nicht und da's funktioniert, hat's mich bislang auch nicht weiter gestört. Werde das aber ändern, weil dies vermutlich dann Browser-abhängig ist, oder?

      http://www.youth-page.de/master/page.php
      </faq/#Q-19>

      Sorry, so besser? => http://www.youth-page.de/master/page.php

      Ich denke einmal, dass es der Fehler mit dem falschen Operator ist. Falls nicht, melde dich auch noch einmal ;)

      Jep. Genau das war's. Danke für's Drüberschauen! Ich wäre vermutlich zwei Wochen nicht drauf gekommen...

      Grüße,
      Mischa

      --
      =========================
      www.youth-page.de
      www.mischa-hildebrand.de
      1. Hallo,

        Wenn du schon PHP zur Verfügung hast, warum verwendest du dann noch Frames?

        Weil ich damit erreichen kann, dass gewisse grafische Elemente (wie Header und Footer) immer angezeigt werden und der Scrollbalken innerhalb anderer HTML-Elemente angezeigt wird. Wüsste keine Möglichkeit, wie sich so etwas mit PHP realisieren lässt...

        Du hast doch hoffentlich schon begriffen,
        wo PHP zum Einsatz kommt und wo nicht? ;-)
        Client-seitig hast Du HTML und CSS zur Verfuegung.
        Damit kann man auch "Frames-Layout" nachbauen.

        Ich persoenlich halte aber gerade diese Layouts mit
        fixen, nicht wegscrollbaren Bereichen fuer
        nervige "Platzverschwendung" bei kleinen Bildschirmen,
        sogar fuer schlimmer als Frames (die man wenigstens
        scrollen konnte, selbst wenn sie keinen Scrollbar
        anboten, wenn man in den Frame klickte und dann
        die Cursor-Tasten betaetigte).
        Dieser Blogger spricht mir aus der Seele:
        http://www.worldtimzone.com/blog/date/2002/09/19

        Wenn Du trotzdem sowas basteln willst, weil Du
        ein Design-Fetischist bist und arroganterweise
        davon ausgehst, dass alle Deine Besucher sowieso
        einen 1600x1200 Schirm haben (das "ich kenne meine
        Zielgruppe" Voruruteil), dann versuch' Dein
        Glueck mit position:fixed (fuer Browser) und
        den Workarounds (fuer den MS IE).

        http://www.jendryschik.de/wsdev/css/fixed/
        http://imfo.ru/csstest/fixed/fixed.htm
        http://devnull.tagsoup.com/fixed/
        http://www.456bereastreet.com/lab/cssframes/
        u.s.w., siehe </archiv/> und
        http://www.google.com/search?q=frames+"position%3Afixed"+css

        header('Location: ') erwartet eine absolute URI.
        Werde das aber ändern, weil dies vermutlich dann Browser-abhängig ist, oder?

        Es ist einfach falsch gemaess der HTTP Specification (RFC 2616)
        http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30

        Jetzt weisst Du, wie es richtig geht.
        Wenn Du es weiterhin falsch machst, ist das nicht fahrlaessig,
        sondern absichtlich...

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/