Avatar billede blach Nybegynder
19. december 2003 - 10:52 Der er 25 kommentarer og
1 løsning

Logo i kalender

Jeg har fået lavet et kalender-script, og det virker også ganske glimrende.. Men nu vil jeg gerne have en "type" på hver dato - altså om det f.eks. er en koncert, biograf premiere osv. Som scriptet er lige nu, viser jeg et billede til højre for hver overskrift. Jeg vil i stedet gerne have at den bliver vist i venstre kolonne - altså under datoerne.
Kan det lade sig gøre?

-- Script --
<?php
    # Functions
    function date_info($info, $month, $year) {
        return date($info, mktime(0,0,0,$month,1,$year));
    }

    # DB CONNECT
    open();

    function getBookings($month, $year) {
        $sql = mysql_query("
            SELECT DAYOFMONTH(startdate) AS day, days, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE MONTH(startdate) = '$month' && YEAR(startdate) = '$year'
            ORDER BY day ASC
        ") or die(mysql_error());

        $res = array();
        if (!mysql_num_rows($sql)) return $res;

        while ($foo = mysql_fetch_assoc($sql)) {
            if ($foo['days'] == 1) {
                $res[$foo['day']]['title'] .= "<b>".$foo['title']."</b><IMG SRC=graph/kalender_".$foo['type'].".jpg WIDTH=30 HEIGHT=30>\n".$foo['beskrivelse']."\n\n";
                $res[$foo['day']]['totalrooms'] = $res[$foo['day']]['totalrooms'] + $foo['rooms'];
            } else {
                $today = $foo['day'];
                for($i=1; $i<=$foo['days']; $i++) {
                    $res[$today]['title'] .= "<b>".$foo['title']."</b> (Dag ".$i."/".$foo['days'].") <IMG SRC=graph/kalender_".$foo['type'].".jpg WIDTH=30 HEIGHT=30>\n".$foo['beskrivelse']."\n\n";
                    $res[$today]['totalrooms'] = $res[$today]['totalrooms'] + $foo['rooms'];
                    $today++;
                }
            }
        }

        return $res;
    }

    # Pre-values
    $year = date('Y');
    $month = date('m');

    # Catch month or year if passed
    if (isset($_GET["month"]) && $_GET["month"] >= 1 && $_GET["month"] <= 12) $month = $_GET["month"];
    if (isset($_GET["year"]) && $_GET["year"] > $year) $year = $_GET["year"];

    # Static date names - language specific
    $MONTHNAME = array("", "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");

    # Month for listing
    $listingmonth = date('m');
    if ($year != date('Y')) $listingmonth = 1;

    # Init months array with days and first day of month
    $MONTHINFO = array();

    # Initialize days in month
    $MONTHINFO["days"] = date_info("t", $month, $year);
    $MONTHINFO["firstday"] = date_info("w", $month, $year);
    $MONTHINFO["weekno"] = date_info("W", $month, $year);

    # Get room assignment
    $ASSIGNMENT = getBookings($month, $year);

    # Set colorclass for td
    $class = "red";
    if ((($MONTHS["firstday"]+$i)%7) == 6) $class = "normal";
?>
<div align="center"><B>År 2003/2004:</B><BR><?php for ($i=$listingmonth; $i<=12; $i++) { ?> | <a href='index.php?side=kalender&year=<?php echo $year; ?>&month=<?php echo $i; ?>'><?php echo $MONTHNAME[$i]; ?></a> <?php } ?>|<a href='index.php?side=kalender&year=<?php echo $year+1; ?>&month=1'><?php echo $year+1; ?></a></div>

<br><br>

<table width="350" border="0" cellspacing="0" cellpadding="0" align="center">
<tr valign="top">
<td colspan="3" class="month" valign="top"><b><?php echo $MONTHNAME[$month]; ?> <?php echo $year; ?></b></td>
</tr>
<?php for ($i=1; $i<=$MONTHINFO["days"]; $i++) { ?>

<tr>
<td witdh="100" valign="top" class="<?php echo $class; ?>"><?php echo $i; ?>.
<?php # Insert week no if week is starting
    if ((($MONTHINFO["firstday"]+$i)%7) == 2) echo "Uge: ".++$MONTHINFO["weekno"];
?><BR>
<?php
  // BILLEDE SKAL IND HER !!!
?>
</td>
<td witdh="250" class="<?php echo $class; ?>" valign="top">
<?php
    if (isset($ASSIGNMENT[$i])) {
        echo nl2br($ASSIGNMENT[$i]['title'])."<br>";
        echo $ASSIGNMENT[$i]['totalrooms'] . " i alt.";
    }
?>
</td>
</tr>
<?php } ?>
</table>
Avatar billede Slettet bruger
19. december 2003 - 15:01 #1
Lav en flok billeder, et for hver type. De skal hedde det samme som typen. Læg dem i samme mappe.

For at gøre det lidt nemmere at rette til, laver du 2 variabler et sted i toppen af dist script.

$picfolder="typepics/"; // den mappe billederne er i.
$pictype=".png"; // eller hvilken fælles endelse dine billeder har

Der, hvor der står // BILLEDE SKAL IND HER !!! indsætter du følgende:

if (!empty($ASSIGNMENT[$i]['type'])){
  echo "<img src='{$picfolder}{$ASSIGNMENT[$i]['type']}{$pictype}'>";
}
Avatar billede blach Nybegynder
19. december 2003 - 17:36 #2
Hmm, jeg kan ikke få den til at reagere på
if (!empty($ASSIGNMENT[$i]['type'])){
}

Og du kan forresten se kalenderen her:
http://www.lektiecafe.dk/index.php?site=kalender
Avatar billede Slettet bruger
19. december 2003 - 22:55 #3
Jeg havde lige misforstået lidt om dit script, tror jeg.

Din getBookings()-funktion kan godt returnere mere end en overskrift til samme dag, ikke? Og det vil dermed være krævet, at den også kan vise mere end et billede pr. dato?
Avatar billede blach Nybegynder
20. december 2003 - 00:05 #4
Ja, det er nemlig rigtigt.. Den kan godt vise mange "events" på en dag!

Og så var det jeg tænkte, i stedet for at have et billede sat ind ved overskriften, så kunne jeg godt tænke mig at få det sat ind lige under hver dato - i tilfælde af flere events, skal billederne være under hinanden ud for hver beskrivelse. (BILLEDE SKAL IND HER !!! skulle være stedet :] )


Kan det lade sig gøre?
Avatar billede Slettet bruger
20. december 2003 - 00:14 #5
Naturligvis kan det lade sig gøre.

Problemet er, at getBookings-funktionen smider alle overskrifter, der hører til samme dag ind i en enkelt streng, så det skal der laves om på.

Jeg vil lige tænke over det, men det vil nok komme til at blive noget med et ekstra niveau på arrayet.
Avatar billede Slettet bruger
20. december 2003 - 01:26 #6
Jeg har ikke afprøvet, men den her burde virke. Jeg har lavet en undertabel til events, så billederne kommer til at stå ud for den tilhørende tekst. Ellers ville en lang tekst kunne have rykket al teksten.

<?php
    # Functions
    function date_info($info, $month, $year) {
        return date($info, mktime(0,0,0,$month,1,$year));
    }

    # DB CONNECT
    open();

    function getBookings($month, $year) {
        $sql = mysql_query("
            SELECT DAYOFMONTH(startdate) AS day, days, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE MONTH(startdate) = '$month' && YEAR(startdate) = '$year'
            ORDER BY day ASC
        ") or die(mysql_error());

        $res = array();
        if (!mysql_num_rows($sql)) return $res;

        while ($foo = mysql_fetch_assoc($sql)) {
            if ($foo['days'] == 1) {
                $res[$foo['day']]['title'][] = "<b>".$foo['title']."</b>";
                $res[$foo['day']]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg WIDTH=30 HEIGHT=30>\n";
                $res[$foo['day']]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                $res[$foo['day']]['totalrooms'] = $res[$foo['day']]['totalrooms'] + $foo['rooms'];
            } else {
                $today = $foo['day'];
                for($i=1; $i<=$foo['days']; $i++) {
                    $res[$today]['title'][] = "<b>".$foo['title']."</b> (Dag ".$i."/".$foo['days'].")";
                    $res[$foo['day']]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg WIDTH=30 HEIGHT=30>\n";
                    $res[$foo['day']]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                    $res[$today]['totalrooms'] = $res[$today]['totalrooms'] + $foo['rooms'];
                    $today++;
                }
            }
        }

        return $res;
    }

    # Pre-values
    $year = date('Y');
    $month = date('m');

    # Catch month or year if passed
    if (isset($_GET["month"]) && $_GET["month"] >= 1 && $_GET["month"] <= 12) $month = $_GET["month"];
    if (isset($_GET["year"]) && $_GET["year"] > $year) $year = $_GET["year"];

    # Static date names - language specific
    $MONTHNAME = array("", "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");

    # Month for listing
    $listingmonth = date('m');
    if ($year != date('Y')) $listingmonth = 1;

    # Init months array with days and first day of month
    $MONTHINFO = array();

    # Initialize days in month
    $MONTHINFO["days"] = date_info("t", $month, $year);
    $MONTHINFO["firstday"] = date_info("w", $month, $year);
    $MONTHINFO["weekno"] = date_info("W", $month, $year);

    # Get room assignment
    $ASSIGNMENT = getBookings($month, $year);

    # Set colorclass for td
    $class = "red";
    if ((($MONTHS["firstday"]+$i)%7) == 6) $class = "normal";
?>
<div align="center"><B>År 2003/2004:</B><BR><?php for ($i=$listingmonth; $i<=12; $i++) { ?> | <a href='index.php?side=kalender&year=<?php echo $year; ?>&month=<?php echo $i; ?>'><?php echo $MONTHNAME[$i]; ?></a> <?php } ?>|<a href='index.php?side=kalender&year=<?php echo $year+1; ?>&month=1'><?php echo $year+1; ?></a></div>

<br><br>

<table width="350" border="0" cellspacing="0" cellpadding="0" align="center">
<tr valign="top">
<td colspan="2" class="month" valign="top"><b><?php echo $MONTHNAME[$month]; ?> <?php echo $year; ?></b></td>
</tr>
<?php for ($i=1; $i<=$MONTHINFO["days"]; $i++) { ?>

<tr>
<td colspan='2' width="350" valign="top" class="<?php echo $class; ?>"><?php echo $i; ?>.
<?php # Insert week no if week is starting
    if ((($MONTHINFO["firstday"]+$i)%7) == 2) echo "Uge: ".++$MONTHINFO["weekno"];


  // BILLEDE SKAL IND HER !!!
  if (isset($ASSIGNMENT[$i])){
    echo "<br><table>";
    for ($eventnumber=0; $eventnumber<count($ASSIGNMENT[$i]['picture']; $eventnumber++)){
      echo "<tr><td width='100'>";
      echo $ASSIGNMENT[$i]['picture'][$eventnumber];
      echo "</td><td width='250'>";
      echo nl2br($ASSIGNMENT[$i]['title'][$eventnumber] . $ASSIGNMENT[$i]['beskrivelse'][$eventnumber]);
      echo "</td></tr>";
    }
    echo "</table>";
    echo $ASSIGNMENT[$i]['totalrooms'] . " i alt.";
  }

?>

</td>
</tr>
<?php } ?>
</table>
Avatar billede blach Nybegynder
20. december 2003 - 10:28 #7
Der er en parse-error i linie 91
    for ($eventnumber=0; $eventnumber<count($ASSIGNMENT[$i]['picture']; $eventnumber++)){
Avatar billede Slettet bruger
20. december 2003 - 15:16 #8
Ja, sørme. Den ene ) var havnet forkert.

for ($eventnumber=0; $eventnumber<count($ASSIGNMENT[$i]['picture']); $eventnumber++){
Avatar billede blach Nybegynder
20. december 2003 - 17:36 #9
Hmm, der går et eller andet helt galt! Alle datoerne klumber sig sammen samme dag...

Vil du ikke prøve at teste koden selv og se hvad der er galt?
Avatar billede Slettet bruger
21. december 2003 - 02:34 #10
Nu skulle den være løst. Jeg prøvede selv (dog uden billeder og stylesheet), og kunne godt se problemet. Det var et par elementer i arrayet, der blev forkert lavet i getBookings. Nu ser det ud til at det hele virker som det skal. Eventuelt skal der pilles lidt ved den HTML, der bliver udskrevet, men det er nemmere at se, når det kommer ind på siden.

<?php
    # Functions
    function date_info($info, $month, $year) {
        return date($info, mktime(0,0,0,$month,1,$year));
    }

    # DB CONNECT
    open();

    function getBookings($month, $year) {
        $sql = mysql_query("
            SELECT DAYOFMONTH(startdate) AS day, days, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE MONTH(startdate) = '$month' && YEAR(startdate) = '$year'
            ORDER BY day ASC
        ") or die(mysql_error());

        $res = array();
        if (!mysql_num_rows($sql)) return $res;

        while ($foo = mysql_fetch_assoc($sql)) {
            if ($foo['days'] == 1) {
                $res[$foo['day']]['title'][] = "<b>".$foo['title']."</b>";
                $res[$foo['day']]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg WIDTH=30 HEIGHT=30>\n";
                $res[$foo['day']]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                $res[$foo['day']]['totalrooms'] = $res[$foo['day']]['totalrooms'] + $foo['rooms'];
            } else {
                $today = $foo['day'];
                for($i=1; $i<=$foo['days']; $i++) {
                    $res[$today]['title'][] = "<b>".$foo['title']."</b> (Dag ".$i."/".$foo['days'].")";
                    $res[$today]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg WIDTH=30 HEIGHT=30>\n";
                    $res[$today]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                    $res[$today]['totalrooms'] = $res[$today]['totalrooms'] + $foo['rooms'];
                    $today++;
                }
            }
        }

        return $res;
    }

    # Pre-values
    $year = date('Y');
    $month = date('m');

    # Catch month or year if passed
    if (isset($_GET["month"]) && $_GET["month"] >= 1 && $_GET["month"] <= 12) $month = $_GET["month"];
    if (isset($_GET["year"]) && $_GET["year"] > $year) $year = $_GET["year"];

    # Static date names - language specific
    $MONTHNAME = array("", "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");

    # Month for listing
    $listingmonth = date('m');
    if ($year != date('Y')) $listingmonth = 1;

    # Init months array with days and first day of month
    $MONTHINFO = array();

    # Initialize days in month
    $MONTHINFO["days"] = date_info("t", $month, $year);
    $MONTHINFO["firstday"] = date_info("w", $month, $year);
    $MONTHINFO["weekno"] = date_info("W", $month, $year);

    # Get room assignment
    $ASSIGNMENT = getBookings($month, $year);

    # Set colorclass for td
    $class = "red";
    if ((($MONTHS["firstday"]+$i)%7) == 6) $class = "normal";
?>
<div align="center"><B>År 2003/2004:</B><BR><?php for ($i=$listingmonth; $i<=12; $i++) { ?> | <a href='index.php?side=kalender&year=<?php echo $year; ?>&month=<?php echo $i; ?>'><?php echo $MONTHNAME[$i]; ?></a> <?php } ?>|<a href='index.php?side=kalender&year=<?php echo $year+1; ?>&month=1'><?php echo $year+1; ?></a></div>

<br><br>

<table width="350" border="0" cellspacing="0" cellpadding="0" align="center">
<tr valign="top">
<td colspan="2" class="month" valign="top"><b><?php echo $MONTHNAME[$month]; ?> <?php echo $year; ?></b></td>
</tr>
<?php for ($i=1; $i<=$MONTHINFO["days"]; $i++) { ?>

<tr>
<td colspan='2' width="350" valign="top" class="<?php echo $class; ?>"><?php echo $i; ?>.
<?php # Insert week no if week is starting
    if ((($MONTHINFO["firstday"]+$i)%7) == 2) echo "Uge: ".++$MONTHINFO["weekno"];


  // BILLEDE SKAL IND HER !!!
  if (isset($ASSIGNMENT[$i])){
    echo "<br><table>";
    for ($eventnumber=0; $eventnumber<count($ASSIGNMENT[$i]['picture']); $eventnumber++){
      echo "<tr><td width='100'>";
      echo $ASSIGNMENT[$i]['picture'][$eventnumber];
      echo "</td><td width='250'>";
      echo nl2br($ASSIGNMENT[$i]['title'][$eventnumber] . $ASSIGNMENT[$i]['beskrivelse'][$eventnumber]);
      echo "</td></tr>";
    }
    echo "</table>";
    echo $ASSIGNMENT[$i]['totalrooms'] . " i alt.";
  }

?>

</td>
</tr>
<?php } ?>
</table>
Avatar billede blach Nybegynder
21. december 2003 - 11:29 #11
Det ser rigtig godt ud... Du har fortjent pointene 100%!!
Avatar billede Slettet bruger
21. december 2003 - 11:31 #12
Takker
Avatar billede Slettet bruger
21. december 2003 - 11:36 #13
Der bør forresten nok rettes lidt på databaseopslaget. Som det er nu, vil den ikke vise dag 2 af en 2-dages event, der starter på den sidste i måneden.

Jeg vender tilbage med en eventuel løsning på det.
Avatar billede blach Nybegynder
21. december 2003 - 15:18 #14
Ja okay.. det er selvfølgelig et problem... Send meget gerne en opfølger på dette problem!
Poster lige min kode som den er nu (rettet HTML osv)

<?php
    # Functions
    function date_info($info, $month, $year) {
        return date($info, mktime(0,0,0,$month,1,$year));
    }

    # DB CONNECT
    open();

    function getBookings($month, $year) {
        $sql = mysql_query("
            SELECT DAYOFMONTH(startdate) AS day, days, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE MONTH(startdate) = '$month' && YEAR(startdate) = '$year'
            ORDER BY day ASC
        ") or die(mysql_error());

        $res = array();
        if (!mysql_num_rows($sql)) return $res;

        while ($foo = mysql_fetch_assoc($sql)) {
            if ($foo['days'] == 1) {
                $res[$foo['day']]['title'][] = "<b>".$foo['title']."</b><BR>";
                $res[$foo['day']]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg alt=".$foo['type']." name=".$foo['type'].">\n";
                $res[$foo['day']]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                $res[$foo['day']]['totalrooms'] = $res[$foo['day']]['totalrooms'] + $foo['rooms'];
            } else {
                $today = $foo['day'];
                for($i=1; $i<=$foo['days']; $i++) {
                    $res[$today]['title'][] = "<b>".$foo['title']."</b> (Dag ".$i."/".$foo['days'].")<BR>";
                    $res[$today]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg alt=".$foo['type']." name=".$foo['type'].">\n";
                    $res[$today]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                    $res[$today]['totalrooms'] = $res[$today]['totalrooms'] + $foo['rooms'];
                    $today++;
                }
            }
        }

        return $res;
    }

    # Pre-values
    $year = date('Y');
    $month = date('m');

    # Catch month or year if passed
    if (isset($_GET["month"]) && $_GET["month"] >= 1 && $_GET["month"] <= 12) $month = $_GET["month"];
    if (isset($_GET["year"]) && $_GET["year"] > $year) $year = $_GET["year"];

    # Static date names - language specific
    $MONTHNAME = array("", "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");

    # Month for listing
    $listingmonth = date('m');
    if ($year != date('Y')) $listingmonth = 1;

    # Init months array with days and first day of month
    $MONTHINFO = array();

    # Initialize days in month
    $MONTHINFO["days"] = date_info("t", $month, $year);
    $MONTHINFO["firstday"] = date_info("w", $month, $year);
    $MONTHINFO["weekno"] = date_info("W", $month, $year);

    # Get room assignment
    $ASSIGNMENT = getBookings($month, $year);

    # Set colorclass for td
    $class = "red";
    if ((($MONTHS["firstday"]+$i)%7) == 6) $class = "normal";
?>
<div align="center"><B>År 2003/2004:</B><BR><?php for ($i=$listingmonth; $i<=12; $i++) { ?> | <a href='index.php?side=kalender&year=<?php echo $year; ?>&month=<?php echo $i; ?>'><?php echo $MONTHNAME[$i]; ?></a> <?php } ?>|<a href='index.php?side=kalender&year=<?php echo $year+1; ?>&month=1'><?php echo $year+1; ?></a></div>

<br><br>

<table width="350" border="0" cellspacing="0" cellpadding="0" align="center">
<tr valign="top">
<td colspan="2" class="month" valign="top"><b><?php echo $MONTHNAME[$month]; ?> <?php echo $year; ?></b></td>
</tr>
<?php for ($i=1; $i<=$MONTHINFO["days"]; $i++) { ?>

<tr>
<td colspan='2' width="350" valign="top" class="<?php echo $class; ?>"><?php echo $i; ?>.
<?php # Insert week no if week is starting
    if ((($MONTHINFO["firstday"]+$i)%7) == 2) echo "Uge: ".++$MONTHINFO["weekno"];


  // BILLEDE SKAL IND HER !!!
  if (isset($ASSIGNMENT[$i])){
    echo "<br><table>";
    for ($eventnumber=0; $eventnumber<count($ASSIGNMENT[$i]['picture']); $eventnumber++){
      echo "<tr><td width='100' ALIGN='CENTER' VALIGN='TOP'>";
      echo $ASSIGNMENT[$i]['picture'][$eventnumber];
      echo "</td><td width='250' VALIGN='TOP'><DIV CLASS='normal'>";
      echo nl2br($ASSIGNMENT[$i]['title'][$eventnumber] . $ASSIGNMENT[$i]['beskrivelse'][$eventnumber]);
      echo "</DIV></td></tr>";
    }
    echo "</table>";
    echo $ASSIGNMENT[$i]['totalrooms'] . " i alt.";
  }

?>

</td>
</tr>
<?php } ?>
</table>
Avatar billede blach Nybegynder
25. december 2003 - 16:50 #15
Du har ikke fundet ud af problemet?
Avatar billede Slettet bruger
25. december 2003 - 22:21 #16
Har ikke haft tid, pga. jueforberedelser. Jeg vender tilbage. Har ikke glemt det.
Avatar billede blach Nybegynder
27. december 2003 - 11:28 #17
Ok det er også helt iorden! Glæder mig til at høre fra dig...
Avatar billede Slettet bruger
27. december 2003 - 17:16 #18
Hvis din MySQL er ny nok, skulle det virke med dette db-opslag:

        $sql = mysql_query("
            (SELECT DAYOFMONTH(startdate) AS day, days, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE MONTH(startdate) = '$month' && YEAR(startdate) = '$year')
            UNION
            (SELECT 1 AS day, TO_DAYS(startdate)-TO_DAYS('$year-$month-01')+days AS days_number, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE startdate<'$year-$month-01' && TO_DAYS(startdate)+days>TO_DAYS('$year-$month-01')
        ") or die(mysql_error());
Avatar billede blach Nybegynder
27. december 2003 - 17:55 #19
Den melder fejl:

You have an error in your SQL syntax near '(SELECT DAYOFMONTH(startdate) AS day, days, rooms, title, beskrivelse, type ' at line 2
Avatar billede Slettet bruger
27. december 2003 - 23:58 #20
OK, så er MySQL-versionen tilsyneladende ikke ny nok.
Avatar billede Slettet bruger
28. december 2003 - 00:14 #21
SELECT TO_DAYS(startdate)-TO_DAYS('$year-$month-01')+1 AS day, days, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE startdate<='$year-$month-31' && TO_DAYS(startdate)+days>=TO_DAYS('$year-$month-01')

Og så skal denne blok laves om til:

                for($i=1; $i<=$foo['days']; $i++) {
                  if ($today>0){
                    $res[$today]['title'][] = "<b>".$foo['title']."</b> (Dag ".$i."/".$foo['days'].")<BR>";
                    $res[$today]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg alt=".$foo['type']." name=".$foo['type'].">\n";
                    $res[$today]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                    $res[$today]['totalrooms'] = $res[$today]['totalrooms'] + $foo['rooms'];
                  }
                  $today++;
                }
Avatar billede blach Nybegynder
28. december 2003 - 00:51 #22
Sådan her?
        $sql = mysql_query("
                    (SELECT DAYOFMONTH(startdate) AS day, days, rooms, title, beskrivelse, type
                    FROM testkalender
                    WHERE MONTH(startdate) = '$month' && YEAR(startdate) = '$year')
                    UNION
                    for($i=1; $i<=$foo['days']; $i++) {
                                      if ($today>0){
                                        $res[$today]['title'][] = "<b>".$foo['title']."</b> (Dag ".$i."/".$foo['days'].")<BR>";
                                        $res[$today]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg alt=".$foo['type']." name=".$foo['type'].">\n";
                                        $res[$today]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                                        $res[$today]['totalrooms'] = $res[$today]['totalrooms'] + $foo['rooms'];
                                      }
                                      $today++;
                    }
        ") or die(mysql_error());

Melder fejlen:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /var/www/html/lektiecafe/undersider/kalender.php on line 16
Avatar billede Slettet bruger
28. december 2003 - 00:56 #23
Sådan her:

    function getBookings($month, $year) {
        $sql = mysql_query("
SELECT TO_DAYS(startdate)-TO_DAYS('$year-$month-01')+1 AS day, days, rooms, title, beskrivelse, type
            FROM testkalender
            WHERE startdate<='$year-$month-31' && TO_DAYS(startdate)+days>=TO_DAYS('$year-$month-01')
        ") or die(mysql_error());

        $res = array();
        if (!mysql_num_rows($sql)) return $res;

        while ($foo = mysql_fetch_assoc($sql)) {
            if ($foo['days'] == 1) {
                $res[$foo['day']]['title'][] = "<b>".$foo['title']."</b><BR>";
                $res[$foo['day']]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg alt=".$foo['type']." name=".$foo['type'].">\n";
                $res[$foo['day']]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                $res[$foo['day']]['totalrooms'] = $res[$foo['day']]['totalrooms'] + $foo['rooms'];
            } else {
                $today = $foo['day'];
                for($i=1; $i<=$foo['days']; $i++) {
                for($i=1; $i<=$foo['days']; $i++) {
                  if ($today>0){
                    $res[$today]['title'][] = "<b>".$foo['title']."</b> (Dag ".$i."/".$foo['days'].")<BR>";
                    $res[$today]['picture'][]="<IMG SRC=graph/kalender_".$foo['type'].".jpg alt=".$foo['type']." name=".$foo['type'].">\n";
                    $res[$today]['beskrivelse'][]=$foo['beskrivelse']."\n\n";
                    $res[$today]['totalrooms'] = $res[$today]['totalrooms'] + $foo['rooms'];
                  }
                  $today++;
                }
                }
            }
        }

        return $res;
    }
Avatar billede blach Nybegynder
28. december 2003 - 11:36 #24
Det virker :]
Dvs. at man nu kan se en dato som strækker sig over i den nye måned?
Avatar billede blach Nybegynder
28. december 2003 - 11:37 #25
http://www.eksperten.dk/spm/443707
Du kan vel ikke hjælpe her også? -så er jeg ved at være færdig med den nye side...
Avatar billede Slettet bruger
28. december 2003 - 12:09 #26
Ja, og man skulle også få meget lange events med. Altså hvis der skulle være en, der starter i en tidligere måned, og slutter i en senere.

Mere præcist: hvis man beder om december 2003, leder den efter alle events, der starter før eller på 31/12-2003 og slutter på eller efter 01/12-2003
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester