webForumDet fria alternativet

Från databas till HTML-tabell

16 svar · 300 visningar · startad av Web-Tor

Web-TorMedlem sedan nov. 200013 890 inlägg
#1

Jag är i behov av hjälp! :x
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. :)

------------------
/Tor
www.tor.nu

[Redigerat av Web-Tor den 24 okt 2001]

pimmeMedlem sedan sep. 20011 086 inlägg
#2

$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....

------------------
//pimme

Web-TorMedlem sedan nov. 200013 890 inlägg
#3

Nja...

Det enda jag får ut på skärmen är:
Kalle
Kalle
Lasse
Kalle
Lasse
Kalle
Lasse
Lasse

------------------
/Tor
www.tor.nu

pimmeMedlem sedan sep. 20011 086 inlägg
#4

jo, men du får ju ändra lite i utskriften så att du får rätt format.....

------------------
//pimme

Web-TorMedlem sedan nov. 200013 890 inlägg
#5

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å...

------------------
/Tor
www.tor.nu

pimmeMedlem sedan sep. 20011 086 inlägg
#6

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

------------------
//pimme

[Redigerat av pimme den 25 okt 2001]

Web-TorMedlem sedan nov. 200013 890 inlägg
#7

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. :x
Statusen för vecka 16 hamnar på Kalle i stället för Lasse...

------------------
/Tor
www.tor.nu

[Redigerat av Web-Tor den 25 okt 2001]

KimMedlem sedan jan. 20007 697 inlägg
#8

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>";
}

------------------
-mucho-

Web-TorMedlem sedan nov. 200013 890 inlägg
#9

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...

------------------
/Tor
www.tor.nu

KimMedlem sedan jan. 20007 697 inlägg
#10

Stupid me! Vad har det för värde när det blir tomt då?

------------------
-mucho-

Web-TorMedlem sedan nov. 200013 890 inlägg
#11

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. :x

------------------
/Tor
www.tor.nu

KimMedlem sedan jan. 20007 697 inlägg
#12

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()

------------------
-mucho-

LarsGMedlem sedan dec. 200012 464 inlägg
#13
$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?

------------------
essentitia preter non sans multiplicandum

Web-TorMedlem sedan nov. 200013 890 inlägg
#14

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.

------------------
/Tor
www.tor.nu

[Redigerat av Web-Tor den 25 okt 2001]

Web-TorMedlem sedan nov. 200013 890 inlägg
#15

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?

------------------
/Tor
www.tor.nu

LarsGMedlem sedan dec. 200012 464 inlägg
#16

Jag tänkte bara att du skulle ersätta pimmes $sql2 med min fråga.

Använder du Mysql?

------------------
essentitia preter non sans multiplicandum

Web-TorMedlem sedan nov. 200013 890 inlägg
#17

Faran över!
Min ASP-kunniga kollega har återigen kommit till min räddning.

------------------
/Tor
www.tor.nu

[Redigerat av Web-Tor den 25 okt 2001]

145 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)