Query in Tabelle richtig darstellen

Coldstorm

Gesperrt
hi...
also ich hab diese Datenbank(Anhang). Nun möchte ich bereits vorhandene Daten aus der Datenbank abrufen.
Und zwar so:

PHP:
<h3>Stundenplan für Klasse 10</h3>
	<table border="1" cellspacing="0" cellpadding="0">
	<colgroup>
	<col width="135"><col width="165"><col width="165">
	<col width="165"><col width="165"><col width="165"></colgroup>
	<tr bgcolor="#B7B7B7">
	<th>Stunde</th>
	<th>Montag</th><th>Dienstag</th><th>Mittwoch</th><th>Donnerstag</th><th>Freitag</th>
	</tr>
	<?php
	echo "<tr>"; 
		$sql = "SELECT sv.Stunde, sv.Tag, le.Name, fa.Bezeichnung, kl.KlassenID
		FROM baptime_stundenverteilung AS sv
		LEFT JOIN baptime_lehrer AS le ON sv.LehrerID = le.LehrerID
		LEFT JOIN baptime_fach AS fa ON sv.FachID = fa.FachID
		LEFT JOIN baptime_klasse AS kl ON sv.KlassenID = kl.KlassenID
		WHERE kl.KlassenID =10";
		$result = mysql_query($sql);

if (!$result) {
    echo "Abfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
    exit;
}
if (mysql_num_rows($result) == 0) {
    echo "Es wurde noch kein Stundenplan hinzugefügt.";
    exit;
}

	while ($row = mysql_fetch_assoc($result)) {
	echo "<td>";	
    echo $row['Stunde'];
	echo "</td>";
	echo "<td>";
    echo $row['Name'];
	echo "<br>";
    echo $row['Bezeichnung'];
	echo "</td>";	

	echo "</tr></table>"; 
}
mysql_free_result($result);
			?>

Momentan schaut das leider nur so aus(Anhang Design).
Aber der Stundenplan soll komplett eingetragen sein in Tabellen, soll heißen also 8 Stunden jeweils an einem Tag, der Lehrer und das Fach. Stunde und Tag sind erstmal nicht so wichtig naja...
Kann mir da jemand helfen bitte, hab es schon so lange versucht und komme ned drauf...
 

Anhänge

  • datenbank.JPG
    datenbank.JPG
    17,6 KB · Aufrufe: 23
  • design.JPG
    design.JPG
    33,1 KB · Aufrufe: 22
Zuletzt bearbeitet:
Dein Problem müsste sein, du schließt nach jedem Durchlauf in der while-Schleife die Tabelle, öffnest sie aber nicht.

Wenn ich das richtig erkenne müsst die Struktur doch so aussehn
PHP:
while(...) {
   echo "<tr>";
   echo "<td>";
   // ...
   echo "</tr>";
}
echo "<table>";

ist also alles nur eine Formatierungsfrage.
 
Richtig, wie just-click schon sagte. jedoch auch das <td> wieder mit </td> schließen.

ich mache das immer so. ich bastel mir erst die tabelle, also oben die spalte mit spaltenbezeichnung und dann eine leere zeile mit gleicher anordnung. wenn das richtig dargestellt wird, kannst du den HTML-Code per echo in der while-Schleife ausgeben. Dann kommen da keine Fehler rein.

Liebe Grüße,
QUEST08
 
habs probiert...naja so nochmal bisschen genauer mein Problem
Ich habs nun so versucht:
PHP:
<h3>Stundenplan für Klasse 10</h3>
    <table border="1" cellspacing="0" cellpadding="0">
    <colgroup>
    <col width="165"><col width="165"><col width="165">
    <col width="165"><col width="165"><col width="165"></colgroup>
    <tr bgcolor="#B7B7B7">
    <th>Montag</th><th>Dienstag</th><th>Mittwoch</th><th>Donnerstag</th><th>Freitag</th>
    </tr>
    <?php
    echo "<tr>"; 
        $sql = "SELECT sv.Stunde, sv.Tag, le.Name, fa.Bezeichnung, kl.KlassenID
        FROM baptime_stundenverteilung AS sv
        LEFT JOIN baptime_lehrer AS le ON sv.LehrerID = le.LehrerID
        LEFT JOIN baptime_fach AS fa ON sv.FachID = fa.FachID
        LEFT JOIN baptime_klasse AS kl ON sv.KlassenID = kl.KlassenID
        WHERE kl.KlassenID =10";
        $result = mysql_query($sql);

if (!$result) {
    echo "Abfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
    exit;
}
if (mysql_num_rows($result) == 0) {
    echo "Es wurde noch kein Stundenplan hinzugefügt.";
    exit;
}

    while ($row = mysql_fetch_assoc($result)) {
    echo "<td>";
    echo $row['Name'];
    echo "<br>";
    echo $row['Bezeichnung'];
    echo "</td>";
    echo "</tr>";
    

}

echo "</table>"; 
mysql_free_result($result);
            ?>
Etwas vereinfacht...schauts dann so aus(Anhang)

Wie muss ich denn nun schreiben, damit diese insgesamt 40(8x5) Datensätze nicht nur am Montag, sondern auch in den Spalten Dienstag, Mittwoch, Donnerstag und Freitag angezeigt werden? Also in den 5 Tagen jeweils 8 Datensätze. Geht das mit einer Schleife...oder vielleicht besser wäre da der Datenbankabruf...weil ich hab ja für jeden Datensatz schon gespeichert, an welchem Tag(1-5) und welche Stunde er hat (1- 8 )...

Datenbankschema hab ich ja schon am Anfang gepostet...aber hier nochmal der insert des Stundenplans(das soll dann aufgerufen werden aus der Datenbank, sollte eventuell hilfreich sein)

PHP:
<?php
foreach ($_POST['LehrerID'] as $tag => $restarray) {
    foreach ($restarray as $stunde => $lehrer) {
        $sql = "INSERT INTO baptime_stundenverteilung 
 (`LehrerID`,`FachID`, `Stunde`, `Tag`, `KlassenID`)
 VALUES(
 ".sichere_eingabe($_POST['LehrerID'][$tag][$stunde]).",
 ".sichere_eingabe($_POST['FachID'][$tag][$stunde]).",
 ".sichere_eingabe($stunde).",
 ".sichere_eingabe($tag).",
 ".sichere_eingabe($_POST['KlassenID'][0]).")";  
                    
                   //  echo "Mein sqlQuery ist:".$sql; 
				   $result = mysql_query($sql);
		
                                                    
/*      if (!mysql_query($sql))
    {
        echo mysql_error()."\n";
    }  */
	}
}

Brauche Hilfe bitte, schlage mich schon so lange damit rum...
 

Anhänge

  • stundenplan.JPG
    stundenplan.JPG
    29,6 KB · Aufrufe: 38
Hi,

sorge einfach dafür, dass das <tr> erst nach 5 Einträgen geschlossen wird, beispielsweise so:
PHP:
	$i = 0;

	while ($row = mysql_fetch_assoc($result)) {
		$i++;
		echo "<td>"; 
		echo $row['Name']; 
		echo "<br>"; 
		echo $row['Bezeichnung']; 
		echo "</td>";
	
		if ($i % 5 == 0) {
			echo "</tr>";
		}
     
	}
 
Zuletzt bearbeitet:
hm das funktiniert soweit...nur er trägt es falsch ein..beispielsweise erste Stunde Montag trägt er richtig ein, allerdings trägt er die zweite Stunde Montag dann bei der ersten Stunde Dienstag ein...also genau falsch rum...
kann man da was machen vielleicht mit den Datenbankeinträgen? Sonst hab ich zu jedem Datensatz "Stunde" und "Tag" ja eigentlich umsonst gespeichert...

er trägt es so ein( Hinzufügen und Ausgabe) im Anhang
Wie kann ich das ändern?

Das ist nochmal der Code zu dem Screenshot:

PHP:
<h3>Stundenplan für Klasse 10</h3>
    <table border="1" cellspacing="0" cellpadding="0">
    <colgroup>
    <col width="165"><col width="165"><col width="165">
    <col width="165"><col width="165"><col width="165"></colgroup>
    <tr bgcolor="#B7B7B7">
    <th>Montag</th><th>Dienstag</th><th>Mittwoch</th><th>Donnerstag</th><th>Freitag</th>
    </tr>
    <?php
    echo "<tr>"; 
        $sql = "SELECT sv.Stunde, sv.Tag, le.Name, fa.Bezeichnung, kl.KlassenID
        FROM baptime_stundenverteilung AS sv
        LEFT JOIN baptime_lehrer AS le ON sv.LehrerID = le.LehrerID
        LEFT JOIN baptime_fach AS fa ON sv.FachID = fa.FachID
        LEFT JOIN baptime_klasse AS kl ON sv.KlassenID = kl.KlassenID
        WHERE kl.KlassenID =10";
        $result = mysql_query($sql);

if (!$result) {
    echo "Abfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
    exit;
}
if (mysql_num_rows($result) == 0) {
    echo "Es wurde noch kein Stundenplan hinzugefügt.";
    exit;
}

    $i = 0;

    while ($row = mysql_fetch_assoc($result)) {
        $i++;
        echo "<td>"; 
        echo $row['Name']; 
        echo "<br>"; 
        echo $row['Bezeichnung']; 
        echo "</td>";
    
        if ($i % 5 == 0) {
            echo "</tr>";
        }
     
    }  

echo "</td></tr></table>"; 
mysql_free_result($result);
            ?>
 

Anhänge

  • hinzufügen.JPG
    hinzufügen.JPG
    31,3 KB · Aufrufe: 21
  • ausgabe.JPG
    ausgabe.JPG
    27,6 KB · Aufrufe: 16
Zurück