Dee_ee: empty tabelle

Hallo Leute,

ich stehe vor einem Problem,

und zwar soll die Tabelle Infos: angezeigt werden, wenn mind. 1 von den nachstehenden werten vorhanden ist, ansonsten soll sie nicht angzeigt werden...

Es ist ein Profil, welches so aussehen soll:

Info
MSN
ICQ

Wenn der User halt in sein Profil kein MSN oder ICQ Einträgt ist ja die Infos: Zeile unnötig und soll nicht erscheinen...
Ich habs mal nachstehend probiert, aber Infos: erscheint trotzdem noch..

PHP-Code:
if (!empty($uinfo)) echo "<td>Infos:</td>\n";

if (!empty($uinfo['user_msn'])) echo "<tr valign="top"><td" . _MSNM . ":</td> <td>" . PrepareToDisplay($uinfo['user_msnm']) . "</td></tr>\n";

if (!empty($uinfo['user_icq'])) echo "<tr valign="top"><td" . _ICQ . ":</td> <td>" . PrepareToDisplay($uinfo['user_icq']) . "</td></tr>\n";

LG

  1. Moin!

    Ich habs mal nachstehend probiert, aber Infos: erscheint trotzdem noch..

    Vermutlich, weil die Variablen nicht das enthalten, was du erwartest (nämlich etwas, was empty als leer klassifiziert). Hast du das schon mal mit var_dump() überprüft?

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Moin!

      Vermutlich, weil die Variablen nicht das enthalten, was du erwartest (nämlich etwas, was empty als leer klassifiziert). Hast du das schon mal mit var_dump() überprüft?

      • Sven Rautenberg

      Hallo Sven, danke für deine Antwort.
      Den Befehl kannte ich jetzt auch noch nicht, bin noch Anfänger, habe jetzt mal var_dump($uinfo); unter die Tabelle eingegeben und da kam so einiges, da meine Tabelle wesentlich grösser ist, ich habe nur als kurzes Beispiel MSN und iCQ genannt..
      Hier mal ein Beispiel, immer mit so einen string tag folgend

      ["user_icq"]=>  string(0)

      Hilft uns das weiter?

      1. Hi,

        ["user_icq"]=>  string(0)
        Hilft uns das weiter?

        ja, das besagt nämlich, dass Deine Variable $uinfo etwas enthält, und zwar mindestens den Key 'user_icq'. Damit ist Deine Prüfung auf empty() hinfällig.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          ["user_icq"]=>  string(0)
          Hilft uns das weiter?

          ja, das besagt nämlich, dass Deine Variable $uinfo etwas enthält, und zwar mindestens den Key 'user_icq'. Damit ist Deine Prüfung auf empty() hinfällig.

          Cheatah

          Hallo Cheatah,

          ich habs jetzt mal so probiert, meintest du das so? aber es klappt leider immer noch nicht.. die tabelle infos erscheint trotzdem, wenn kein msn oder icq angegeben ist..

          if (empty($uinfo['user_msnm']) || empty($uinfo['user_icq']) echo "<td>Infos:</td>\n";

          und dann die beiden ausgabetabellen wieder dran:
          if (!empty($uinfo['user_msn'])) echo "<tr valign="top"><td" . _MSNM . ":</td> <td>" . PrepareToDisplay($uinfo['user_msnm']) . "</td></tr>\n";

          if (!empty($uinfo['user_icq'])) echo "<tr valign="top"><td" . _ICQ . ":</td> <td>" . PrepareToDisplay($uinfo['user_icq']) . "</td></tr>\n";

          1. Hi,

            ich habs jetzt mal so probiert, meintest du das so?

            ja, abgesehen davon, dass die Logik nicht so ganz stimmt. Wenn der User entweder MSNM oder ICQ (oder beides) ausgelassen hat, sollen die Daten angezeigt werden?

            aber es klappt leider immer noch nicht.. die tabelle infos erscheint trotzdem, wenn kein msn oder icq angegeben ist..

            Überlege Dir, wie die Bedingung wirklich lauten muss. Wenn es Dir hilft, formuliere sie zunächst in klarem Deutsch.

            und dann die beiden ausgabetabellen wieder dran:

            Neben dem Umstand, dass der von Dir erzeugte HTML-Code defekt ist, ist Dein gesamter Code zudem ein bisschen auf Zufall aufgebaut. Überlege Dir, welche Bedingung erfüllt sein muss, und mache die *gesamte* Ausgabe (auch) davon abhängig. Allgemeiner Rat: Bei jedem if, bei jedem for, und überhaupt bei allem, auf das regelmäßig Code-Blöcke folgen, notiere *immer* komplette Code-Blöcke. Lasse *nie* die geschweiften Klammern weg.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. ja, abgesehen davon, dass die Logik nicht so ganz stimmt. Wenn der User entweder MSNM oder ICQ (oder beides) ausgelassen hat, sollen die Daten angezeigt werden?

              nein, so meinte ich das nicht, es geht mir um die Tabellenüberschrift ---> Info:

              Info:
              MSN: wenn vorhanden, erscheint hier die msn adresse
              ICQ: wenn vorhanden, erscheint hier die icq adresse

              das klappt ja soweit alles ganz gut mit den Zeilen MSN und ICQ.. wenn der User weder msn noch eine icq Adresse angibt, wird die tabelle MSN und ICQ komplett nicht mehr angzeigt, so soll es auch sein.. also die Zeilen MSN und ICQ fallen weg..

              Mein Problem ist halt die Tabelle darüber, welche INFO lautet.. Diese ist ja dann unnötig, wenn die Zeilen dadrunter nicht mehr bestehen..

              Irgendwo habe ich einen Denkfehler.. ich bekomme es einfach nicht zusammen, wie bei Wegfall der unteren Werte, auch die Überschrift mit verschwindet.

              ::::::::

              Wenn die Werte der unteren Reihe vorhanden sind, dann zeige die Überschrift, wenn nicht, erscheine erst überhaupt nicht..

              if .. else ...

              :( menno, es will nicht, wie ich will

              if ($uinfo) echo "<td>Infos:</td>\n"; {

              if (!empty($uinfo['user_msn'])) echo "<tr valign="top"><td" . _MSNM . ":</td> <td>" . PrepareToDisplay($uinfo['user_msnm']) . "</td></tr>\n";
                             if (!empty($uinfo['user_icq'])) echo "<tr valign="top"><td" . _ICQ . ":</td> <td>" . PrepareToDisplay($uinfo['user_icq']) . "</td></tr>\n";
              }

              1. Hi,

                ja, abgesehen davon, dass die Logik nicht so ganz stimmt. Wenn der User entweder MSNM oder ICQ (oder beides) ausgelassen hat, sollen die Daten angezeigt werden?
                nein, so meinte ich das nicht,

                dies hattest Du aber mit Deinem Code ausgedrückt.

                es geht mir um die Tabellenüberschrift ---> Info:

                *Mir* ist absolut klar, worum es Dir geht. Dem einzigen, dem Du es noch erklären musst, ist Dein PHP-Script.

                Mein Problem ist halt die Tabelle darüber, welche INFO lautet.. Diese ist ja dann unnötig, wenn die Zeilen dadrunter nicht mehr bestehen..

                Wann *exakt* bestehen die Zeilen darunter nicht? Formuliere dies so, dass 100% aller betreffenden Fälle abgedeckt sind - nicht weniger, und auch nicht mehr. Übersetze diese Formulierung anschließend in die Grammatik von PHP.

                if ($uinfo) echo "<td>Infos:</td>\n"; {
                      if (!empty($uinfo['user_msn'])) echo "<tr valign="top"><td" . _MSNM . ":</td> <td>" . PrepareToDisplay($uinfo['user_msnm']) . "</td></tr>\n";
                               if (!empty($uinfo['user_icq'])) echo "<tr valign="top"><td" . _ICQ . ":</td> <td>" . PrepareToDisplay($uinfo['user_icq']) . "</td></tr>\n";

                Dieser Code produziert, selbst wenn er in Deinem Sinne funktionieren würde, keinesfalls sinnvollen HTML-Code. Korrigiere dies!

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. ich weiss ja das du mir auf deine art nur in die richtige codierung leiten willst, aber ich gebe es jetzt auf.. ist ja nicht so das ich ein paar min. dran knacke, sondern schon länger.. es nervt mich jetzt nur noch, dass ich es selber nicht hinbekomme..
                  alles gute..