PHP Script - Problem mit Tabelle im IE

Status
Nicht offen für weitere Antworten.

bobbydigital

Mitglied
Hallo,

ich lasse mir mit PHP Daten aus MYSQL-DB ausgeben.
Genauer gesagt GB-Einträge.
Nun hab ich das Problem, dass die Tabelle mit den Einträgen die ich auf meiner Seite anzeigen will in Firefox normal angezeigt werden, also untereinander und im IE nebeneinander.

Hier mein Code:

PHP:
<?php
       echo '<h5 id="gastform">'.$error.'</h5>';
       mysql_connect('localhost','root','')or die("<h1>Verbindungsfehler</h1>");
       mysql_select_db('bobbydick79_01');
       $SQL2   = "SELECT * FROM guestbook ORDER BY id DESC";
       $ergtab = mysql_query($SQL2);

       while ($data = mysql_fetch_array($ergtab)) {

         echo'
         <table id="gastform" border="0" align="left"  width="100%">
          <tr>
             <td bgcolor="#3C3C3C" valign="top" width="70%"><i>Name:</i>&nbsp;
             <font face="@Arial Unicode MS">'.$data[name].'</font>
             </td>
             <td  width="45" align="right" bgcolor="#3C3C3C">'.substr($data['datum'],8,2).'.'.substr($data['datum'],5,2).'.'.substr($data['datum'],0,4).'
             <br>'.$data[uhrzeit].'&nbsp;
             </td>
          </tr>
          <tr>
             <td colspan="2" valign="top"><br>'.$data[nachricht].'
             </td>
          </tr>
         </table>
       ';
       }
      ?>

Also damit bin ich echt überfordert und würde mich riesig freuen, wenn mir jemand sagen könnte wieso das so ist und wie ich es ändern kann.


Gruss Robert
 
Moin Robert,

ich glaube, mit PHP hat das eher weniger zu tun, ich vermute da eher CSS als Problem-Ursache. Ohne den HTML-Quelltext des Ergebnisses zu sehen, würde ich als erstes nur vorschlagen, dem </table> ein <br /> folgen zu Lassen.
 
Hi,

an dem PHP-Script liegt es nicht, da es serverseitig abläuft und lediglich sein Ergebnis vom Server an den Browser geschickt wird. Dein Problem im IE ist somit eine clientseitige Angelegenheit, weshalb ich den Thread erstmal im HTML-Forum unterbringe.

Der Grund für die horizontale Anordnung der GB-Einträge ist das align=left-Attribut im <table>-Tag, das im IE einer float:left-Deklaration mittels CSS gleichkommt.

Entweder entfernst du es aus der Tabelle, oder du formatierst die Tabellen im zentralen Stylesheet mit clear:left, um ihre Ausrichtung im Textfluß unter der vorherigen Tabelle zu erzwingen.

Übrigens ist ein ID-Bezeichner (#gastform) im HTML-Dokument nur einmalig zulässig.

mfg Maik
 
Also die Ausgabe der Einträge erzeuge ich in dieser PHP-Datei:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>www.leise.de</title>
<meta name="author" content="Robert Klepsch">
<link rel="stylesheet" type="text/css" href="style.css">



</head>
<body>
 <?php
       echo '<h5 id="gastform">'.$error.'</h5>';
       mysql_connect('localhost','root','')or die("<h1>Keine Verbindung zur Datenbank</h1>");
       mysql_select_db('bobbydick79_01');
       $SQL2   = "SELECT * FROM guestbook ORDER BY id DESC";
       $ergtab = mysql_query($SQL2);

       while ($data = mysql_fetch_array($ergtab)) {

         echo'
         <table id="gastform" border="0" align="left"  width="100%">
          <tr>
             <td bgcolor="#3C3C3C" valign="top" width="70%"><i>Name:</i>&nbsp;
             <font face="@Arial Unicode MS">'.$data[name].'</font>
             </td>
             <td  width="45" align="right" bgcolor="#3C3C3C">'.substr($data['datum'],8,2).'.'.substr($data['datum'],5,2).'.'.substr($data['datum'],0,4).'
             <br>'.$data[uhrzeit].'&nbsp;
             </td>
          </tr>
          <tr>
             <td colspan="2" valign="top"><br>'.$data[nachricht].'
             </td>
          </tr>
         </table>
       ';
       }
      ?>

</body>
</html>

Diese Ausgabe lasse ich mir per IFRAME in einer anderen Datei ausgeben, in der auch das GB-Formular ist.

Datei:

PHP:
<?php
if(!empty($_POST['senden'])){
  if(!empty($_POST['nam'])&&!empty($_POST['nach'])&&!empty($_POST['mail'])){
$name = $_POST['nam'];
$mail = $_POST['mail'];
$nach = $_POST['nach'];

mysql_connect('localhost','root','')or die("<h1>Verbindungsfehler</h1>");
mysql_select_db('bobbydick79_01');

$sqltest = "SELECT * FROM guestbook ORDER BY id DESC LIMIT 1";
$sqltest = mysql_query($sqltest);
$test = mysql_fetch_array($sqltest);
if ($test['nachricht']!= $nach) {




  $SQL="INSERT INTO guestbook (id, email, name, nachricht, datum, uhrzeit) VALUES (NULL,'".$mail."','".$name."','".$nach."','".date("y-m-d")."','".date("H:i:s")."')";
  mysql_query($SQL);
}
else
{
$spam = 'Bitte kein Spam!';
}

}else{
$error = 'Bitte alle Felder ausfüllen!';
}
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>www.leise.de</title>
<meta name="author" content="Robert Klepsch">
<link rel="stylesheet" type="text/css" href="style.css">



</head>
<body>
<table  bgcolor="#000000" border="0" cellpadding="0" cellspacing="0" align="center" width="1220px" height="600px" >
    <tr><td  rowspan="4" width="468px" height="100%"><img src="images/versuch_grau.jpg" alt="" width="100%" height="600px"   border="0"></td>
        <td style="background-image:url(images/head.jpg); margin:0; padding:0" align="center" width="752px" height="130px" colspan="3"></td>
    </tr>
    <tr>
      <td height="10px" ><div class="ueberschrift">Navigation</div></td>
      <td align="center"><div class="ueberschrift">&nbsp;</div></td>
    </tr>
    <tr>
      <td height="470px" bgcolor="#363636" valign="top" align="left" width="135px">
        <ul class="menue">
          <li><a href="ich.html">Startseite</a></li>
          <li><a href="videos.html">über mich</a></li>
          <li><a href="bilder_index.html">Bilder</a></li>
          <li><a href="mucke.html">Mucke</a></li>
          <li><a href="gb_rene.php">&raquo; Gästebuch</a></li><br><br><br><br><br><br>
        </ul>

      </td>
      <td valign="top" align="center" width="617px" height="470px">

          <table  width="100%"  border="0" height="100%">
            <tr>
              <td valign="top" >




              <form action="gb_rene.php" method="POST">

       <table  align="center" height="100%" border="1"  width="70%" cellpadding="5">
       <tr >
       <td  id="gastform" align="left" width="70" ><b><font face="Arial">Email:</font></td>
       <td align="left"><input type="text" name="mail" size="20" id="form" value="<?php if (!empty($error)) echo $_POST['mail'];?>"></td>
       </tr>
       <tr>
       <td  id="gastform" align="left"><b><font face="Arial">Name:</font></td>
       <td align="left"><input type="text" name="nam" size="20" id="form" value="<?php if (!empty($error)) echo $_POST['nam'];?>"</td>
       </tr>
       <tr>
       <td  id="gastform" align="left"><b><font face="Arial">Nachricht:</font></td>
       <td align="left"><textarea name="nach" cols="23" rows"5" id="form"><?php if (!empty($error)) echo $_POST['nach'];?></textarea></td>
        <br>
       </tr>
       <tr>
       <td  valign="bottom" align="left" ><input type="Submit" name="senden" value="Eintragen" style="width:100px;"></td>
       </form>
       <td><?php echo $error; echo $spam?></td>
       </tr>
       <tr><td colspan="2"><br>

       <iframe frameborder="0" scrolling="auto" src="gb_ausgabe.php" width="100%" height="230px"></iframe>
       </td>
       </tr>
       </table>
       </td>
       </tr>
       </table>
       </td>
       </tr>
         <tr>
           <td bgcolor="#333333" height="20" width="752px" colspan="3"><div class="footer" align="right"><marquee>* * *&nbsp;  Meine Seite&nbsp;  * * *</marquee></div></td>
         </tr>
  </table>
  <p>&nbsp;</p>

</body>
</html>


Ich weiß ist bissl viel an Script....
 
Wir hatten dich zwar um den vom Browser ausgegebenen HTML-Quelltext gebeten, also das Ergebnis des geparsten PHP-Scripts, ist jetzt aber nicht mehr nötig, denn zwischenzeitlich hab ich die Ursache entdeckt, und meinen Beitrag editiert:

Maik hat gesagt.:
Der Grund für die horizontale Anordnung der GB-Einträge ist das align=left-Attribut im <table>-Tag, das im IE einer float:left-Deklaration mittels CSS gleichkommt.

Entweder entfernst du es aus der Tabelle, oder du formatierst die Tabellen im zentralen Stylesheet mit clear:left, um ihre Ausrichtung im Textfluß unter der vorherigen Tabelle zu erzwingen.
mfg Maik
 
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück