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?
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
hvordan skal resultatet virke?`
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
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
Du har stadig ikke forklaret hvordan resultatet skal virker :-)
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?
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
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)
Vi tilbyder markedets bedste kurser inden for webudvikling