Mischa: Muss der Code in einer Zeile stehen?

Hallo,

ich bin eben mal wieder auf ein merkwürdiges Problem gestoßen, welches mir schon in der Vergangenheit zu schaffen gemacht hat (=> http://forum.de.selfhtml.org/archiv/2003/9/56916/#m318303) - diesmal kann ich es allerdings nicht auf die damalige Art und Weise lösen!

Angenommen, ich habe eine Grafik zweimal untereinander in der folgenden Tabelle verwandt:

<table cellspacing="0" cellpadding="0">
  <tr>
    <td style="height:50px">
    <a href="..."><img src="..." style="height:50px"></a>
    </td>
  <tr>
  <tr>
    <td style="height:50px">
    <a href="..."><img src="..." style="height:50px"></a>
    </td>
  <tr>
</table>

Dann gibt mir sowohl Netscape, als auch der IE die beiden Grafiken untereinander aus - allerdings mit einem unerwünschten kleinen weißen Abstand von etwa 2px Höhe! Dieses Problem kann ich beheben, indem ich ein den gesamten Inhalt der Tabellenzellen in eine Zeile schreibe, sodass ich als Quelltext folgendes erhalte:

<table cellspacing="0" cellpadding="0">
  <tr>
    <td style="height:50px"><a href="..."><img src="..." style="height:50px"></a></td>
  <tr>
  <tr>
    <td style="height:50px"><a href="..."><img src="..." style="height:50px"></a></td>
  <tr>
</table>

Das hat nun aber zwei Nachteile:
1. Es seiht einfach unschön aus und ist sehr sehr unübersichtlich.
2. Wenn ich zwischen dem <td>- und dem </td>-Tag ein Bild mit Hilfe von PHP ausgeben möchte (und das möchte ich), lässt sich ein Zeilenumbruch im Quelltext schon gar nicht vermeiden!

Welche Lösungen gibt es aus diesem Misère bzw. GIBT es Lösungen?
(ein <br> nach dem Bild funktioniert leider hier nicht)

Viele Grüße,
Mischa

--
=========================
www.youth-page.de
www.mischa-hildebrand.de
  1. hallo

    <table cellspacing="0" cellpadding="0">
      <tr>
        <td style="height:50px">
        <a href="..."><img src="..." style="height:50px"></a>
        </td>
      <tr>
      <tr>
        <td style="height:50px">
        <a href="..."><img src="..." style="height:50px"></a>
        </td>
      <tr>
    </table>

    wo ist denn </tr>?

    m.tietz

    1. Hallo,

      hallo

      <table cellspacing="0" cellpadding="0">
        <tr>
          <td style="height:50px">
          <a href="..."><img src="..." style="height:50px"></a>
          </td>
        <tr>
        <tr>
          <td style="height:50px">
          <a href="..."><img src="..." style="height:50px"></a>
          </td>
        <tr>
      </table>

      wo ist denn </tr>?

      m.tietz

      Sorry, kleiner Tippfehler - jeweils das zweite <tr> muss logischerweise ein </tr> sein. Das hat aber nichts mit dem Problem zu tun, da ich den Code nicht kopiert, sondern nur beispielhaft hier rein getippt hab...

      Viele Grüße,
      Mischa

      --
      =========================
      www.youth-page.de
      www.mischa-hildebrand.de
  2. Hallo!

    <table cellspacing="0" cellpadding="0">
      <tr>
        <td style="height:50px"><a href="..."><img src="..." style="height:50px"></a></td>
      </tr>
      <tr>
        <td style="height:50px"><a href="..."><img src="..." style="height:50px"></a></td>
      </tr>
    </table>

    sollte das Problem lösen ;)

    Gruß

    Mastershrimp

    1. Hallo SelfForumler,

      Hallo!

      <table cellspacing="0" cellpadding="0">
        <tr>
          <td style="height:50px"><a href="..."><img src="..." style="height:50px"></a></td>
        </tr>
        <tr>
          <td style="height:50px"><a href="..."><img src="..." style="height:50px"></a></td>
        </tr>
      </table>

      sollte das Problem lösen ;)

      Nein, löst es leider nicht - war nur ein Tippfehler hier im Forum, wie gesagt...

      Viele Grüße,
      Mischa

      --
      =========================
      www.youth-page.de
      www.mischa-hildebrand.de
      1. Ja. Sorry. Hatte ich nach dem Abschicken auch gelesen ;)

        Zu deiner Anfangsfrage kann ich dann allerdings nur sagen:
        Nein, es ist absolut egal, ob der Code in einer, in zwei, oder in x Zeilen steht, solange du keine Tags verzerrst (<T D> wäre falsch). Der Browser liest den Code in einem Rutsch durch und übergeht dabei die Zeilenumbrüche.

        Mir ist so ein Problem auch noch nie untergekommen - obwohl ich viel mit Tabellen arbeite.

        Poste doch mal den Problemcode und deine Browserversion. Vielleicht hilft das uns weiter.

        Gruß

        Mastershrimp

        1. Ja. Sorry. Hatte ich nach dem Abschicken auch gelesen ;)

          Zu deiner Anfangsfrage kann ich dann allerdings nur sagen:
          Nein, es ist absolut egal, ob der Code in einer, in zwei, oder in x Zeilen steht, solange du keine Tags verzerrst (<T D> wäre falsch). Der Browser liest den Code in einem Rutsch durch und übergeht dabei die Zeilenumbrüche.

          Das sollte vielleicht so sein - ist aber bei Weitem nicht so! Sowohl Netscape 7.02 wie auch der IE 6.0 zeigen dieses Verhalten - schreibe ich den gesamten Code in eine Zeile, löst sich das Problem auf.

          Mir ist so ein Problem auch noch nie untergekommen - obwohl ich viel mit Tabellen arbeite.

          Hmmm... bei mir ist es wohl mindestens das zweite Mal...

          Poste doch mal den Problemcode und deine Browserversion. Vielleicht hilft das uns weiter.

          Browserversion siehe oben; Problemcode stammt von der folgenden Seite: => http://www.youth-page.de/master/team.php?nr=0

          und sieht inkl. dem PHP-Code folgendermaßen aus (<table> und </table> hab ich weggelassen, da sich diese zwei Zeilen mehrmals wiederholen):

          if ($status == 1) {
                  echo "
                   <tr>
                    <td style="width:80px;height:45px;"><a href="team.php?nr=$nr">
                    ";

          $filename = 'gfx/cont/images/foto_thumb_' . $nr . '.jpg';
                    if (file_exists($filename)) {
                        echo "<img src="gfx/cont/images/foto_thumb_$nr.jpg" style="width:60px;height:45px" border="0">";
                    }
                    else {
                        echo "<img src="gfx/cont/images/foto_thumb_nofoto.jpg" style="width:60px;height:45px" border="0">";
                    }

          echo "
                    </a></td>
                    <td style="width:150px"><a href="team.php?nr=$nr"><b>$name, $vorname</b></a></td>
                    <td>$funktion</td>
                   </tr>
                   <tr>
                    <td colspan="3" style="vertical-align:top;height:5px;"><img src="gfx/cont/elements/line.gif" style="width:100%;height:1px"></td>
                   </tr>
                  ";
              }

          Viele Grüße,
          Mischa

          --
          =========================
          www.youth-page.de
          www.mischa-hildebrand.de
          1. PS:
            Sorry, ich hatte eben die falsche Datei kurzzeitig hochgeladen, sodass das Problem nicht zu sehen war. Dies ist nun aber wieder der Fall.

            Viele Grüße,
            Mischa

            --
            =========================
            www.youth-page.de
            www.mischa-hildebrand.de
        2. Moin!

          Nein, es ist absolut egal, ob der Code in einer, in zwei, oder in x Zeilen steht, solange du keine Tags verzerrst (<T D> wäre falsch). Der Browser liest den Code in einem Rutsch durch und übergeht dabei die Zeilenumbrüche.

          Es ist nicht absolut egal. Das war es noch nie. Netscape hat auf die mögliche Notwendigkeit, in Tabellenzellen eingebettete Bilder NICHT mit Whitespace zu umrahmen, schon gleich nach Erfindung der Tabellen hingewiesen.

          Du wirst mir Zustimmen, dass auch bei reinem Text ein Unterschied besteht, ob im Quelltext:

          das ist text

          bzw:

          das
          ist
          text

          oder:

          dasisttext

          steht.

          Dementsprechend ist es ein Unterschied, ob im Quelltext

          <td> <img> </td>

          bzw.:
          <td>
          <img>
          </td>

          steht, oder

          <td><img></td>

          Mir ist so ein Problem auch noch nie untergekommen - obwohl ich viel mit Tabellen arbeite.

          Dann packst du keine Grafiken in Tabellen hinein, die nahtlos aneinandergrenzen sollen.

          Das Problem ist bekannt, schon seit Jahren. Es ist eigentlich gar kein Problem. Die Lösung ist einfach realisierbar. Man muß es eben nur wissen.

          - Sven Rautenberg

          --
          Die SelfHTML-Developer sagen Dankeschön für aktuell 21335,05 Euro Spendengelder!
          1. Hallo SelfForumler,

            Du wirst mir Zustimmen, dass auch bei reinem Text ein Unterschied besteht, ob im Quelltext:

            das ist text

            bzw:

            das
            ist
            text

            oder:

            dasisttext

            steht.

            Dementsprechend ist es ein Unterschied, ob im Quelltext

            <td> <img> </td>

            bzw.:
            <td>
            <img>
            </td>

            steht, oder

            <td><img></td>

            Genau das trifft den Nagel auf den Kopf - und ich empfinde dieses Verhalten der Browser als sehr störend, denn aus Gründen der Übersichtlichkeit schreibe ich generell - wo möglich - den abschließenden </td>-Tag in eine neue Zeile. Gerade, wenn man mehr Code zwischen den beiden Tags verwenden (=> PHP) wird das verdammt unübersichtlich!

            Mir ist so ein Problem auch noch nie untergekommen - obwohl ich viel mit Tabellen arbeite.

            Dann packst du keine Grafiken in Tabellen hinein, die nahtlos aneinandergrenzen sollen.

            Das Problem ist bekannt, schon seit Jahren. Es ist eigentlich gar kein Problem. Die Lösung ist einfach realisierbar. Man muß es eben nur wissen.

            Ja, aber gibt es ernsthaft keine andere Lösung, als alles in eine Zeile zu schreiben - ohne Whitespaces usw.?! Falls dem so ist, wundert es mich, dass dieser "Fehler" noch nicht längst korrigiert wurde...

            Viele Grüße,
            Mischa

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

              Ja, aber gibt es ernsthaft keine andere Lösung, als alles in eine Zeile zu schreiben - ohne Whitespaces usw.?! Falls dem so ist, wundert es mich, dass dieser "Fehler" noch nicht längst korrigiert wurde...

              wieso Fehler?
              Wenn ich schreibe <td> inhalt </td> dann wäre es aus meiner Sicht ein Fehler, wenn die Spaces ignoriert würden. Und per Definition werden auch Zeilenumbrüche im Quelltext als Spaces behandelt. Aber bei Dir kommen ja ohnehin zu den Umbrüchen auch noch Einrückungen dazu.

              So wie ich das sehe, produzierst Du aber auch die Spaces selber und völlig unnötig:

              echo "
                       <tr>
                         <td style="width:80px;height:45px;"><a href="team.php?nr=$nr">
                     ";

              Warum setzt Du hier auch das Anführungszeichen in eine Extrazeile?

              freundliche Grüße
              Ingo

            2. Hallo Mischa,

              Ja, aber gibt es ernsthaft keine andere Lösung, als alles in eine Zeile zu
              schreiben - ohne Whitespaces usw.?! Falls dem so ist, wundert es mich, dass
              dieser "Fehler" noch nicht längst korrigiert wurde...

              Es ist nun mal kein Fehler. Es steht sinngemäß im Standard, daß eins oder
              mehrere Leerzeichen und Zeilenumbrüche zu einem Whitespace konvertiert
              werden. Alles, was man machen muß, um dies zu vermeiden, ist, diese
              Regelung in Betracht zu ziehen.

              Tim

            3. Hello,

              Ja, aber gibt es ernsthaft keine andere Lösung, als alles in eine Zeile zu schreiben - ohne Whitespaces usw.?! Falls dem so ist, wundert es mich, dass dieser "Fehler" noch nicht längst korrigiert wurde...

              Ich bin dann immer so brutal und breche mit im Tag zwischen zwei Attributen um.

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            4. Hallo.

              Ja, aber gibt es ernsthaft keine andere Lösung, als alles in eine Zeile zu schreiben - ohne Whitespaces usw.?!

              Doch, verwende Kommentare:
              <tr>
                <td><!--
                  --><img><!--
                --></td>
              </tr>
              MfG, at

  3. Hi !!
    Mach mal <table border="1">, dann siehst du welche style-Anweisung eventuell das Problem loest ...
    Eine zugegeben unprofessionelle Variante waere margin-bottom:-4px !!
    ;o)))

  4. Moin!

    1. Wenn ich zwischen dem <td>- und dem </td>-Tag ein Bild mit Hilfe von PHP ausgeben möchte (und das möchte ich), lässt sich ein Zeilenumbruch im Quelltext schon gar nicht vermeiden!

    Wieso?

    Was hindert dich an: "<td><?php echo $variable; ?></td>"

    Natürlich sollte $variable dann keine Zeilenumbrüche beinhalten. Selbst ein:

    <td><?php

    Tu dies;

    Tu das

    Tu jenes;

    echo $variable;
        ?></td>

    führt nicht zu einem Zeilenumbruch und den durch die Einrückung erzeugten spaces.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  5. Hello,

    ich bin eben mal wieder auf ein merkwürdiges Problem gestoßen, welches mir schon in der Vergangenheit zu schaffen gemacht hat (=> http://forum.de.selfhtml.org/archiv/2003/9/56916/#m318303) - diesmal kann ich es allerdings nicht auf die damalige Art und Weise lösen!

    Angenommen, ich habe eine Grafik zweimal untereinander in der folgenden Tabelle verwandt:

    <table cellspacing="0" cellpadding="0">
      <tr>
        <td style="height:50px">
        <a href="..."><img src="..." style="height:50px"></a>
        </td>
      <tr>
      <tr>
        <td style="height:50px">
        <a href="..."><img src="..." style="height:50px"></a>
        </td>
      <tr>
    </table>

    Naja, auch Browser sind nur von Menschen (gemacht) und meiner Meinung nach sind die sowieso alle Kinderkakke. Wenn ein Assemblerprogrammierer 1982 eine so beschissene Arbeitsqualität abgeliefert hätte, dann wäre er gelyncht worden. Die Browserhersteller (und die Normen-Ersteller hierfür) können sich scheinbar heute jeden Schrott erlauben.

    Bei Bildern gibts eben Sonderregeln. Vor und nach dem Bild-Tag und ggf. seinen Parents keine Whitespaces.

    Ich wette, dass wieder irgendwelche selbsternannten Päpste gegen meine Meinung wettern werden... Aber sind wir doch mal ehrlich, die Quälität dieser ganzen Internettechnologie ist Katastophal. Wird Zeit, dass da endlich mal deutsche[tm] Programmierer zeigen, was sie können!

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
     deutsche[tm] == <I>deutsche[tm]</I>  ?
     Wo bleibt der Widerspruch
    1. Moin!

      Wenn ein Assemblerprogrammierer 1982 eine so beschissene Arbeitsqualität abgeliefert hätte, dann wäre er gelyncht worden. Die Browserhersteller (und die Normen-Ersteller hierfür) können sich scheinbar heute jeden Schrott erlauben.

      Ma! Ich glaube nicht, daß die Assemblerprogrammierer 1982 soviele Normen beachten mussten und so komplizierte Programme geschrieben haben. Die haben oft genug anderen Mist gemacht: zum Bleistift zweistellige Jahreszahlen verwendet... hat die alle jemand gelyncht?

      Übrigens gibts heute noch Assembler- Programmierer....

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Hello,

        Übrigens gibts heute noch Assembler- Programmierer....

        Ja, ich kenne einen. Der hat aber schon immer vierstellige Jahreszahlen benutzt. Hat ihm aber nix genützt, wenn das BIOS da nicht mitmacht.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen