Avatar billede morten_linder Praktikant
23. januar 2004 - 08:31 Der er 1 kommentar

Booking side - den laver for mange tider

Hej alle

Her er en lidt tricky fyr.

Jeg har bakset temmelig længe med det, men kan ikke få det til at spille. http://www.linder.dk/booking

Som man kan se så laves der ekstra tider - det skal der naturligvis ikke være. Så hvordan undgår man dette?

config.inc.php

<?
$dato  = "2003-10-26";

$faktor        = ".25";
$starttid      = 7;
$sluttid        = 14.75;
$cellid        = $starttid;

$mouseover      = "onmouseover=\"style.backgroundColor='#EBEBEB'\"";
$mouseout      = "onmouseout=\"style.backgroundColor='#008000'\"";
$mousestyle    = "style=\"cursor: pointer;\"";
$mouse          = $mouseover." ".$mouseout." ".$mousestyle;

$onclick1      = "onclick=\"window.open('book.php?book_start=";
$onclick2      = "','hej','width=300,height=300')\"";

$connection = mysql_pconnect("localhost","user","password") OR DIE("Unable to connect to database");
mysql_select_db("database");
?>
~




index.php

<?

include("config.inc.php");

$x = $starttid;
?>
<html>
<body>
<table align="center">
<tr>
<td>Resource</td>
<?
//Her viser vi øverste linie, der angiver tiderne der kan bookes
while($x<=$sluttid) {

                list($time, $minutter) = explode(".", $x);
                        if($time <= 9) { $time = "0".$time; }
                        if($minutter == "") { $minutter = "00"; $vistid = $time.":00"; }
                        if($minutter == 25) { $minutter = "15"; $vistid = ":$minutter"; }
                        if($minutter == 5) { $minutter = "30"; $vistid = ":$minutter"; }
                        if($minutter == 75) { $minutter = "45"; $vistid = ":$minutter"; }
                echo "<td><font size=\"-1\">$vistid</font></td>";
                $x = $x + $faktor;
                }
$x = $starttid;
?>
</tr>

<?
        echo "\n\n\n";
        $resource_sql = "SELECT resource_id,navn from booking_resource where butik_id = '3'";
        $resource_result = mysql_query($resource_sql) or die(mysql_error());
        while($resource_row=mysql_fetch_array($resource_result)) {
                $resource_id    =      $resource_row[0];
                $resource_navn  =      $resource_row[1];
                $writeout_line = "<tr><td><font size=\"-1\">$resource_navn</font></td>";

                        $booking_sql = "SELECT slut from booking_data where resource_id = '$resource_id' AND dato = '$dato' order by slut desc limit 1";
                        $booking_result = mysql_query($booking_sql) or die(mysql_error());
                        $rows = mysql_num_rows($booking_result);
                        while($booking_row=mysql_fetch_array($booking_result)) { $total_slut_tid = $booking_row[0]; }


                        $booking_sql = "SELECT booking_id,start,slut from booking_data where resource_id = '$resource_id' AND dato='$dato' order by start asc";
                        $booking_result = mysql_query($booking_sql) or die(mysql_error());
                                        $laststop      = $starttid;
                                while ($booking_row = mysql_fetch_array($booking_result)) {
                                        $booking_id    = $booking_row[0];
                                        $booking_start  = $booking_row[1];
                                        $booking_slut  = $booking_row[2];
                                        $booking_resource_id    = $booking_row[3];

                                                if ($booking_start > $laststop) {
                                                $emptycells = ($booking_start - $laststop) / $faktor;
                                                $laststop = $booking_slut;
                                                }

                                                $colspan = ($booking_slut - $booking_start) / $faktor;

                                                if ($emptycells >= 1) { for($i=1;$i<=$emptycells;$i++) {
                                                $onclick = $onclick1.$cellid."&dato=$dato&res=$resource_id".$onclick2;
                                                $writeout_line .= "<td bgcolor=\"#008000\" $mouse $onclick>";
                                                $writeout_line .= "<font size=\"-2\">";
                                                $writeout_line .= "$cellid</font></td>";
                                                $cellid = $cellid + $faktor;
                                                }
                                                }

                                                $writeout_line .= "<td colspan=\"$colspan\" bgcolor=\"#FF0000\"><font size=\"-2\">hej</font></td>";
                                                $cellid = $cellid + ($colspan * $faktor) - $faktor;

                                                if ($booking_slut == $total_slut_tid) {
                                                $endcells = ($sluttid - $total_slut_tid + $faktor) / $faktor;
                                                for($i=1;$i<=$endcells;$i++) {
                                                $cellid = $cellid + $faktor;
                                                $onclick = $onclick1.$cellid."&dato=$dato&res=$resource_id".$onclick2;
                                                $writeout_line .= "<td bgcolor=\"#008000\" $mouse $onclick><font size=\"-2\">$cellid</font></td>"; }
                                                }
                                                $cellid = $cellid + $faktor;
                                }


                                if ($rows == 0) {
                                while($x<=$sluttid) {
                                $onclick = $onclick1.$x."&dato=$dato&res=$resource_id".$onclick2;
                                $writeout_line .= "<td bgcolor=\"#008000\" $mouse $onclick><font size=\"-2\">$x</font></td>";
                                $x = $x + $faktor;
                                }
                                }

                                $writeout_line .= "</tr>\n";

                                echo "$writeout_line";
                                $emptycells = 0;
                                $cellid = $starttid;

        }

?>
</table>
</body>
</html>

Håber jeg har forklaret det tydeligt nok.
Avatar billede amerikaner Nybegynder
23. januar 2004 - 10:24 #1
OK...that's some LAAAAAAAAAANG code.  But I think I got what you are trying to do.

My best guess is that you have booked data that hops over the $sluttid value so that your $endcells value is wrong. 

Remember to zero out your $x value at the end of rows, if you have two resources that have no booking then it will only print one resource.

$writeout_line .= "</tr>\n;
$x = $starttid;

Also use could use a Max statement for this SQL  (just because it's pretty)                       
$booking_sql = "SELECT Max(slut) as MaxSlut from booking_data where resource_id = '$resource_id' AND dato = '$dato';

Also in this sentence you have 3 values in the SELECT but then you try to grab 4 values below in your variables...
$booking_sql = "SELECT booking_id,start,slut from booking_data where resource_id = '$resource_id' AND dato='$dato' order by start asc";

          $booking_id    = $booking_row[0];
          $booking_start  = $booking_row[1];
          $booking_slut  = $booking_row[2];
          $booking_resource_id    = $booking_row[3];

Am I missing something there??

************************
Sporgsmål: How many resouces are you working with?  Is it really on 3 or is it 5?  Maybe you could also create a page with the raw data...

You could create a php to drop rows so we could look at the raw data.

Something like (but it might not work...test it first):

<?

include("config.inc.php");
?>
<html>
<body>
<table align="center">
<tr>

<?
        $resource_sql = "SELECT resource_id,navn from booking_resource where butik_id = '3'";
        $resource_result = mysql_query($resource_sql) or die(mysql_error());
        while($resource_row=mysql_fetch_array($resource_result)) {
                $resource_id    =      $resource_row[0];
                echo "<tr><td><font size=\"-1\">$resource_row[1]</font></td>";

                        $booking_sql = "SELECT booking_id,start,slut from booking_data where resource_id = '$resource_id' AND dato='$dato' order by start asc";
                        $booking_result = mysql_query($booking_sql) or die(mysql_error());
                                        $laststop      = $starttid;
                                while ($booking_row = mysql_fetch_array($booking_result)) {
                            echo "<td>$booking_row[0]</td>";
                            echo "<td>$booking_row[1]</td>";
                            echo "<td>$booking_row[2]</td>";
                                }

                echo "</tr>\n";


        }

?>
</table>
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