Gerch2003: If-Anweisung wird nicht erkannt

Hi, ich bins mal wieder

Ich habe die Seite "a.php" auf der Bilder nach Kategorien ausgegeben werden sollen (Typ 1-6).

Um alles übersichtlicher zu gestalten hab ich den Code der Seite "a.php" per include auf mehrere Unterseiten aufgeteilt.

In einer dieser Unterseiten "a-1.php" ist wiederum eine Zeilenfolge, welche mir Bilder ausgibt.
Hier ist auch die besagte If-Anweisung:

if ((string)$typ == "1") {

Diese bezieht sich auf einen Link <a href="?=a&typ=1> mit der der User die Kategorie 1 aufruft.

Nun mein Problem, es wird nicht Kategorie 1 aufgerufen sondern garnichts.
Liegt es vielleicht da dran, dass die If-Anweisung nicht in der Seite "a.php" auf welche sich der Link bezieht, sondern in der Seite "a-1.php" welche ja per include in die Seite "a.php" gepackt wird.

Ich hoffe es ist verständlich was ich hier geschrieben habe.
Wenn nicht werd ich gerne versuchen es nochmal freundlicher zu gestalten.

Gruß

  1. Hallo,

    Hier ist auch die besagte If-Anweisung:

    if ((string)$typ == "1")

    und was steht tatsächlich in $typ? Wo weist du ihm einen Wert zu?

    Diese bezieht sich auf einen Link <a href="?=a&typ=1> mit der der User die Kategorie 1 aufruft.

    Abgesehen davon, dass der namenlose URL-Parameter mit dem Wert "a" so nur schwer adressierbar sein wird, sollte der Wert "1" dann in $_GET['typ'] zu finden sein. Ist das der Fall?

    Nun mein Problem, es wird nicht Kategorie 1 aufgerufen sondern garnichts.

    Verlässt du dich womöglich auf register_globals? Das solltest du dir gar nicht erst angewöhnen.

    Liegt es vielleicht da dran, dass die If-Anweisung nicht in der Seite "a.php" auf welche sich der Link bezieht, sondern in der Seite "a-1.php" welche ja per include in die Seite "a.php" gepackt wird.

    Nein. Includierte Dateien haben genauso Zugriff auf den Datenbestand, als stünde der Code direkt in der Hauptdatei.

    Ciao,
     Martin

    --
    Most experts agree: Any feature of a program that you can't turn off if you want to, is a bug.
    Except with Microsoft, where it is just the other way round.
    1. Also nochmal etwas anders

      Der Url Parameter a heißt eigentlich auch anders, wollte es hier nur etwas vereinfachen.
      Meine Url sieht im grunde so aus:

      www.domain.tld/index.php?main=a&typ=1

      Und mit if ((string)$typ == "1") frage ich ebend ab welcher Typ in der Url über den Link aufgerufen wurde. bzw. gebe zu jedem Typ (1-6) etwas anderes mit if bzw. elseif aus.

      So ist zumindest der Plan, welcher bis jetzt auch immer wunderbar funktioniert hat.

      Nur ebend jetzt nicht.
      Meinst du es ist wirklich nötig den Wert nochmals per $_GET['typ'] abzufragen?
      Hatte ich ja bis jetzt nie benötigt.

      Gruß

      1. Mahlzeit Gerch2003,

        Meine Url sieht im grunde so aus:

        www.domain.tld/index.php?main=a&typ=1

        Und mit if ((string)$typ == "1") frage ich ebend ab welcher Typ in der Url über den Link aufgerufen wurde.

        Nein, tust Du nicht. Du überprüfst, ob in der Variablen $typ etwas enthalten ist, das einem String mit dem Wert "1" entspricht.

        So ist zumindest der Plan, welcher bis jetzt auch immer wunderbar funktioniert hat.

        Definiere "bis jetzt"! Benutzt Du seit kurzem einen anderen Webserver? Hat Dein Webhoster eventuell irgendwelche Einstellungen geändert?

        Meinst du es ist wirklich nötig den Wert nochmals per $_GET['typ'] abzufragen?

        Ja sicher ... wenn Du einen URL-Parameter auf einen bestimmten Wert hin überprüfen willst, wirst Du nicht umhin kommen, seinen Wert auch abzufragen.

        Hatte ich ja bis jetzt nie benötigt.

        Dann hast Du "bis jetzt" offenbar mit veralteten oder kaputten PHP-Installationen gearbeitet.

        Der Martin hatte Dich bereits auf register_globals hingewiesen. Sicher - er hat seinen Hinweis nicht explizit verlinkt (weswegen ich das mal nachgeholt habe) ... aber es sollte doch nicht zu viel verlangt sein, wenn Du Hinweise, die man Dir gibt, einfach mal bei der allwissenden Müllhalde eintippst - gleich der zweite Treffer ist schon sehr hilfreich.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Hi,

        Meinst du es ist wirklich nötig den Wert nochmals per $_GET['typ'] abzufragen?

        Wieso „nochmals”?
        Er wird dir genau dort zur Verfügung gestellt.

        Hatte ich ja bis jetzt nie benötigt.

        Dann bringe dich mal auf den aktuellen Stand.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    2. Hello,

      Diese bezieht sich auf einen Link <a href="?=a&typ=1> mit der der User die Kategorie 1 aufruft.

      Abgesehen davon, dass der namenlose URL-Parameter mit dem Wert "a" so nur schwer adressierbar sein wird, sollte der Wert "1" dann in $_GET['typ'] zu finden sein. Ist das der Fall?

      Nee, nee.
      Ein Name mit 0 Zeichen Länge ist durchaus ein eindeutiger Name.

      Das hatten wir neulich erst... Ich finde es jetzt gerade nicht wieder.

      https://forum.selfhtml.org/?t=192517&m=1284863

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  2. Hello,

    if ((string)$typ == "1") {

    Diese bezieht sich auf einen Link <a href="?=a&typ=1> mit der der User die Kategorie 1 aufruft.

    wie wäre es denn, einfach auf

    if (trim($_GET['typ']) == '1')

    zu prüfen?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de