Ankündigung

Einklappen
Keine Ankündigung bisher.

[gelöst] Tabellenüberschrift ausblenden, wenn Tabelleninhalt leer ist

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [gelöst] Tabellenüberschrift ausblenden, wenn Tabelleninhalt leer ist

    Hallo.
    Ich habe eine Tabelle mit mehreren Einträgen.
    Wenn nun ein Eintrag leer ist, möchte ich die Tabellenüberschrift ausblenden.
    PHP-Code:
    <tr>
    <th class="Titel">Model</th>
    </tr>
    <tr>
    <td class="Inhalt"><?php echo htmlspecialchars($result[3]); ?></td>
    </tr>

    <tr>
    <th class="Titel">Color</th>
    </tr>
    <tr>
    <td class="Inhalt"><?php echo htmlspecialchars($result[4]); ?></td>
    </tr>
    Wenn oben z. Bsp. die Farbe fehlt (also $result[4] leer ist), soll die Tabellenüberschrift "Color" nicht in der Tabelle auftauchen.

    Ich habe es folgendermaßen versucht, doch die Überschrift wird dennoch eingeblendet.
    PHP-Code:
    <?php if(isset($result[4]))
    echo 
    '
    <tr>
    <th class="Titel">Color</th>
    </tr>'
    ;
    ?>
    <tr>
    <td class="Inhalt"><?php echo htmlspecialchars($result[4]); ?></td>
    </tr>
    Kann mir bitte jemand auf die Sprünge helfen?
    PHP Version: 7.0.21 - XAMPP v3.2.2 - Win7 64bit - IQ >> 250 - Ansonsten: Einfach nur ein toller Typ.

  • #2
    Deine Tabelle ist falsch.
    Tabellenüberschriften werden horizontal also nebeneinander angeordnet und nicht untereinander.
    tr steht dabei für table row,= Tabellenzeile
    Ausserdem gibt es noch thead und tbody sowie tfooter um eine Tabelle ansprechend zu gestalten.

    Wo kommen die Daten denn her, wenn aus einer Datenbank, dann frag doch die Datenbank ob dort was drin steht, wenn aus einer Datei, oder einer API, dann musst du das wohl erst mal in ein Array überführen, damit du weisst ob die Spalte auch bis zum Ende leer ist, denn sonst brauchst du die Überschrift ja.

    Das sollte erst mal geklärt werden.

    Kommentar


    • #3
      Korrektur:
      Statt Tabellenüberschrift nun Tabelleneintrag.
      Das Design des Tabelleneintrags, welche ich Tabellenüberschrift nannte, bezieht die Formatierungsinformationen aus class="Titel" und unterscheidet sich somit vom darauffolgenden Eintrag mit Designvorlage class="Inhalt".
      Also, Tabelleneintrag
      PHP-Code:
      <tr><td class="Inhalt"><?php echo htmlspecialchars($result[4]); ?></td></tr>
      verschwindet samt Tabellenzeile, wenn $result[4] leer ist.
      Darauffolgender Tabelleneintrag, welche keine Variable enthält, hier z. Bsp.
      PHP-Code:
      <tr><th class="Titel">Color</th></tr
      verschwindet nicht.
      Ich würde ja gerne ein "Workaround" ausarbeiten, wie vorgeschlagen, wenn ich es könnte. Nicht umsonst habe ich mich hier in der Anfängersektion gemeldet.
      Ich vermute
      PHP-Code:
      if(isset($result[4])) { echo '...'
      ist ein richtiger Ansatz, doch irgendwie falsch ausgeführt.
      PHP Version: 7.0.21 - XAMPP v3.2.2 - Win7 64bit - IQ >> 250 - Ansonsten: Einfach nur ein toller Typ.

      Kommentar


      • #4
        Es scheint als hättest du nichts von dem was ich schrieb verstanden.
        Es geht nicht um die Darstellung und das Design, sondern dein HTML ist kaputt.
        Verwende den Validator um deinen HTML Code auf Fehler zu untersuchen.
        Schau dir mal an wie HTML Tabellen aussehen müssen.

        EDIT:
        Die Frage nach der Herkunft der Daten hast du auch nicht beantwortet.

        Kommentar


        • #5
          Nachdem du die Tabelle validiert hast kannst du es so machen wie protestix es sagt oder mit javascript checken ob ein value vorhanden ist.

          Kommentar


          • #6
            Da gibt es zusätzlich noch empty ...

            Das löst das Problem aber nur halbherzig.

            Sollten die Daten aus einer Datenbank kommen und Du hast dort das Feld Color abgefragt ist die Variable gesetzt aber leer. Du solltest Dich mal mit Normalisierung befassen. Es macht keinen Sinn ein Feld mitzuschleifen welches ggf. leer sein kann. Du musst dann jedes Feld nochmal prüfen, bevor Du die Tabelle ausgibst, wo soll das hinführen...

            Kommentar


            • #7
              Zitat von chim Beitrag anzeigen
              Nachdem du die Tabelle validiert hast kannst du es so machen wie protestix es sagt oder mit javascript checken ob ein value vorhanden ist.
              Bitte nicht, dass sind doch billige Workarounds.

              Kommentar


              • #8
                Zitat von kaminbausatz Beitrag anzeigen

                Bitte nicht, dass sind doch billige Workarounds.
                Wir kennen das Projekt doch nicht, wenn er Daten dynamisch hinzufügt, kann javascript von Vorteil sein.

                Kommentar


                • #9
                  Ich habe Dich schon verstanden, aber ich habe Deine Antwort ignoriert, denn das Ergebnis meines Codes sieht für mich funktionell und ansprechend aus. Siehe Bild unten.
                  Dort sind die dunklen Felder mit heller Schrift meine Überschriften (im Folgenden Titelzeile genannt) und die hellen Felder mit dunkler Schrift die Einträge (Ergebniszeile genannt), die ich per Variable einfüge.
                  Wenn eine dieser Variablen leer ist, verschwindet die Ergebniszeile, doch die Titelzeile bleibt angezeigt. Wenn viele dieser Ergebniszeileneinträge fehlen, habe ich eine Ausgabe voller Titelzeilen. Das möchte ich vermeiden.
                  Wenn bisher noch keine Daten vorliegen, soll die Webseite nur die "Database update"-Titelzeile und die "Database update"-Ergebniszeile anzeigen.
                  Ich habe nur Schwierigkeiten, diesen im Internet gefundenen Code zu modifizieren, da ich PHP allein durch diese eine Vorlage kenne.
                  Webseiten sind nicht mein Fachgebiet. Programmieren ist nicht mein Fachgebiet. Darum konnte ich mit den bisherigen Antworten nichts anfangen.

                  PHP Version: 7.0.21 - XAMPP v3.2.2 - Win7 64bit - IQ >> 250 - Ansonsten: Einfach nur ein toller Typ.

                  Kommentar


                  • #10
                    PHP-Code:
                        <tr>
                            <th class="Titel">Model</th>
                        </tr>
                        <tr>
                            <td class="Inhalt"><?php echo htmlspecialchars($result[3]); ?></td>
                        </tr>
                    <?php if (isset($result[4]) && $result[4] !== '' && $result[4] !== null): ?>
                        <tr>
                            <th class="Titel">Color</th>
                        </tr>
                        <tr>
                            <td class="Inhalt"><?php echo htmlspecialchars($result[4]); ?></td>
                        </tr>
                    <?php endif; ?>
                    Deine Tabelle sieht ein bisschen komisch aus^^' Sollten die Felder "Bezeichnung" und "Wert" nicht lieber nebeneinander stehen?
                    edit: nvm, Bild jetzt gesehen :>

                    Jedenfalls sieht es für mich so aus, als hättest du nur eine der Zeilen ausgeblendet, die zweite mit dem Wert drin aber nicht.
                    Ich habe das isset() jetzt noch ergänzt um zu prüfen ob in dem Array-Feld auch wirklich etwas steht Musst du je nach möglichen Werten anpassen. empty() würde auch 0 als Wert ausschließen, aber damit könntest du sonst auch noch arbeiten.
                    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                    Kommentar


                    • #11
                      Zitat von kaminbausatz Beitrag anzeigen
                      Es macht keinen Sinn ein Feld mitzuschleifen welches ggf. leer sein kann. Du musst dann jedes Feld nochmal prüfen, bevor Du die Tabelle ausgibst, wo soll das hinführen...
                      Ja, da sind noch viele Baustellen...


                      Kommentar


                      • #12
                        Zitat von trashcode Beitrag anzeigen
                        Ich habe Dich schon verstanden, aber ich habe Deine Antwort ignoriert, denn das Ergebnis meines Codes sieht für mich funktionell und ansprechend aus.


                        Kommentar


                        • #13
                          Webseiten sind nicht mein Fachgebiet. Programmieren ist nicht mein Fachgebiet. Darum konnte ich mit den bisherigen Antworten nichts anfangen.
                          Ja und jetzt?
                          Ich sach ma, such dir jemanden, der das für dich erledigt.

                          NB. Du hast keine Tabelle, sondern eine Liste, vergl. Einkaufsliste vs. Bundesligatabelle..

                          Kommentar


                          • #14
                            Zitat von chim Beitrag anzeigen

                            Wir kennen das Projekt doch nicht, wenn er Daten dynamisch hinzufügt, kann javascript von Vorteil sein.
                            Schau Dir den Code an, da ist nichts dynamisches....

                            Das Übel ist das falsche Datenbankdesign. Leere Daten abzurufen, zu senden und sie nachher wieder per Javascript verschwinden zu lassen ist doch Unsinn.

                            Ich finde es nicht gut, Anfänger mit solchen Tipps zu verwöhnen.

                            Kommentar


                            • #15
                              [LÖSUNG]

                              Hallo Leute.
                              Meine Frage ist zu meiner "vollsten" Zufriedenheit von VPh beantwortet worden.Folgende Ergänzung tut genau das, was ich mir vorgestellt und gewünscht habe
                              PHP-Code:
                              <?php if (isset($result[4]) && $result[4] !== '' && $result[4] !== null): ?>
                              <tr><th class="Titel">Color</th></tr>
                              <tr><td class="Inhalt"><?php echo htmlspecialchars($result[4]); ?></td></tr>
                              <?php endif; ?>
                              Vielen Dank auch an all die anderen, deren Vorschläge ich mangels Kenntnissen weder verstehen noch befolgen konnte.
                              Dies war die erste von drei Modifikationen, die meine Kenntnisse übersteigen. Sollten auch die beiden folgenden Anfragen so schön gelöst werden, habe ich mich tatsächlich tagelang umsonst strapaziert, denn außer dem Umgang mit xampp ist nichts hängengeblieben.
                              Vielen, vielen Dank an VPh für die elegante Lösung.
                              PHP Version: 7.0.21 - XAMPP v3.2.2 - Win7 64bit - IQ >> 250 - Ansonsten: Einfach nur ein toller Typ.

                              Kommentar

                              Lädt...
                              X