Tabellen nebeneinander ausgeben lassen...

  • Themenstarter Themenstarter TearOfDragon
  • Beginndatum Beginndatum
T

TearOfDragon

Hallo ;]

Wieder mal das Thema mit dem Tables ausgeben wie es in der Suchfunktion wohl auch schon ein paarmal zu finden ist. Leider konnten mir bisherige Themen nicht weiterhelfen und die Nächte mit Fehlermeldungen verbringen von denen man nich weiß was da sein könnte.

Einfaches Ding, will 1ne Tabelle in der Breite mit 2 Spalten und untereinander und 3 oder 4 Zeilen untereinander ausgeben lassen, weiß bloß nich wie, da fehlt mir die Logik leider etwas und basteln mit vorhandenen Einträgen hat keinen Erfolg gebracht.

Bevor die Frage auftaucht, wir helfen nur wenn wir wissen worum es geht, einfache News, in dem Fall nur noch auf andere Dinge abgeändert...

Denke mal ansich nen simples Thema, aber da irgendwie zu blind für um zu sehen was oder wie weiter.....

Wäre also für Tips oder ne Lösung dankbar :]

Hier der Code der Datenbankanbindung:
Code:
<?php
if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") {
  if (PHP_VERSION < 6) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; }
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
$maxRows_NEWS = 2;
$pageNum_NEWS = 0;
if (isset($_GET['pageNum_NEWS'])) {
  $pageNum_NEWS = $_GET['pageNum_NEWS'];
}
$startRow_NEWS = $pageNum_NEWS * $maxRows_NEWS;

mysql_select_db($database_newsupload, $newsupload);
$query_NEWS = "SELECT * FROM news ORDER BY id DESC";
$query_limit_NEWS = sprintf("%s LIMIT %d, %d", $query_NEWS, $startRow_NEWS, $maxRows_NEWS);
$NEWS = mysql_query($query_limit_NEWS, $newsupload) or die(mysql_error());
$row_NEWS = mysql_fetch_assoc($NEWS);

if (isset($_GET['totalRows_NEWS'])) {
  $totalRows_NEWS = $_GET['totalRows_NEWS'];
} else {
  $all_NEWS = mysql_query($query_NEWS);
  $totalRows_NEWS = mysql_num_rows($all_NEWS);
}
$totalPages_NEWS = ceil($totalRows_NEWS/$maxRows_NEWS)-1;
?>

und der Code der Tabellenausgabe so wie sie bisher in "einmaliger" Form besteht:

Code:
<?php do { ?>
  <table class="tnews">
    <tr>
      <td colspan="2" class="tfett"><?php echo $row_NEWS['Titel']; ?></td>
    </tr>
    <tr>
      <td colspan="2" class="tinh">geschrieben von <?php echo $row_NEWS['Author']; ?> am <?php echo $row_NEWS['time']; ?> Uhr.</td>
    </tr>
    <tr>
      <td colspan="2"><img src="images/line.gif" alt="placeholder" /></td>
    </tr>
    <tr>
      <td width="2%" align="left" valign="top"><?php echo "<img src=\"images/vorschau/$row_NEWS[vorschau]\" border=\"0\" alt=\"images/vorschau/$row_NEWS[vorschau]\" />"; ?></td>
      <td width="98%" class="tinh"><?php
	$row_NEWS['Newstext'] = htmlspecialchars($row_NEWS['Newstext']); $row_NEWS['Newstext'] = str_replace("\n", "\n<br />\n", $row_NEWS['Newstext']); 
	$row_NEWS['Newstext']=eregi_replace("\[u\]([^\[]+)\[/u\]", "<u>\\1</u>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[b\]([^\[]+)\[/b\]", "<b>\\1</b>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[i\]([^\[]+)\[/i\]", "<i>\\1</i>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[quote\]([^\[]+)\[/quote\]", "<cite>\\1</cite>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[strike\]([^\[]+)\[/strike\]", "<strike>\\1</strike>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[img\]([^\[]+)\[/img\]","<img src=\"\\1\" border=\"0\">",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[email\]([^\[]+)\[/email\]","<a href=\"mailto:\\1\">\\1</a>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[email=([^\[]+)\]([^\[]+)\[/email\]","<a href=\"mailto:\\1\">\\2</a>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[url=([^\[]+)\]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_new\">\\2</a>",$row_NEWS['Newstext']);
	$row_NEWS['Newstext']=eregi_replace("\[url\]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_new\">\\1</a>",$row_NEWS['Newstext']);
	echo $row_NEWS['Newstext']; ?>
      </td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
  </table>
  <?php } while ($row_NEWS = mysql_fetch_assoc($NEWS)); ?><?php mysql_free_result($NEWS); ?>
 
Verstehe nicht wo das Problem ist.
Du gibst schon eine Tabelle aus, mit einer Spalte (außer bei Nachricht und Bild) und das möchtest du nun in zwei Spalten?
HTML:
<td>erste</td>
<td>zweite</td>

Wenns das nicht gemeint war, dann bitte einmal kurz und knapp auf den Punkt gebracht erklären was dein Ziel ist.
 
Huu ;]

Möchte den Datensatz aus der Mysql Tabelle nicht untereinander wie ne Liste ausgeben wie z.b. jetzt hier die Beiträge, sondern neben und untereinander gleichzeitig.

So ist es jetzt in der Ausgabe:

Tabelle Datensatz 1
Tabelle Datensatz 2

und so stell ich mir das vor:

Tabelle Datensatz 1 Tabelle Datensatz 2
Tabelle Datensatz 3 Tabelle Datensatz 4
Tabelle Datensatz 5 Tabelle Datensatz 6

So in der Art, ganz plump beschrieben... In den Theads die ich bisher gesehen habe, hat das irgendwas zu tun mit dem i++ glaube ich aber....mhhh, da fängts schon an ~~
 
Zuletzt bearbeitet von einem Moderator:
Ganz recht.

Zählschleife und Modulorechnung:
PHP:
$i = 0;
while (...)
{
  $i++;
  if ($i % 2 == 0)
  {
    echo "</tr><tr>";
  }
  echo "<td>....</td>";
}

Hier wird nach jedem zweiten eine neue Zeile begonnen. Beachte das am Anfang ein </tr> hier zu viel stehen wird.

Ich empfehle dir das ganze mit div zu lösen statt Tabellen, da so auch Screenreader und Textbrowser die Seite besser anzeigen können.

Um mehrere Tabellen nebeneinander zu haben kann man eventuell auch CSS nutzen: http://www.css4you.de/float.html
 
Huhu,

Entschuldigung, war leider außerplanmäßig unterwegs, daher auch keine Rückmeldung die letzte Zeit.

Was CSS, btw Divs angeht lass ich erstmal außenvor auch wenn ich weiß das es für solche genannten Browsermöglichkeiten User-unfreundlich ist.

Ich habe das versucht mit dem Modulo, allerdings mit mäßigen Ergebnissen und bekomms weiter nich hin. Kleiner Erfolg... Es wird ausgegeben allerdings auch nur wenn die unten zu sehende "kommentierte" Zeile deaktiviert ist und dann aber auch nur komplett zerrissen (die deaktivierte Zeile bekomm ich absolut nich hin). Hab in der Ausgabe so jeden Table 4fach und jeweils links und rechts auf dem Bildschirm verteilt -.- Schätze mal der Aufbau ist total falsch....

PHP:
<?php
$i = 0;
while ($i <= 3)
	{
  $i++;
  if ($i % 3 == 0)
	{
	echo "<table class=\"tnews\" border=\"1px\">";
	echo "</tr><tr>";
	}
    echo "<td colspan=\"2\" class=\"tfett\">".$row_NEWS['Titel']."</td>";
	echo "</tr><tr>";
	//echo "<td colspan=\"2\" class=\"tinh\">geschrieben von $row_NEWS['Author'] am "$row_NEWS['time']" Uhr.</td>";
	echo "</tr><tr>";
	echo "<td colspan=\"2\"><img src=\"http://www.tutorials.de/forum/images/line.gif\" alt=\"placeholder\" /></td>";
	echo "</tr><tr>";
	echo "<td width=\"2%\" align=\"left\" valign=\"top\"><img src=\"http://www.tutorials.de/forum/images/vorschau/$row_NEWS[vorschau]\" border=\"0\" alt=\"http://www.tutorials.de/forum/images/vorschau/$row_NEWS[vorschau]\" /></td>";
	echo "<td width=\"98%\" class=\"tinh\">";
	echo "</td></tr>";
	echo "</td></tr>";
	echo "<tr>";
	echo "<td colspan=\"2\">&nbsp;</td>";
	echo "</tr>";
	echo "</table>";
	}
	?>
 
Zuletzt bearbeitet von einem Moderator:
PHP:
echo "<td colspan=\"2\" class=\"tinh\">geschrieben von $row_NEWS['Author'] am "$row_NEWS['time']" Uhr.</td>";

Sieh dir mal an wie du mit den Variablen umgegangen bist, dann wirst du merken dass da noch was fehlt.

Allgemein ist es aber schöner die Variablen aus dem String heraus zu nehmen:
PHP:
$text = 'Dies ist ein Text mit ' . $one . ' Variable(n)';
 
Hallo Zodiac ;]

Danke für den Anstubs an der Stelle, genau das zitierte von dir war auch der Punkt der rumgezickt hatte, soweit korrigiert, wenn vielleicht auch nich mit der elegantesten Art aber nunja, mögen sich die Geister drüber streiten ^^

PHP:
<?php
$i = 0;
while ($i <= 1) //Logikfehler 1, irgendeinen Wert eingetragen
	{
  $i++;
  if ($i % 2 == 0) // aus dem Beispiel übernommen
	{
echo "<table width=\"100%\" class=\"tnews\" border=\"1px\">";
echo "<tr>";
	} // Klammer hier richtig? Wenn ja, versetzen bringt nicht wirklich etwas...
echo "<td colspan=\"2\" class=\"tfett\">".$row_NEWS['Titel']."</td>";
echo "</tr>";
echo "<tr>";
//echo "<td colspan=\"2\" class=\"tinh\">geschrieben von $row_NEWS['Author'] am "$row_NEWS['time']" Uhr.</td>";
echo "<td colspan=\"2\">geschrieben von " .$row_NEWS['Author'] . " am " .$row_NEWS['time']. " Uhr.</td>"; 
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\"><img src=\"images/line.gif\" alt=\"placeholder\" /></td>";
echo "</tr>";
echo "<tr>";
echo "<td width=\"8%\" align=\"left\" valign=\"top\"><img src=\"images/vorschau/$row_NEWS[vorschau]\" border=\"0\" alt=\"images/vorschau/$row_NEWS[vorschau]\" /></td>";
echo "<td width=\"92%\" class=\"tinh\">".$row_NEWS['Newstext']."</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\">&nbsp;</td>";
echo "</tr>";
echo "</table>";
	}
	?>

Table wurde auch nochmal neu aufgesetzt und so auch wie sie sein soll, Dateneinträge werden ausgelesen und alles an seinem Platz....

Somit beim nächsten Punkt...Step by Step, wünschte wüsste da mehr...:[

Die Ausgabe so wie sie jetzt ist sieht praktisch so aus...
3 Datenbankeinträge bisher, d.h. jeder Datensatz wird 2x ausgegeben.

Datensatz 1 Eintrag 1 (ohne Table und dementsprechend zerfetzt)
Datensatz 1 Eintrag 1 (mit Table, wie es sein soll)
Datensatz 2 Eintrag 1 (ohne Table und dementsprechend zerfetzt)
Datensatz 2 Eintrag 1 (mit Table, wie es sein soll)
Datensatz 3 Eintrag 1 (ohne Table und dementsprechend zerfetzt)
Datensatz Eintrag 3 (mit Table, wie es sein soll)

usw...

und genau da setzt das denke ein wo mir einserseits die Logik zu fehlt das zu bewerkstelligen, versuchs aber weiter über Nacht, denke irgendwas "simples" wo man nich drauf kommt ~

Grüße
Tear
 
Zuletzt bearbeitet von einem Moderator:
Hmm, auch wenn Doppelposting....habs geschafft jetzt, weiterhin zu verfeinern, aber eher in der Ausgabe ansich, das Problem mit dem zerfetzten Layout und doppelt ausgegebenen Tabellen besteht weiterhin, bekomms einfach nich hin....

Wüsste da wer vielleicht noch ne Lösung oder einen Denkanstoß für?
 
Zurück