!!! Listing 1: Einfache JavaScript-Funktion Textwechsel erster Text zweiter Text !!! Listing 2: SVG aus DBMS erzeugen (index.php) '; // jahr abfragen/bestimmen if (!$thisveryyear) { $thisveryyear = $thisyear; } // wie viele aktive autor/inn/en $my_aquery = "select count(*) from autoren where aktiv=1 "; $howmanyauts = mysql_fetch_row(mysql_query($my_aquery)); // welche veranstaltungen $my_vquery = "select id, name, dayofyear(anfang), dayofyear(ende), ort "; $my_vquery .= " from veranstaltungen where year(anfang) = $thisveryyear "; $my_vquery .= " order by dayofyear(anfang) "; $eventres = mysql_query($my_vquery); // query fuer die abwesenheitsdaten $my_query = "select dayofyear(t.anfang), "; $my_query .= " dayofyear(t.ende), t.grund, "; $my_query .= " t.ort, t.firma, a.kuerzel, "; $my_query .= " a.vname, a.nname"; $my_query .= " from termine t, autoren a where"; $my_query .= " year(t.anfang) = $thisveryyear"; $my_query .= " and t.aut_id = a.autnum"; $my_query .= " order by a.kuerzel, month(t.anfang), dayofmonth(t.anfang)"; $my_res = mysql_query($my_query); // y-wert fuer autor/in + y-schrittweite $auty = 60; $stepy = 20; // autorenkuerzel $autk =""; $oldautk =""; // anfang des rechtecks $xrectstart = 20; $yrectstart = 15; $yrectend = $yrectstart + ($howmanyauts[0] * 20); // aeusseres svg-element fuellen echo ''; echo ''; // das jahr als text echo '', 'urlaub und lesungen ', $thisveryyear, ''; echo "\n\n"; // funktion zum zeichnen des rechtecks // innerhalb eines geschachtelten svg-Elements echo ''; // rahmen do_calrect($xrectstart, $yrectstart + 25, $yrectend + 25, $eventres); // ergebnis auslesen while (list($anfangstag,$endtag,$grund,$ort,$firma,$aut_kuerzel,$avname,$anname) = mysql_fetch_row($my_res)) { // farbe: urlaub oder lesung if (strtoupper($grund) == "D") { $mycolour = "#666699"; } else { $mycolour = "#336633"; } // abwesenheit ueber die jahresgrenze if ($endtag < $anfangstag) { $endtag = 365; } // kuerzel und abwesenheit ausgeben $autk = $aut_kuerzel; $auty2 = $auty + 5; // mindestbreite fuer abwesenheit if (($endtag - $anfangstag) < 1) { $rwidth = 2; } else { $rwidth = 2 * ($endtag - $anfangstag); } // wenn neuer urlauber/lesereisender: if ($autk != $oldautk) { $auty += $stepy; $auty2 += 20; // linie vor dem einzeleintrag echo ''; echo "\n\n"; // autorennamen ausgeben echo '', strtolower($anname), ''; echo "\n\n"; $oldautk = $autk; } echo ''; if (strtoupper($grund) == "D") { echo ''; } echo ''; echo "\n\n"; // Lesungsdaten aktivierbar if (strtoupper($grund) == "D") { echo '', $firma, ' [', $ort, ']', ''; echo "\n\n"; } } mysql_close(); // legende schreiben do_legend(385, 397); echo ' '; echo ' '; ?> !!! Listing 3: Variable und Funktionen (div.inc.php) '; echo "\n"; echo ''; echo "\n"; /* echo ''; */ echo ''; } // rechteck fuer die daten und ein paar linien zeichnen function do_calrect($xrectstart, $yrectstart, $yrectend, $eventres) { global $monate, $monatsnamen; $firstline = 70; // rechteck um die ausgabedaten echo "\n"; echo ''; // waagerechte linien vor den daten echo ''; // erste senkrechte linie echo "\n"; echo ''; $xrectstart += $firstline; // senkrechte linien zwischen den monaten for ($i=0; $i <12; $i++) { $xrectend = $xrectstart + (2 * $monate[$i]); if ($i <11) { echo ''; } // monate ausgeben echo '', $monatsnamen[$i], ''; // veranstaltungen aus gesonderter tabelle ausgeben do_events($xrectstart, $yrectstart, $yrectend, $eventres); $xrectstart = $xrectend; } //ende der for-schleife } // ende von do_calcrect // legende ausgeben function do_legend ($ya, $yy) { global $thisyear, $thisveryyear, $nextyear; if ($thisveryyear == $nextyear) { $querystr = "?thisveryyear=" . $thisyear; $refyear = $thisyear; } else { $querystr = "?thisveryyear=" . $nextyear; $refyear = $nextyear; } echo ''; echo 'urlaub etc.'; echo ''; echo 'lesung etc.'; echo ' '; echo 'messen...'; echo '', '---> daten für ', $refyear, ''; } // veranstaltungen ausgeben function do_events ($xstart, $ystart, $yend, $vres) { while (list($id,$name,$anfang,$ende,$ort) = mysql_fetch_row($vres)) { $xhere = $xstart + (2 * $anfang); echo '', '', ''; echo '', $name, ' [', $ort, ']'; } } ?> !!! Listing 4: Formatierung (autoren.css) text.jahr { font-family: sans-serif; font-size:14; fill: #333399; font-weight: bold; } text.lesung { text-anchor: end; fill: #993333; font-family: monospace; font-size: 12; visibility: hidden; } text.kuerzel { font-family: sans-serif; font-size: 11; fill: #333399; font-weight: bold; } text.monat { font-family: sans-serif; font-size: 11; fill: #333399; font-weight: bold; } line.laengs { fill: none; stroke: #ffffff; stroke-width: 1; }