Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

mehrspaltige tabelle ausgeben





Frage

Hallo zusammen, ich habe jetzt diverse Foren durchsucht, bin aber auf keine klare Lösung gestossen, um eine Datenausgabe auf zwei Spalten einer Tabelle zu verteilen. Es soll eine Tabelle mit n Zeilen und zwei Spalten sein - als hübschere Variante zur Ausgabe der Ergebisse untereinander. Dabei soll nicht eine Ausgabespalte einer mysql-tabellen spalte entsprechen, sondern immer eine ganze zeile pro zelle ausgegeben werden, wie z.b. "name, nachname, telefon" einer Person. Dann die gleichen Daten einer zweiten Person in der zweiten Spalte der ersten Zeile und so soll es sich dann in den folgenden Ausgabezeilen fortsetzen. In Cold-Fusion habe ich das gelöst - in PHP bin ich leider neu und bräuchte einen kompleten Code und keine geheimnisvollen Hinweise. Vielleicht kann ich dann ja später in anderen Bereichen aushelfen ... Danke schonmal!!

Antwort 1 von Nessus

Hi,

Du hast die Abfrage in einer Schleife, dort hinterlegst Du auch die Struktur der Tabelle, fertig....

Poste mal den entsprechenden Code.

Nessus

Antwort 2 von scorcha

der code ihier ist für die ausgabe einer datenzeile in zwei nebeneinanderstehenden zellen. die nächste db-zeile kommt auch in einer neuen tabellenzeile, bzw in einer neuen tabelle.



//küstler
if ($kuenstler != ´nix´)
{


// Datendefinition für die Clientausgabe
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 5; // Datensätze pro Ausgabeseite

// Feststellen der Anzahl der verfügbaren Datensätze.
$resultID = @mysql_query("SELECT COUNT(id) FROM docs where name2=´$kuenstler´");
$total = @mysql_result($resultID,0);

// Ggf. $start korrigieren (falls Parameter in
// der URL manipuliert wurde)
$start = ($start >= $total) ? $total - $limit : $start;

// Datenbankabfrage ausführen.
$query = "SELECT id,name1,name2,bild FROM docs where name2=´$kuenstler´ LIMIT ".$start.",".$limit;
$resultID = @mysql_query($query);

// Ergebnisse lesen und an den Client ausgeben

while ($data = mysql_fetch_array($resultID))
{
echo

"
<tr>
<td colspan=´3´><img src=´img/blind.gif´ width=´15´ height=´15´ alt=´´ border=´0´></td>
</tr>

<tr>
<td colspan=´3´>


<table border=´0´ cellspacing=´0´ cellpadding=´0´>
<tr>
<td>
<a href=´auswahl-detail.php?id=".$data[id]."&tab=kuenstler´><img src=´files/images/".$data[bild]."´ width=´100´alt=´Detailansicht´ border=´0´></a>
</tD>
<td><img src=´img/blind.gif´ width=´15´ height=´2´ alt=´´ border=´0´></td>
<td valign=´top´>
<a href=´auswahl-detail.php?id=".$data[id]."&tab=kuenstler´>".$data[name1]."</a><br>
<strong>".$data[name2]."</strong><br>
</tD>
</tR>
</table>

</td>
</tr>

<tr>
<td colspan=´3´><img src=´img/blind.gif´ width=´15´ height=´15´ alt=´´ border=´0´></td>
</tr>";
}

// Zurück- und Vorblättern
if ($start > 0)
{
$newStart = ($start - $limit < 0) ? 0 : ($start-$limit);
echo "

<tr>
<td colspan=´3´><a href=´".$_SERVER[´PHP_SELF´]."?kuenstler=".$kuenstler."&start=".$newStart."´><< zurück</a>";}"</td>
</tr>"
;

if ($start + $limit < $total)
{
$newStart = $start + $limit;
echo "

<tr>
<td colspan=´3´><a href=´".$_SERVER[´PHP_SELF´]."?kuenstler=".$kuenstler."&start=".$newStart."´>vor >></a>";}"</td>
</tr>"

;}



Antwort 3 von Nessus

Hi,

wie gesagt ein HTML-Problem, so sollte es aber gehen (falls ich es richtig verstanden habe; ungetestet!)
echo "<tr> 
<td colspan=´3´><img src=´img/blind.gif´ width=´15´ height=´15´ alt=´´ border=´0´></td> 
</tr> 

<tr> 
<td colspan=´3´> 


<table border=´0´ cellspacing=´0´ cellpadding=´0´> 
<tr> ";


{ 
echo " 

<td> 
<a href=´auswahl-detail.php?id=".$data[id]."&tab=kuenstler´><img src=´files/images/".$data[bild]."´ width=´100´alt=´Detailansicht´ border=´0´></a> 
</tD> 
<td><img src=´img/blind.gif´ width=´15´ height=´2´ alt=´´ border=´0´></td> 
<td valign=´top´> 
<a href=´auswahl-detail.php?id=".$data[id]."&tab=kuenstler´>".$data[name1]."</a><br> 
<strong>".$data[name2]."</strong><br> 
</tD> 

} 
echo "</tR> 
</table> 

</td> 
</tr> 

<tr> 
<td colspan=´3´><img src=´img/blind.gif´ width=´15´ height=´15´ alt=´´ border=´0´></td> 
</tr>"; 


HTH

Nessus

Antwort 4 von scorcha

Hmmm, leider nicht, das ändert ja nichts am ausgabe lay-out. iss aber auch immer schlecht sowas zu beschreiben, drum hab ich hier mal etwas vorbereitet ;-)

http://www.scorcha.de/img/forumansicht.jpg

Antwort 5 von disco

moin

hab mir jetzt nur ma das ergebnis, was du haben möchtest angeguckt. dein momentaner aufbau scheint so zu sein

<table>

<?php for($i=0,...){ ?>

<tr>
<td>
<?php print($wasAuchImmerDahinSoll[$i]); ?>
</td>
</tr>

<?php } ?>


</table>

was du brauchst muss so aussehen:

<table>

<?php for($i=0,...){ ?>

<tr>

<td>
<?php print($wasAuchImmerDahinSoll); ?>

</td>

<td>
<?php print($wasAuchImmerDahinSoll_dasNaechste); ?>
</td>

</tr>

<?php } ?>

</table>

also scheint nur deine tabelle falsch aufgebaut zu sein.

hth?!

g,
disco

Antwort 6 von scorcha

wunderbar, aber eben darum geht es mir doch!
wie schaffe ich es die ausgabe so aufzuteilen, dass da "das nächste" ausgegeben wird und danach die nächste zeile??

Antwort 7 von disco

meinste jetzt wob logischen aufbau?

sagen wir du hasten nen array mit den sachen drin.
ich schreibs ma halb-logisch auf, kenn nicht alle php befehle ausm kopf und bin zu faul nachzugucken. in diesem fall brauchste ne while- und nicht ne for-schlife.

<?php i= 0;
array[] = ein array in dem du dein zeug hast, was in die zellen soll;

while(i<länge(array))
{
?>

<tr>

<td>
<?php print(array); i++;?>
</td>

<td>
<?php print(array); i++;?>
</td>

</tr>

<?php } ?>

hoffe das hilft.

g,
disco

Antwort 8 von disco

da wurde die hälfte oben vergessen.
anscheinden wird die das nicht richtig hier abgebildet, wenn die eckigen klammer kein lerzeichen dazischen haben.
habs nicht in der php-syntax-geschriben, weil ich etwas zu faul war.

da müsste stehen:

<?php
i=0;
array [ ] = ein array in dem du dein zeug hast, was in die zellen soll;

while(i<länge(array))
{
?>

<tr>

<td>
<?php print(array[ i ]); i++;?>
</td>

<td>
<?php print(array[ i ]); i++;?>
</td>

</tr>

<?php } ?>

Antwort 9 von |-|Andi|-|

Ich denke mal, dass folgende Zeilen, natürlich noch an Deine Bedürfnisse angepasst vollkommen ausreichen sollten ;) Anzahl der Arrays und anschließende Beachtung bei der Ausgabe


$sqldb = "SELECT * FROM docs where name2=´$kuenstler";
$res = mysql_db_query("$sqldb", $sqldb);
$nums = mysql_num_rows($res);
$daten[$nums]="";
$index=0;
//wenn nötig mehr Tabellen anlegen!
while ($row = mysql_fetch_array($res))
{
$daten[$index]=$row[tabellenname];
}?>
<table width="98%" border="1" align="center" cellpadding="0" cellspacing="0">
<?
$index=0;
while ($index<=$nums)
{?>
<tr>
<td><? echo $daten[$index2]; $index++;?></td>
<td><? echo $daten[$index2]; $index++;?></td>
</tr>
<? }?>
</table>


lg Andi