Tabelle mit verschiedene Anzahl der Zeilen

123123123

Erfahrenes Mitglied
Guten Morgen,

ich habe eine Tabelle erstellt zusammen mit einer Datenbank. Meine Frage ist, wie kann ich eine Tabelle erstellen, die verschiedene Anzahl von Zeilen hat?
Also zB:

1 2 3 4 5 6 7
1 2 3 4 5 6
1 2 3 4 5 6 7 8
usw.

Danke für die Hilfe! :)

PS: So hab ich angefangen:
PHP:
<?php
include ("class_db.php");

$planID = 4;

$db = new DB("localhost", "", "", "plaene");
$db->query("TRUNCATE TABLE sitzplan_{$planID}");

for ($row=1; $row<=1; $row++ )
{
	
	$x = (($row-1) * 0);	
	setRow($x+1, $x+22, $row, 1); 
	
}	


function setRow($von, $bis, $reihe, $kategorie)
{
	global $db, $planID;
	for($i=$von; $i<=$bis; $i++)
	{
		$db->query("INSERT INTO sitzplan_{$planID} SET
					sitz = '{$i}',
					reihe = '{$reihe}',
					kategorie = '{$kategorie}'");
	}
}
?>

PHP:
<?php
include ("class_db.php");

$planID = 4;

$db = new DB("localhost", "", "", "plaene");

$plandaten = $db->getQueryData("SELECT * FROM sitzplan_{$planID}");
//p($plandaten);
?>

<html>
	<head>
		<title>Sitzplan <?php echo $planID?></title>
			<style>
			.plan {
				border: 2px solid black;
			}
			.row {
				border: 2px solid black;
				background-color:yellow;
			}
			.sitz {
				border: 2px solid black;
			}
			</style>
	</head>
<body>
<table class="plan" id="plan">
		<?php
			$i=0;
			for($row=1; $row<=1; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>" .$row ."</td>"; 
					for($seat=1; $seat<=22; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
			}
			
		?>
		</table>
</body>
</html>
 
Bahnhof.

item: Du schreibst von verschiedener Anzahl Zeilen, das Beispiel aber hat versch. Anzahl Spalten. Was nun?

item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?

item: Du willst de Zeilen deiner SQL-Tabelle in eine einzige HTML-Zeile packen?
 
So ich hab es hingekriegt, aber kann man das nicht irgendwie kürzen?

PHP:
<?php
include ("class_db.php");

$planID = 4;

$db = new DB("localhost", "", "", "plaene");
$db->query("TRUNCATE TABLE sitzplan_{$planID}");


for ($row=1; $row<=1; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+22, $row, 1);		
}

for ($row=2; $row<=4; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+21, $row, 1);		
}

for ($row=5; $row<=7; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+22, $row, 1);		
}

for ($row=8; $row<=8; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+13, $row, 1);		
}

for ($row=9; $row<=9; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+25, $row, 1);		
}

for ($row=10; $row<=10; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+27, $row, 1);		
}

for ($row=11; $row<=11; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+37, $row, 1);		
}

for ($row=12; $row<=15; $row++)
{
	setRow($x+1, $x+31, $row, 2);		
}

for ($row=16; $row<=16; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+30, $row, 2);		
}

for ($row=17; $row<=17; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+19, $row, 3);		
}

for ($row=18; $row<=18; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+32, $row, 3);		
}

for ($row=19; $row<=21; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+33, $row, 3);		
}

for ($row=22; $row<=23; $row++)
{
	$x = (($row-1) * 0);
	setRow($x+1, $x+14, $row, 3);		
}



function setRow($von, $bis, $reihe, $kategorie)
{
	global $db, $planID;
	for($i=$von; $i<=$bis; $i++)
	{
		$db->query("INSERT INTO sitzplan_{$planID} SET
					sitz = '{$i}',
					reihe = '{$reihe}',
					kategorie = '{$kategorie}'");
	}
}
?>

PHP:
<?php
include ("class_db.php");

$planID = 4;

$db = new DB("localhost", "", "", "plaene");

$plandaten = $db->getQueryData("SELECT * FROM sitzplan_{$planID}");
//p($plandaten);
?>

<html>
	<head>
		<title>Sitzplan <?php echo $planID?></title>
			<style>
			.plan1 {
				border-collapse:collapse;
				margin-left: 10px;
			}
			.plan2 {
				border-collapse:collapse;
				margin:10 10px;
				float:left;
			}
			.row {
				border: 1px solid black;
				border-collapse:collapse;
				background-color:yellow;
				float:left;
				width:20px;
				text-align:center;
				margin-right:10px;
			}
			.sitz {
				border: 2px solid black;
			}
			</style>
	</head>
<body>
<table class="plan1" id="plan1">
		<?php
			$i=0;
			for($row=1; $row<=1; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>{$row}</td>";
					for($seat=1; $seat<=22; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
				echo "</tr>";
			}

		?>

	<?php

		for($row=2; $row<=4; $row++)
		{
			echo "<tr>";
			echo "<td class='row'>{$row}</td>";
				for($seat=1; $seat<=21; $seat++)
				{
					$sitzdaten = $plandaten[$i];
					echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
					$i++;
				}
			echo "</tr>";
		}
		?>
		
		<?php

		for($row=5; $row<=7; $row++)
		{
			echo "<tr>";
			echo "<td class='row'>{$row}</td>";
				for($seat=1; $seat<=22; $seat++)
				{
					$sitzdaten = $plandaten[$i];
					echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
					$i++;
				}
			echo "</tr>";
		}
		?>
		<?php

		for($row=8; $row<=8; $row++)
		{
			echo "<tr>";
			echo "<td class='row'>{$row}</td>";
				for($seat=1; $seat<=13; $seat++)
				{
					$sitzdaten = $plandaten[$i];
					echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
					$i++;
				}
			echo "</tr>";
		}
		?>
		
		<?php

		for($row=9; $row<=9; $row++)
		{
			echo "<tr>";
			echo "<td class='row'>{$row}</td>";
				for($seat=1; $seat<=25; $seat++)
				{
					$sitzdaten = $plandaten[$i];
					echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
					$i++;
				}
			echo "</tr>";
		}
		?>
		
		<?php

		for($row=10; $row<=10; $row++)
		{
			echo "<tr>";
			echo "<td class='row'>{$row}</td>";
				for($seat=1; $seat<=27; $seat++)
				{
					$sitzdaten = $plandaten[$i];
					echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
					$i++;
				}
			echo "</tr>";
		}
		?>
		
		<?php

		for($row=11; $row<=11; $row++)
		{
			echo "<tr>";
			echo "<td class='row'>{$row}</td>";
				for($seat=1; $seat<=37; $seat++)
				{
					$sitzdaten = $plandaten[$i];
					echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
					$i++;
				}
			echo "</tr>";
		}
		?>
		<?php
			
			for($row=12; $row<=15; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>{$row}</td>";
					for($seat=1; $seat<=31; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
				echo "</tr>";
			}

		?>
		
		<?php
			for($row=16; $row<=16; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>{$row}</td>";
					for($seat=1; $seat<=30; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
				echo "</tr>";
			}
		?>
		<?php
			for($row=17; $row<=17; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>{$row}</td>";
					for($seat=1; $seat<=19; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
				echo "</tr>";
			}
		?>
		
		<?php
			for($row=18; $row<=18; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>{$row}</td>";
					for($seat=1; $seat<=32; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
				echo "</tr>";
			}
		?>
		<?php
			for($row=19; $row<=21; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>{$row}</td>";
					for($seat=1; $seat<=33; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
				echo "</tr>";
			}
		?>
		
		<?php
			for($row=22; $row<=23; $row++)
			{
				echo "<tr>";
				echo "<td class='row'>{$row}</td>";
					for($seat=1; $seat<=14; $seat++)
					{
						$sitzdaten = $plandaten[$i];
						echo "<td class='sitz cat{$sitzdaten['kategorie']}'>{$sitzdaten['sitz']}</td>";
						$i++;
					}
				echo "</tr>";
			}
		?>
		</table>
</body>
</html>


PS: Wie kriege ich leere Zeilen in die Tabelle rein, also zB in der 1. Spalte sollen zuerst 5 leere Kästechen kommen und dann fängt die Zahl 1 - 22 an, und am Ende dann auch 5 leere Kästchen! Hoffe es war verständlich! :)
(Kann das auch hier mit 2 deminsionalen Array gehen?)
 
Bahnhof.

item: Du schreibst von verschiedener Anzahl Zeilen, das Beispiel aber hat versch. Anzahl Spalten. Was nun?

item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?

item: Du willst de Zeilen deiner SQL-Tabelle in eine einzige HTML-Zeile packen?

Mit diesen Infos könnt ich dir helfen, weil ich dann verstehen würde was du eigentlich willst.
Ich schau mal, wenn ich dann mal viel Zeit hab ob ich verstehe was dein Code eigentlich machen soll, dann sehe ich ev. wie man das vereinfachen könnte -- aber eben, erst wenn ich viel Zeit habe diesen Code zu analysieren und das habe ich im Moment nicht.
 
Ok danke dir trotzdem! Aber das mit den "leeren Kästchen" war verständlich oder?
So ein blödes Beispiel :D :

? ? ? ? ? [1] [2] [3] [4] [5] [6] [7] [8] [9] ? ? ? ? ?
 
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
item: Was gibt $db->getQueryData() zurück? Eine Rssource auf eine SQL-Tabelle oder ein Array oder sonstwas?
......


item: Was für leere Kästchen?

item: Was soll diese Zahlenfolge 1-9 darstellen?

Bitte gebrauche Worte um zu schreiben was du willst. Und nicht jedesmal ein anderes Beispiel, das nix mit den verangegangenen Beispielen zu tun hat. Das Verwirrt mehr als das es nutzt.

Mal einige Punkte auf die Schnelle

item: Was bewirken die folgenden Zeilen?
PHP:
$x = (($row-1) * 0);
Das ist nix anderes als $x=0;
Total unnötige Rechnerei

item: Bennen die Dinge beim Namen. zB. $x. Da weiss man erst wenn mand ie Funktion setRow() aufruft was das sein soll.

Hier mal ein Entwurf für eine Vereinfachung des ersten Scriptes
PHP:
$reihen = array(
    1 => array('SitzAnzahl' => 22, 'kat' => 1),
    2 => array('SitzAnzahl' => 21, 'kat' => 1),
    3 => array('SitzAnzahl' => 21, 'kat' => 1),
    4 => array('SitzAnzahl' => 21, 'kat' => 1),
    5 => array('SitzAnzahl' => 22, 'kat' => 1)
);
//TODO: Im Array alle Sitzreihen definieren
    
foreach($reihen as $reiheNum => $reihe){
    for($sitzNum = 1; $sitzNum <= $reihe['SitzAnzahl']; $sitzNum++){
        $db->query("INSERT INTO sitzplan_{$planID} SET
                    sitz = '{$sitzNum}',
                    reihe = '{$reiheNum}',
                    kategorie = '{$reihe['kat']}'");
    }
}

Der 2te Teil kannst du auch automatiisert auslesen
PHP:
//Annahme da mir die Frag im Thread NICHT beantwortet wurde:
//$plandaten ist ein 2-Dimensionales Array
//
//Der Array $reihen vom ersten script ist bekannt


//Auslesen der max. Breite
$maxSitze = 0;
foreach($reihen as $reihe){
   $maxSitze = max($reihe['SitzAnzahl'], $maxSitze); 
}
echo '<table>';
foreach($reihen as $reiheNum =>  $reihe){
    echo "<tr>";
    echo "<td class='row'>{$reiheNum}</td>";
    
    //Vergelichen der Anzahl Sitze mit $maxSitze um die Anzeige einzumitteln
    $linksFrei = floor($maxSitze - $reihe['SitzAnzahl'])/2;
    $rechtsFrei = ceil($maxSitze - $reihe['SitzAnzahl'])/2;
    
    //Leere Felder links einfügen
    for($i = 0; $i < $linksFrei; $i++) echo '<td />';
    
    //Die Sitze dieser Eihe ausfiltern
    $planreihe = array_filter($plandaten, create_function('$dat', "return (\$dat['reihe'] == {$reiheNum});"));
    //Sitze sorieren
    $sitzNums = array();
    foreach($planreihe as $key => $item) $sitzNums[$key] = $item['sitz'];
    array_multisort($sitzNums, SORT_ASC, $planreihe);
    
    //Sitze als Felder ausgeben
    foreach($planreihe as $item){
        echo "<td class='sitz cat{$item['kategorie']}'>{$item['sitz']}</td>";    
    }
    
    //Leere Felder rechts einfügen
    for($i = 0; $i < $rechtsFrei; $i++) echo '<td />';
    
    echo '</tr>';
}
echo '</table>';
 
Also mit deinem Code klappt es nicht bei mir, versuche aber weiter!
Das mit "leeren Kästchen" habe ich mit "colspan" gelöst, einfach verschieben.

Danke für deine Hilfe. :)
 
Zuletzt bearbeitet:
Es ist ja immer eine schlechte Idee Querys in Schleifen an eine Datenbank zu schicken.

Mit deinen ganzen Sitzen würdest du auf 585 DB-Querys kommen und das ist nicht so toll :rolleyes:
So klappts auch mit einem Query:
PHP:
// Sitze je Reihe
// 22,21,21,21,22,22,22,13,25,27,37,31,31,31,31,30,19,32,33,33,33,14,14
// Reihe 1-11 = Kat 1 :: 12-16  = 2 :: 17-23 Kat 3

$sitzeJeReihe = array(22,21,21,21,22,22,22,13,25,27,37,31,31,31,31,30,19,32,33,33,33,14,14);
$values = array();

foreach($sitzeJeReihe as $reihe=>$sitze){
	$kat=(int)null;
	if($reihe<11) $kat=1;
	else if($reihe<16) $kat=2;
	else $kat = 3;
	
	for($i=1;$i<=$sitze;$i++)
		$vaules[] = '('.$i.','.($reihe+1).','.$kat.')';
}

$db->query('INSERT INTO sitzplan_{$planID} 
				(`sitz`,`reihe`,`kategorie`)
			VALUES
				'.implode(',', $values));

PS: Auch bei Datenbanken kommen nur Strings in Anführungszeichen.
 
Da meine mehrfache Frage nach dem Resultat von $db->getQueryData() gekonnt ignoriert wird und uns auch keine Hilfe zur Hilfe getätigt wird, werde ich 123123123 keinerlei Hilfe mehr leisten.

Ich kann meine Zeit auch anders verbringen

Tschüss
 
Sorry hab vergessen die zu beantworten, ja die gibt eine Verbindung zu SQL - Tabelle. Die Plandaten werde von der "Erstell Code" übertragen!
 
Zurück