Web-Tor Medlem sedan nov. 2000 13 890 inlägg Frågan 24 okt. 2001 07:32 #1 Jag är i behov av hjälp!
Jag har tänkt så det knakar men har ingen lösning i sikte.
Jag har en databas med tre kolumner.
Dom ser ut så här:
[b]Name | Week | Status[/b]
-----------------------
Kalle | 10 | 10
Kalle | 12 | 20
Kalle | 14 | 30
Kalle | 15 | 40
Lasse | 12 | 21
Lasse | 14 | 31
Lasse | 15 | 41
Lasse | 16 | 51
Nu skulle jag vilja ha ut all data och visa den i en vanlig tabell.
Så här ungefär:
[b]Week Kalle Lasse[/b]
-----------------------
10 10 -
12 20 21
14 30 31
15 40 41
16 - 51
Antalet personer och veckor är inte konstant utan kan variera.
Visa nu vad ni går för och hjälp en stackars PHP-kompis.
P pimme Medlem sedan sep. 2001 1 086 inlägg $sql = "select distinct week from tabell";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
$sql2 = "select * from tabell where week = $row->week";
$res2 = mysql_query($sql2);
while($row2 = mysql_fetch_object($res2)){
echo $row2->name
}
}
borde fungera....
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Nja...
Det enda jag får ut på skärmen är:
Kalle
Kalle
Lasse
Kalle
Lasse
Kalle
Lasse
Lasse
P pimme Medlem sedan sep. 2001 1 086 inlägg jo, men du får ju ändra lite i utskriften så att du får rätt format.....
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Läs igenom mitt första inlägg en gång till. Jag vill att den skall skriva ut Kalle EN gång och Lasse EN gång.
Sedan måste jag ju få ut veckorna och statusen också...
P pimme Medlem sedan sep. 2001 1 086 inlägg echo "<table><tr><th>Week</th>";
while($hej = mysql_fetch_object(mysql_query("select distinct name from tabell"))){
echo "<th>$hej->name</th>";
}
echo "</tr>";
sql = "select distinct week from tabell";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo "<tr>";
echo "<td>$row->week</td>";
$sql2 = "select * from tabell where week = $row->week";
$res2 = mysql_query($sql2);
while($row2 = mysql_fetch_object($res2)){
echo "<td>$row2->status</td>";
}
echo "</tr>";
}
nåt sånt kanske
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Nu är det nära!
Så här set utskriften ut nu:
[b]Week Kalle Lasse[/b]
-----------------------
10 10
12 20 21
14 30 31
15 40 41
16 [b][red]51[/b]
Det blir bara ett litet fel.
Statusen för vecka 16 hamnar på Kalle i stället för Lasse...
Kim Medlem sedan jan. 2000 7 697 inlägg Jag lånar pimmes kod så länge
echo "<table><tr><th>Week</th>";
while($hej = mysql_fetch_object(mysql_query("select distinct name from tabell"))) {
echo "<th>$hej->name</th>";
}
echo "</tr>";
sql = "select distinct week from tabell";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)) {
echo "<tr>";
echo "<td>$row->week</td>";
$sql2 = "select * from tabell where week = $row->week";
$res2 = mysql_query($sql2);
while($row2 = mysql_fetch_object($res2)) {
if (!$row2->status) {
echo "<td>-</td>";
}else {
echo "<td>$row2->status</td>";
}
echo "</tr>";
}
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Det gjorde tyvärr inte nån skillnad Kim.
if (!$row2->status) {
echo "<td>-</td>";
}else {
echo "<td>$row2->status</td>";
}
$row2->status har ju alltid ett värde...
Kim Medlem sedan jan. 2000 7 697 inlägg Stupid me! Vad har det för värde när det blir tomt då?
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Den blir ju aldrig tom. Det är det som är problemet...
Om vi tar den första raden:
[b]Week Kalle Lasse[/b]
-----------------------
10 10 -
Denna vecka har alltså inte Lasse rapporterat nån status och jag vill skriva ut ett streck.
Hur mycket jag än tänker så kommer jag inte på någon lösning.
Kim Medlem sedan jan. 2000 7 697 inlägg Vad får du ut för värde då? Du måste ju få ut något värde väl?
Sen är det väl bara att ersätta det med hjälp av str_replace()
L LarsG Medlem sedan dec. 2000 12 464 inlägg $sql2 = "select * from tabell t1 left join tabell t2 on t2.week = $row->week
and t1.name = t2.name and t1.week = t2.week";
Kanske värt att testa?
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Utskriften blir så här:
Week Kalle Lasse
-----------------------
10 10 [b][red]*[/b]
12 20 21
14 30 31
15 40 41
16 51 [b][red]*[/b]
* innebär att den inte skriver ut någonting. Inte ens en cell.
Raden där det står echo "<td>$row2->status</td>"; körs bara en gång för vecka 10 och 16.
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Jag fattar faktiskt inte hur jag skall använda din sql-fråga Lars men det verkar som en väldigt krånglig lösning.
Att visa resultatet från en databas i en matris borde ju vara skitlätt! Jag fattar inte att det skall vara så krångligt.
Ingen som kan komma på något annat sätt att lösa problemet?
L LarsG Medlem sedan dec. 2000 12 464 inlägg Jag tänkte bara att du skulle ersätta pimmes $sql2 med min fråga.
Använder du Mysql?
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Faran över!
Min ASP-kunniga kollega har återigen kommit till min räddning.