Avatar billede borgenviby Nybegynder
05. juli 2007 - 13:47 Der er 7 kommentarer og
1 løsning

anvende for() loop i udtræk fra database - hvordan?

har prøvet at lave et udtræk fra database med dette script:

$sql = "SELECT COUNT(schedule_date_time) FROM " . DATE_TIME_SCHEDULE_TABLE . " WHERE (";
    for ($i= strtotime("2007-07-05 09:30:00"); $i<= strtotime("2007-07-05 11:00:00"); $i+=900)
    {
    $sql .= "schedule_date_time = '". date('Y-m-d H:i:s', $i) . "' ";
    }
    $sql .= ") AND '" . $location_db_name[$location] . "' = 0"; 
    $temp = wrap_db_query($sql);
    $temp_ = wrap_db_fetch_array($temp);               
    $count = $temp_[0];
   
    $need_count = count($i);
        if($count >= $need_count) {
           
            $booking_start_time = date('Y-m-d H:i:s', $free_start_time);
            $booking_end_time = date('Y-m-d H:i:s', $free_end_time);
           
            }
   
   
    ?>

Men det funker ikke rigtig.

Nogen der ved hvordan man skal sætte det op?
Avatar billede j4k0b Nybegynder
05. juli 2007 - 17:05 #1
hvordan skal resultatet virke?`
Avatar billede borgenviby Nybegynder
05. juli 2007 - 17:22 #2
Her er udtrækket. Vil trække værdier ud der er = 0 i databasen og herefter
kontrolere at start->slut er lig 0 inden den udskriver værdierne.

Som det er nu udskriver den værdierne uden kontrol. :o)


$location = $_REQUEST['location'];
 
  $query = wrap_db_query("SELECT schedule_date_time FROM " . DATE_TIME_SCHEDULE_TABLE . " WHERE " . $location_db_name[$location] . " = 0 AND schedule_date_time >= '" . $tmp_today . " 09:00:00' AND schedule_date_time <= '" . $tmp_today . " 23:59:59' ORDER BY schedule_date_time ASC");

while($result = wrap_db_fetch_array($query)){; // Prøve nr. 2
   
    $n=0;       
    $first_free_time = $result[$n];
   
    $free_start_time = strtotime($first_free_time);
    $free_end_time = $free_start_time+$booking_time;
    $time_interval = BOOKING_TIME_INTERVAL*60;
   
        if($free_start_time <= $free_end_time){
       
            $n++;
           
           
            $booking_start_time = date('Y-m-d H:i:s', $free_start_time);
            $booking_end_time = date('Y-m-d H:i:s', $free_end_time);
       
    ?>
    <a href="<?=href_link(ADD_BOOKING, 'start_date='.$booking_start_time.'&end_date='.$booking_end_time.'&view=week&'.make_hidden_fields_workstring(array('loc')), 'NONSSL')?>"><?= $booking_start_time; ?></a><br />
    <?

} // end of if
} // end of while
Avatar billede borgenviby Nybegynder
06. juli 2007 - 08:57 #3
Hvorfor virker dette har ikke?

$location = $_REQUEST['location'];
 
  $query = wrap_db_query("SELECT schedule_date_time FROM " . DATE_TIME_SCHEDULE_TABLE . " WHERE " . $location_db_name[$location] . " = 0 AND schedule_date_time >= '" . $tmp_today . " 09:00:00' AND schedule_date_time <= '" . $tmp_today . " 23:59:59' ORDER BY schedule_date_time ASC");

while($result = wrap_db_fetch_array($query)){; // Prøve nr. 2
   
    $n=0;       
    $first_free_time = $result[$n];
   
    $free_start_time = strtotime($first_free_time);
    $free_end_time = $free_start_time+$booking_time;
    $time_interval = BOOKING_TIME_INTERVAL*60;
   
        if($free_start_time <= $free_end_time){
       
            $n++;
           
            $sql = "SELECT COUNT(schedule_date_time) FROM " . DATE_TIME_SCHEDULE_TABLE . " WHERE (";
    for ($i= $free_start_time; $i<= $free_end_time; $i+=$time_interval)
    {
    $sql .= "schedule_date_time = '". date('Y-m-d H:i:s', $i) . "' ";
    }
    $sql .= ") AND '" . $location_db_name[$location] . "' = 0"; 
    $temp = wrap_db_query($sql);
    $temp_ = wrap_db_fetch_array($temp);               
    $count = $temp_['schedule_date_time];
   
    $need_count = count($i);
        if($count >= $need_count) {
           
            $booking_start_time = date('Y-m-d H:i:s', $free_start_time);
            $booking_end_time = date('Y-m-d H:i:s', $free_end_time);
           
                     
    ?>
    <a href="<?=href_link(ADD_BOOKING, 'start_date='.$booking_start_time.'&end_date='.$booking_end_time.'&view=week&'.make_hidden_fields_workstring(array('loc')), 'NONSSL')?>"><?= $booking_start_time; ?></a><br />
    <?
} // end of if
} // end of if
} // end of while
Avatar billede j4k0b Nybegynder
06. juli 2007 - 09:16 #4
Du har stadig ikke forklaret hvordan resultatet skal virker :-)
Avatar billede borgenviby Nybegynder
06. juli 2007 - 09:59 #5
Hvis $free_start_time -> $free_end_time = 0 i databasen skal der laves et 2 værdier  =
$booking_start_time , $booking_end_time der skal sendes videre.

Det skulle gerne afvikles inden i en samme løkke. Hvis muligt :O)

Havde tænkt at man måske kunne tælle antal slots der skal bruges og sammenligne med hvor mange der er ledige i den givne tidsperiode.

For hvordan sikre jeg ellers alle tiderne er = 0 fra start->slut?
Avatar billede borgenviby Nybegynder
06. juli 2007 - 10:07 #6
Har ændret koden lidt:

$result = wrap_db_fetch_array($query);
   
    $n = 0;       
    $first_free_time = $result[$n];
   
    $free_start_time = strtotime($first_free_time);
    $free_end_time = $free_start_time+$booking_time;
    $time_interval = BOOKING_TIME_INTERVAL*60;
   
        if($free_start_time <= $free_end_time){
       
           
            // see if the needed slots are free
            for ($h= $free_start_time; $h<= $free_end_time; $h+=$time_interval)
            { $time_count[] = $h; }
   
            $sql = "SELECT schedule_date_time FROM " . DATE_TIME_SCHEDULE_TABLE . " WHERE (";
            foreach($time_count as $time_count_)
            {
            $sql .= "schedule_date_time = '". date('Y-m-d H:i:s', $time_count_) . "' ";
            }
            $sql .= ") AND '" . $location_db_name[$_REQUEST['location']] . "' = 0"; 
            $temp = wrap_db_query($sql);
            $temp_ = wrap_db_fetch_array($temp);               
            $count = count($temp_['schedule_date_time']);
   
            $need_count = count($time_count);
                if($count >= $need_count) {
           
                $booking_start_time = date('Y-m-d H:i:s', $free_start_time);
                $booking_end_time = date('Y-m-d H:i:s', $free_end_time);
           
    ?>
    <a href="<?=href_link(ADD_BOOKING, 'start_date='.$booking_start_time.'&end_date='.$booking_end_time.'&view=week&'.make_hidden_fields_workstring(array('loc')), 'NONSSL')?>"><?= $booking_start_time; ?></a><br />
    <?
$n++;

} // end of if           
} // end of if
Avatar billede borgenviby Nybegynder
06. juli 2007 - 10:11 #7
Men $time_count[] giver = 8, men burde kun give 3 hvorfor forstår jeg ikke.

$free_time_start = strtotime("2007-07-06 09:00:00);
$free_end_time = strtotime("2007-07-06 09:45:00);
$time_interval = 15*60;

Det får jeg til 3.

Fejl 2.

$count = 0;
Så jeg tror ikke min foreach virker, men hvorfor gør den ikke det?

Åhh hvaddd får squ snart hovedpine...;o)
Avatar billede borgenviby Nybegynder
11. juli 2007 - 12:31 #8
Lukker denne tråd ;o)
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