PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP und MySQL: TABLE-Roblem


tomtom
2004-05-22, 20:11:56
Hi!!!

Ich werd auf meiner Website eine Gallery haben. Diese soll immer 4 Bilder nebeneinander zeigen, unter jedem Bild soll der Titel des Bildes und das Releasedatum stehen. Das funzt ja soweit. Jedoch steht alles untereinander. Wie kreig ich das gebacken, dass immer 4 nebeneinander stehen und danach in die nächste Zeile gewechselt wird!!!

Hab schon einiges probiert, bis ich jetzt aufgeben musste!!! Ich hoffe ihr könnt mir helfen!!!
MFG, terminator2k3

Hier der Code:

<HTML>
<HEAD>
<TITLE>Connection2</TITLE>
</HEAD>
<BODY>

<?php
$db = mysql_connect();
$res = mysql_db_query("w3fx_gallery", "SELECT title, date, url FROM picture_data");
$num = mysql_num_rows($res);

for ($i=0; $i<$num; $i++)
{
$tit = mysql_result($res, $i, "title");
$dat = mysql_result($res, $i, "date");
$url = mysql_result($res, $i, "url");

$picture = ("<IMG SRC=$url>");

echo ("<TABLE>
<TR>
<TD>$picture</TD>
</TR>
<TR>
<TD>$tit</TD>
</TR>
<TR>
<TD>$dat</TD>
</TR>
</TABLE>");
}

?>

</BODY>
</HTML>

Lrrr
2004-05-22, 21:01:33
So wie es aussieht, erstellst Du für jedes Bild eine eigene Tabelle mit dem "echo" Befehl.

Du willst erreichen, dass eine bestimmte Anzahl von Bildern in einer Reihe erscheinen. Erstelle -vor- der for-Schleife den Tabellenkopf (<TABLE><TR>...) und dann baust Du die gesamte Tabelle immer nur stückchenweise auf. Hintergrund ist, dass die <td> Tags die Spalten angeben, und damit nebeneinander erscheinen - in jedem Durchlauf der Schleife schreibst Du mit echo eben nur z.B.


echo "<td><p align='center'>$picture<br>$tit<br>$dat</p></td>


Außerdem könntest Du beispielsweise eine Zählvariable einführen, oder eben die Deiner for-Schleife verwenden. Du prüfst dann innerhalb der Schleife, ob z.B. 3 schon erreicht ist - wenn dem so ist, dann machst Du


echo "</TR><TR>";


um eine neue Zeile zu beginnen. Wichtig ist hierbei, dass Du vor der Schleife die Tabellezeile auch mit "<TR>" angefangen hast.

Tipp: verwende für die Überprüfung, ob eine neue Zeile begonnen werden soll "if ($i % 3 == 0) // neue Zeile beginnen, wenn i durch 3 teilbar ist" (% entspricht dem Modulo, also einer Division, wobei der Rest zurückgegeben wird).

Nach der Schleife musst Du dann den Tabellen Tag ordentlich beenden, mit "</TR></TABLE>".


Hoffe ich konnte Dir helfen, frag falls Du irgendwas nicht verstehst.

Lokadamus
2004-05-24, 00:46:25
mmm...

Du müsstes es dann soweit auffrimmel:

<TABLE BORDER="1">
<TR> <!-- erstmal in Reihe 1 gehen -->
<TD> <!-- erstmal in Zeile 1 gehen -->

<!-- Tabellenanfang -->
<TABLE BORDER="1">
<TR>
<TD>$picture</TD>
</TR>
<TR>
<TD>$tit</TD>
</TR>
<TR>
<TD>$dat</TD>
</TR>
</TABLE>
</TD>
<!-- Tabellenende -->
<!-- Tabellenanfang -->
<TD>
<TABLE BORDER="1">
<TR>
<TD>$picture</TD>
</TR>
<TR>
<TD>$tit</TD>
</TR>
<TR>
<TD>$dat</TD>
</TR>
</TABLE>
<!-- Tabellenende -->
<!-- Tabellenanfang -->
<TD>
<TABLE BORDER="1">
<TR>
<TD>$picture</TD>
</TR>
<TR>
<TD>$tit</TD>
</TR>
<TR>
<TD>$dat</TD>
</TR>
</TABLE>
</TD>
<!-- Tabellenende -->

</TD></TR> <!-- Zeile und Reihe 1 schliessen -->

<TR> <!-- in Reihe 2 gehen -->
<TD> <!-- in Zeile 1 gehen -->

<!-- Tabellenanfang -->
<TABLE BORDER="1">
<TR>
<TD>$picture</TD>
</TR>
<TR>
<TD>$tit</TD>
</TR>
<TR>
<TD>$dat</TD>
</TR>
</TABLE>
</TD>
<!-- Tabellenende -->
<!-- Tabellenanfang -->
<TD>
<TABLE BORDER="1">
<TR>
<TD>$picture</TD>
</TR>
<TR>
<TD>$tit</TD>
</TR>
<TR>
<TD>$dat</TD>
</TR>
</TABLE>
<!-- Tabellenende -->
<!-- Tabellenanfang -->
<TD>
<TABLE BORDER="1">
<TR>
<TD>$picture</TD>
</TR>
<TR>
<TD>$tit</TD>
</TR>
<TR>
<TD>$dat</TD>
</TR>
</TABLE>
</TD>
<!-- Tabellenende -->

</TD></TR> <!-- Zeile und Reihe 2 schliessen -->
</TABLE>

Durch das Border = 1 enstehen die Linien, setzt du diesen Wert auf 0, ist es so, wie du es haben wolltest, würde aber auch eher zu dem Code von Lrrr greifen ... mit dem TD- Tag gehst du immer ein Feld weiter nach rechts, mit TR nach unten ...

ZeroKill
2004-05-24, 02:13:50
HTML>
<HEAD>
<TITLE>Connection2</TITLE>
</HEAD>
<BODY>

<?
$db = mysql_connect();
$res = mysql_db_query("w3fx_gallery", "SELECT title, date, url FROM picture_data");
$num = mysql_num_rows($res);
?>
<table>
<tr>
<?
$i=0;
while($a1=mysql_fetch_array($res)) {
?><td align="center"><img src="<? echo $a1[url]; ?>"><br><? echo $a1[$title]; ?><br><? echo $a1[date]; ?></td><?
$i++;
if($i%4==0) echo "</tr><tr>";
}
while(($i%4)!=0) {
echo "<td>&nbsp;</td>";
$i++;
} ?>
</tr>
</table>
</BODY>
</HTML>

tomtom
2004-05-29, 14:55:56
WOW! THX an alle!!! Hat gut funktioniert. Hatte nur leider keine Zeit früher wieder hier vorbeizusschauen!!!

Trotzdem hätte ich noch ne Frage:
Wie krieg ich das hin, dass wenn 12 Grafiken auf einer Seite stehen, dass dann eine neue Seite erzeugt wird, auf der die nächsten 12 Bilder angezeigt werden.....?
Was dann natürlich auch wichtig wäre, ist eine Anzeige mit allen Links zu allen Seiten.

Gibt es da ne Funktion in PHP dafür die eine neue Seite erzeugt? Wäre sehr erfreut wenn mir jemand helfen könnte...bin nämlich (noch) ein ziemlicher noob in php!!!

THX, MFG
terminator2k3

ethrandil
2004-05-29, 15:39:58
"SELECT * FROM blabla LIMIT 12,12"

Das liefert ab dem 12. Eintrag 12 Einträge.

In deinem Fall musst du also entsprechende Links einbauen um dann die entsprechenden positionen bestimmtn.

Auf der ersten Seite könnte z.B. stehen
<a href="gallery.htm?start=12">
auf der 2.
<a href="gallery.htm?start=24">

usw.

Programmieren kannst dus aber selber, oder?

- Eth

tomtom
2004-05-29, 15:50:12
DANKE! Werds gleich mal probieren!!!