PHP - MYSQL Daten in Tabelle verteilen

Ich habe ein Problem:
Ich will Daten, die in einer MySQL Tabelle gespeichert sind abrufen und in eine Tabelle schreiben. Und zwar dass mehrere Sachen nebeneinander stehen. z.b. 2 DB-Reihen nebeinander stehen und dann in HTML eine neue Tabellenspalte angefangen wird.

also so:

PHP:
<table>  
<tr>  
<td>Inhalt1</td>  
<td>Inhalt2</td>  
</tr>  
<tr> 
 <td>Inhalt3</td>  
<td>Inhalt4</td>  
</tr>  
</table>

ich habe bis jetzt immer so gearbeitet (untereinander):

PHP:
while($row = mysql_fetch_array($result)) 
	{
echo "<table>";
echo "<tr><td> ".$row['topic']." </td></tr>"
echo "</table>\n";
	}

aber dabei kann man immer nur untereinander was schreiben... wahrscheinlich ists ein einfacher trick, aber ich komm im moment nicht drauf wie ich das machen soll

Gruss MastaDaDesasta
P.S: ich bin php anfänger, deshalb
 
Versteh nicht ganz dein Problem, wenn du
Code:
echo "<table><tr>";
while($row = mysql_fetch_array($result)) 
{
echo "<td> ".$row['topic']." </td>";
}
echo "</table>";
machst, haste die einträge nebeneinander...

Falls du das meinstest...

Greetz...
Sinac
 
schon, aber wenn ich jetzt 10 reihen in der datenbank habe, erscheinen die alle nebeneinander... ich will immer 2 nebeneinander und die nächsten 2 in der nächsten zeile...
 
Das geht auch relativ einfach:

PHP:
echo "<table><tr>";
for($i=0;$row=mysql_fetch_array($result);$i++)
{
  echo "<td> ".$row['topic']." </td>"
  if($i % 2 != 0)
    {
      echo"</tr><tr>";
    }
}
echo "</tr></table>\n";

So wird nach jedem zweiten Datensatz eine neue Reihe in der Tabelle erzeugt.
 
Zuletzt bearbeitet:
hmm okay... ein paar fragen zum Verständnis hab ich noch (PHP anfänger)

es wird also eine for schleife aufgerufen mit $i=0 und was danach kommt versteh ich nicht
PHP:
$row=$db->fetch_array($result)
heißt das, dass alle dateien aus der datenbank in ein array geschrieben werden? ich kenn das
PHP:
$db->fetch_array
nicht :(

und was hat es mit
PHP:
$data[br]="</tr><tr>";
auf sich? kann man da nicht einfach echo "" nehmen? würde doch auch gehen

und das ganze muss doch dann auch weiterhin in einer while schleife stehen oder?


Gruss MastaDaDesasta
 
Zuletzt bearbeitet:
ich kann es gerade nicht testen: aber von der idee: würde das hier klappen?

PHP:
<?
$result = mysql_query('SELECT * FROM ibfkl_gallery ORDER BY ID ASC');
$num_rows = mysql_num_rows($result);
$i = 0;
$r = 0;

while ($data = mysql_fetch_array ($result))
{
  $array[] = $data;
}

echo "<table>\n<tr>";

while ($i <= $num_rows)
{
echo "<td><img src='". $array[$i]['url'] ,"'></a></td>";
$i++
$r++

if ($r == 2)
{
echo "</tr><tr>";
$r = 0;
}
$i++
}
echo "</table>";
?>

oder kann man das irgendwie vereinfachen

Gruss MastaDaDesasta
 
Oh, verdammmt SORRY ;)
Dieses

PHP:
$db->fetch_array($result);

$db ist bei mir eine Klasse als Schnittstelle zur MySQL Datenbank.
Du musst das $db-> einfach durch mysql_ ersetzen, dann sollte es funktionieren ;)

Boah, klar, ich habe das aus nem eigenenen Script übernommen, Moment, ich verbessere das Ding eben mal :P

Tschuldigung, war wohl etwas müde ;)
 
trotzdem versteh ich diesen Abschnitt nicht:
PHP:
  if($i % 2 != 0)
    {
      echo"</tr><tr>";
    }

der besagt doch, dass wenn i geteilt durch 2 ungleich 0 ist, dann ne neue tabellenspalte anfangen... aber beim ersten durchlauf ist i schon 1... d.h. 1 geteilt durch 2 ist 0.5 also ungleich 0 und es wird ne neue spalte angefangen... also nach jedem durchlauf... weil i ja nicht wieder gelöscht wird und immer größer wird... oder steh ich gerade total auf der leitung

kann mir mal einer helfen... :(

Gruss MastaDaDesasta
 
Das Prozentzeichen heisst in diesem Fall nicht geteilt, dies ist der Modulo Operator.
Such mal in Google nach "Rechenoperatoren", dort wirst du einiges hierzu finden.

Mit Modulo lässt sich der ganzzahlige Rest einer Division bestimmen.

PHP:
    $rest = 20%7;
    echo "Der Rest von 20 durch 7 ist: ".$rest;
    // Der Rest ist 6, denn 20 = (2*7)+6 = 14+6
 
Zuletzt bearbeitet:
Zurück