PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Per Select zeilen als Spalten umformen


stefan a
18.04.2008, 10:06:27
Hallo zusammen,

ich habe folgende Tabelle:

Name | datum | temeratur
--------------------------------
stefan | 01.01.2008 | 36
Lisa | 01.01.2008 | 37
stefan | 02.01.2008 | 36
Lisa | 02.01.2008 | 33
stefan | 03.01.2008 | 36
Lisa | 03.01.2008 | 38

ich möchte per select eine Ausgabe von

datum | stefan | lisa
01.02.2008 | 36 | 37
02.02.2008 | 36 | 36
03.02.2008 | 36 | 38

.... und Idee, wie das gehen soll.

wenn ich der Tabelle einen weiteren Namen hinzufüge, möchte ich gerne zusätzlich eine Spalte sehen, ohne dass ich das Statement anpssen muss....

Wo kann ich da nachschlagen? Ich habe die MySQL Referenz durchsucht... aber noch nicht einmal eine idee, die über Select hinaus geht

Danke Euch.

Oskar
18.04.2008, 10:56:23
Vielleicht so ???


$anfrage="SELECT * FROM `xy` ORDER BY `datum`"
or die ("Ungültige Anfrage: " . mysql_error());
$ergebnis=mysql_query($anfrage)
$doppel="";
while ($data=mysql_fetch_assoc($ergebnis)) {
if ($doppel!=$data[datum]) {
$doppel=$data[datum];
print ("$data[datum]");
print ("$data[temperatur]");
}
else {
print ("$data[temperatur]");
}
}

Nev
21.04.2008, 12:35:01
Hi @ll

Ich würde es etwas anderes schreiben, da User ausfallen können.
$sql = 'SELECT * FROM xy
ORDER BY temperatur ASC, name ASC';
$res = mysql_query($sql);

WHILE ($row = mysql_fetch_array($res)) {
$_out_array[$_date][$row['name']] = $row['temperatur'];
$_names[$row['name']];
}

ECHO '<table>';
FOREACH ($_out_array AS $_day => $_info) {
ECHO '<tr>
<td>'.$_day.'</td>';
FOREACH ($_names AS $_name => $_val) {
IF (TRUE == ISSET($_info[$_name])) {
ECHO '<td>'.$_info[$_name].'</td>';
} ELSE {
ECHO '<td>&nbsp;</td>';
}
}
ECHO '</tr>';
}
ECHO '</table>';


Zusätzlich würde ich das Datums-Format ändern
da spätestens nach einen Monat folgende Sortierung auftritt
01.02.2008
01.03.2008
02.02.2008
02.03.2008
03.02.2008
04.02.2008