Neue zeile in Tabelle dynamisch erstellen

louS

Mitglied
Hallo,
ich bin noch ziemlich neu bei PHP und SQL dabei :) Hab mir aber schon einige Tutorials durchgelesen.
Nun hab ich eine Frage. Ich wollte wissen wie ich bei einer "HTML" Tabelle eine neue Zeile automatische hinzufügen kann, sofern ein neuer Eintrag in der Mysql tabelle ensteht.
Momentan ist es so, dass er die komplette Seite nochmals erstellt(untereinander).

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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
  <link rel="stylesheet" href="style.css" type="text/css">
</head>

<body style="margin: 0; padding: 0;">
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
<? include('config.php'); ?>


 <? @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    $sql = "
        SELECT
            *
        FROM
            `conferences`    
    ";
    $ausgabe = mysql_query($sql);
    

    while($row = mysql_fetch_array($ausgabe)) {
    
?>
  <tr>
    <td height="251" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="58%"><img src="logo.jpg" width="621" height="157" /></td>
    <td width="42%"><img src="header.jpg" width="352" height="157" align="right" /></td>
  </tr>
  <tr>
    <td height="33px" background="menubg.jpg">&nbsp;</td>
    <td background="menubg.jpg">&nbsp;</td>
  </tr>
  <tr>
    <td height="100%" style="padding:10px" class="content">Search for: <input id="search" type="text" /></td>
    <td align="right" style="padding-right:10px" class="content"><a href="#">Register</a> | Forgot password? | Help</td>
  </tr>
</table>
</td>
  </tr>
  <tr>
    <td valign="top">

      <table class="content" width="938" align="center" cellpadding="0" cellspacing="0" id="table">
    <tr>
      <td style="padding:5px" width="64" height="21" valign="middle" bgcolor="#5f92ac"><div align="right"><span class="Headlines">Time</span></div></td>
      <td style="padding:5px" width="456" bgcolor="#5f92ac" class="Headlines">Topic</td>
      <td style="padding:5px" width="215" bgcolor="#5f92ac" class="Headlines">Host</td>
      <td style="padding:5px" width="129" bgcolor="#5f92ac" class="Headlines">Duration</td>
      <td style="padding:5px" width="72" bgcolor="#5f92ac" class="Headlines">Language</td>
    </tr>
    <tr>
      <td bgcolor="#f5f5f5" style="padding:5px"><div align="right"><?=$row['time']?></div></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><a href="info.html"><?=$row['topic']?></a></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['host']?></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['duration']?></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['lang']?></td>
    </tr>
  </table>
</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
<? } ?>
</table>
</body>
</html>

Vielen Dank
 
Innerhalb der While Schleife sollte nur:

Code:
<tr> 
      <td bgcolor="#f5f5f5" style="padding:5px"><div align="right"><?=$row['time']?></div></td> 
      <td bgcolor="#f5f5f5" style="padding:5px"><a href="info.html"><?=$row['topic']?></a></td> 
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['host']?></td> 
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['duration']?></td> 
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['lang']?></td> 
    </tr>

stehen, du hast dort alles drin stehen. den Rest musst du aus der while Schleife rausnehmen und davor bzw. dahinter einfügen.
 
Vielen vielen Dank für deine schnelle Antwort und natürlich auch Hilfe.
Ich habs nun mal so gemacht

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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
  <link rel="stylesheet" href="style.css" type="text/css">
</head>

<body style="margin: 0; padding: 0;">
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="251" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="58%"><img src="logo.jpg" width="621" height="157" /></td>
    <td width="42%"><img src="header.jpg" width="352" height="157" align="right" /></td>
  </tr>
  <tr>
    <td height="33px" background="menubg.jpg">&nbsp;</td>
    <td background="menubg.jpg">&nbsp;</td>
  </tr>
  <tr>
    <td height="100%" style="padding:10px" class="content">Search for: <input id="search" type="text" /></td>
    <td align="right" style="padding-right:10px" class="content"><a href="#">Register</a> | Forgot password? | Help</td>
  </tr>
</table>
</td>
  </tr>
  <tr>
    <td valign="top">

      <table class="content" width="938" align="center" cellpadding="0" cellspacing="0" id="table">
      <? include('config.php'); ?>


 <? @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    $sql = "
        SELECT
            *
        FROM
            `conferences`    
    ";
    $ausgabe = mysql_query($sql);
    

    while($row = mysql_fetch_array($ausgabe)) {
    
?>
    <tr>
      <td style="padding:5px" width="64" height="21" valign="middle" bgcolor="#5f92ac"><div align="right"><span class="Headlines">Time</span></div></td>
      <td style="padding:5px" width="456" bgcolor="#5f92ac" class="Headlines">Topic</td>
      <td style="padding:5px" width="215" bgcolor="#5f92ac" class="Headlines">Host</td>
      <td style="padding:5px" width="129" bgcolor="#5f92ac" class="Headlines">Duration</td>
      <td style="padding:5px" width="72" bgcolor="#5f92ac" class="Headlines">Language</td>
    </tr>
    <tr>
      <td bgcolor="#f5f5f5" style="padding:5px"><div align="right"><?=$row['time']?></div></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><a href="info.html"><?=$row['topic']?></a></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['host']?></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['duration']?></td>
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['lang']?></td>
    </tr>
  </table>
</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
<? } ?>
</table>
</body>
</html>

Hoffe das ist richtig so, denn nun sieht meine Seite auch nicht besser aus :) Er verdoppelt die ganze zeit ansich nicht mehr aber nun siehe selbst :)

http://lous.dartdiddl.de/phpfehler.jpg


Vielen dank schonmal
 
Die Klammer <? } ?> muss hierhin:
Code:
      <td bgcolor="#f5f5f5" style="padding:5px"><?=$row['lang']?></td>
    </tr>
<? } ?>
  </table>
</td>
 
Geil :) Es klappt :)
Vielen vielen dank Jungs, ihr seid echt die besten!

Nächste Frage :)

Wie bewerkstellige ich das, dass er in jeder 2. Zeile eine andere Zellenhintergrundfarbe nimmt? also z.b.schwarz - weiß - schwarz - weiß usw.?
 
Hi,

zuerst brauchst du einen Zähler, und vielleicht noch 2 Variablen, für die Hinterrgundfarben:
PHP:
    $i = 0;
    $a = 'black';
    $b = 'white';
    while($row = mysql_fetch_array($ausgabe)) {


Der Zähler wird bei jedem durchlauf eins hochgezählt:
PHP:
    $i = 0;
    $a = 'black';
    $b = 'white';
    while($row = mysql_fetch_array($ausgabe)) {
    $i++;


Im HTML-Code, nimmst du dann folgende Änderung vor:
PHP:
    <tr bgcolor="<?php echo( $i % 2 == 0 ) ? $a : $b ; ?>">
      <td style="padding:5px"><div align="right"><?=$row['time']?></div></td>
      <td style="padding:5px"><a href="info.html"><?=$row['topic']?></a></td>
      <td style="padding:5px"><?=$row['host']?></td>
      <td style="padding:5px"><?=$row['duration']?></td>
      <td style="padding:5px"><?=$row['lang']?></td>
    </tr>


Hiernochmal im gesamten:
PHP:
    $i = 0;
    $a = 'black';
    $b = 'white';
    while($row = mysql_fetch_array($ausgabe)) {
    $i++;
?>
    <tr bgcolor="<?php echo( $i % 2 == 0 ) ? $a : $b ; ?>">
      <td style="padding:5px"><div align="right"><?=$row['time']?></div></td>
      <td style="padding:5px"><a href="info.html"><?=$row['topic']?></a></td>
      <td style="padding:5px"><?=$row['host']?></td>
      <td style="padding:5px"><?=$row['duration']?></td>
      <td style="padding:5px"><?=$row['lang']?></td>
    </tr>
<? } ?>
  </table>
</td>
 
Zuletzt bearbeitet:
Man, wie sehr wünsche ich mir, dass ich das so gut wie du könnte :(

Ich hoffe es ist ok, wenn ich nochwas frage :)

Und zwar hab ich nun in der DB "hostmail" hinzugefügt.

Wie kann ich das machen, dass in der HTML Tabelle der host+mail angezeigt wird, also auf den Hostname soll nen mailto link sein mit der mail.

Ich habs so versucht:
<a href="mailto:<?=$row['hostmail']?><?=$row['host']?></a>

Aber es ist natürlich falsch, wie schon erwartet :)

Echt, nochmals vielen dank für deine sehr wertvolle Hilfe.
Ich weiss das sehr zu schätzen.
 
Versuchs mal mit:
PHP:
if( isset( $_POST ) )
{
    $sql = '
       INSERT INTO
          `conferences`
       (
          `time`,
          `topic`,
          `host`,
          `hostmail`,
          `duration`,
          `language`
       )
       VALUES
       (
          "'.$_POST['time'].'",
          "'.$_POST['topic'].'",
          "'.$_POST['host'].'",
          "'.$_POST['hostmail'].'",
          "'.$_POST['duration'].'",
          "'.$_POST['language'].'",
          NOW()
       )';

    if( !mysql_query( $sql ) )
    {
       echo 'Fehler beim eintragen der Konferenz';
    }
    else
    {
        echo 'Die Konferenz wurde erfolgreich eingetragen';
    }
}
 
Hmm,
nach dem eintrage über formular.php erhalte ich "Fehler beim eintragen der Konferenz".
Und wenn ich die datei.php aufrufe Fehler in den Zeilen 22-27.

Was könnte ich denn sonst noch falsch gemacht haben?
 
Zurück