PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grafische Übersicht für Bowlingbelegungen!


Boneshaker
02.05.2005, 18:23:37
HAY @ ALL

Steh mal wieder eine wenig auf dem Schlauch..

Ich möchte einen grafischen Bowling-Belegungsplan anzeigen lassen!

Also eine Übersicht welche Bahn zu welcher Zeit belegt ist! Eigentlich nichts aufregendes, hier ein Sreenshoot: Bowlingplanübersicht (http://www.boneshaker.de/images/others/uebersicht.gif)

Und hier die Tabelle dazu: DB (http://www.boneshaker.de/images/others/db.gif)

TS_Start ist die Startzeit als UNIX-Timestamp
TS_Start ist die Endzeit...

(Timestamp und Date spielen jetzt keine Rolle...)

Jetzt ist die große Frage, wie ich das ganze richtig anzeigen lasse, so dass eine belegte Bahn zur richtigen Zeit grün markiert wird. (wie im Screenshot)

So sieht der Code (in etwa) bisher aus:

echo "<table>\n";
echo "<tr>\n";
echo "<td class=tdhead align=center><b>Uhrzeit</b></td>\n";
// Uhrzeit (von 9 Uhr - 3 Uhr des folgenden Tages)
for($i=9;$i<=27;$i++)
{
if($i>23) $h = $i - 24;
else $h = $i;
echo "<td class=tdhead align=right><b>$h</b></td>\n";
echo "<td class=tdhead align=left>30</td>\n";
}
echo "</tr>\n";
// Anzahl Bahnen
for($b=1;$b<=3;$b++)
{
echo "<tr>\n";
echo "<td align=center><b>Bahn $b</b></td>\n";

// Wieder die Uhrzeitschleife
for($i=9;$i<=27;$i++)
{
if($i>23) $h = $i - 24;
else $h = $i;

// HIER FEHLT MIR DER NÖTIGE DENKANSTOSS

echo "<td";
// Abfrage ganze Stunde (z.b. 14 Uhr)
if() echo " class=tdb_full_left>&nbsp;";
else echo " class=tdb_free_left>&nbsp;"; echo "</td>";
echo "<td";
// Abfrage halbe Stunde (z.b. 14:30 Uhr)
if() echo " class=tdb_full_right>&nbsp;";
else echo " class=tdb_free_right>&nbsp;"; echo "</td>";
}
echo "</tr>\n";
}
echo "</table>\n";

Natürlich fehlt jetzt noch die passende mysql Abfrage. Ich glaub hier hängts auch! Hab schon etliche Sachen versucht! Auch mit BETWEEN konnt ich noch keine effiziente Lösung finden!

Ich hoffe ihr habt soweit alles verstanden, wie das funzen sollten..

Ich dank euch auch schon im Voraus für eure "Denkleistung"

vielleicht ist ja schon das ganze Prinzip falsch, und ihr habt einen eleganteren Vorschlag..

|Coding
02.05.2005, 19:20:00
Dazu muesstest Du nur Folgendes machen:

if(TS_Start > time() && time() < TS_End){
echo 'gruen';
}else{
echo 'rot';
}
Wobai Du TS_Start und TS_End noch durch die entsprechenden DB-Werte ersetzen musst.

xabbuh
02.05.2005, 19:30:04
time() würde ich allerdings durch mktime() ersetzen, so dass du als Parameter dafür die exakten Daten des gerade aktuellen Tages und der aktuellen Stunde im Kalender einsetzen kannst.

Boneshaker
02.05.2005, 21:20:27
habe noch folgenden code in die for-schleife eingebaut:

$ts = mktime($h,0,0,$this->mm,$this->dd,$this->yy);

$result = mysql_query("select TS_Start,TS_End from ".$this->table."
WHERE(TS_Start > $ts AND $ts < TS_End AND Bahn like '%$b%')");

if(mysql_fetch_array($result)) -> grün
else - > rot

bringt mich leider nicht zum ziel.. ich glaub ich sollte morgen weitermachen!

|Coding
02.05.2005, 21:24:52
if(mysql_fetch_array($result)) -> grün
else - > rot
Ich darf behaupten, dass das so eh nicht funktionieren kann.

Boneshaker
11.05.2005, 11:23:31
hast recht, aber so sollte funktionieren:


$ts = mktime($h,0,0,$this->mm,$this->dd,$this->yy);
$ts2 = mktime($h,30,0,$this->mm,$this->dd,$this->yy);

$result1 = mysql_query("select * from ".$this->table." WHERE($ts >= TS_Start AND $ts < TS_End AND Bahn like '%$b%')");
$r1 = mysql_fetch_array($result1);

$result2 = mysql_query("select * from ".$this->table." WHERE($ts2 >= TS_Start AND $ts2 < TS_End AND Bahn like '%$b%')");
$r2 = mysql_fetch_array($result2);


$r1 ist für die vollen stunden
$r2 ist für die halben stunden

|Coding
11.05.2005, 17:11:19
Sind TS_Start und TS_End definierte Konstanten? (Eine Konstante definiert man mit define('KONST_NAME', 'KONST_WERT');)

Boneshaker
11.05.2005, 18:46:22
ähm... TS_Start und TS_End sind die DB-Felder..
die Abfrage befindet sich in einer Funktion einer Klasse..

ja ich weiß, ein bißchen verwirrend...