2013-12-13 2 views
0

Я делаю систему бронирования для iPads, у меня есть форма, которая отправляет время начала и время окончания обработки страницы, которая затем вызывает функцию, она работает хорошо, пока я не добавил 15 мин. Вот форма:php- Возвращение все время между 2 раз

<select name='hr_start'> 
<option value=""></option> 
<option value="08">8AM</option> 
<option value="09">9AM</option> 
<option value="10">10AM</option> 
<option value="11">11AM</option> 
<option value="12">12PM</option> 
<option value="13">1PM</option> 
<option value="14">2PM</option> 
<option value="15">3PM</option> 
</select> 
:<select name='min_start'> 
<option value=""></option> 
<option value="0">00</option> 
<option value="15">15</option> 
<option value="30">30</option> 
<option value="45">45</option> 

</select> 
to 
<select name='hr_end'> 
<option value=""></option> 
<option value="09">9AM</option> 
<option value="10">10AM</option> 
<option value="11">11AM</option> 
<option value="12">12PM</option> 
<option value="13">1PM</option> 
<option value="14">2PM</option> 
<option value="15">3PM</option> 
</select> 
:<select name='min_end'> 
<option value=""></option> 
<option value="0">00</option> 
<option value="15">15</option> 
<option value="30">30</option> 
<option value="45">45</option> 
</select> 
<input type='hidden' name='day' value='<? echo $day ?>' hidden /> 
<input type='hidden' name='month' value='<? echo $month ?>' hidden /> 
<input type='hidden' name='year' value='<? echo $year ?>' hidden /> 
<input type='hidden' name='type' value='<? echo $type?>' hidden /> 
<input type="submit" value="Reserve Assets" /> 
</form> 

и это код, который помещает вышеуказанные значения в массивах:

$hour_start = $_POST['hr_start']; 
$min_start = $_POST['min_start']; 

$hour_end = $_POST['hr_end']; 
$min_end = $_POST['min_end']; 

$h = array(); 
$m = array(); 


for($i=$hour_start; $i<=$hour_end; $i++) { 
    $h[] = $i; 
} 
//array_unshift($h, $hour_start); 
//array_push($h, $hour_end); 
for($i=$min_start; $i<=$min_end; $i++) { 
$m[] = $i; 
} 
array_unshift($m, $min_start); 
array_push($m, $min_end); 
array_push($m, $min_end); 
$requested = $_POST['requested']; 

ниже функция, которая создает записи резервирования, $m это месяц, $d является день, $y - год, $h - это массив часов (24-часовой формат: 15 14 12 и т. д.) и $m - это массив минут (0,15,30,45), $at - тип актива (5-значный id):

function generate_confimation ($m, $d, $y, $h, $m1, $at, $numrequested, $user) { 
echo '<pre>'; 

var_dump($h); 
var_dump($m1); 
echo '</pre>'; 
foreach ($h as $index => $value) 
{ 
$t1 = $h[$index]; 
$t2 = $m1[$index]; 

//$time = $t; 
//echo $time; 
//echo $utime; 
$numbers = array_map('_getNumber', $h); 

$startTime = min($numbers); 
$endTime = max($numbers); 
//$endTime = $endTime; 



$startTime = mktime($startTime, 0, 0, $m, $d, $y); 
$endTime = mktime($endTime, 0, 0, $m, $d, $y); 
$num_avaliable = num_available($m, $d, $y, $t1, $t2, $at); 
if ($numrequested > $num_avaliable) { 
$error = 'ERROR NOT ENOUGH ASSETS TO FURFILL REQUEST'; 
return $error; 
} 
} 
mysql_query(
"INSERT INTO transactions(user, start, end) 
VALUES('$user', '$startTime', '$endTime')"); 
$txnid = mysql_insert_id(); 





/* 
$check1 = mysql_query("SELECT id FROM assets WHERE type_id = '$at'"); 

$check12 = mysql_num_rows($check1); 
echo $numrequested; 
if ($numrequested > $check12) { 
echo 'ERROR NOT ENOUGH ASSETS TO FURFILL REQUEST'; 
return; 
} 
*/ 

//$x = 0; 
$numrequested = $numrequested +1 ; 
$numrequested; 
foreach($h as $t){ 
$x = 0; 
$time = $t; 
$ftime = "$time:00:00"; 
//echo $ftime; 
$utime = mktime($time, 0, 0, $m, $d, $y); 
//echo $utime; 

$assetfetch = mysql_query("SELECT id FROM assets WHERE type_id = $at") or die('ERROR: THERE WAS A SERVER ERROR<br>Please click <a href="reserve.php"> here</a> and try again and then Contact Your Network Administrator for Assistance<br><br> 
There may be additional errors, but the server did not report them'); 
$numrequested = $numrequested - 1; 
while($row = mysql_fetch_array($assetfetch)) { 
     $assetid= $row['id']; 
     //echo $assetid; 
     //echo '<br>'; 
     $numquery = mysql_query("SELECT * 
      FROM reservations 
      WHERE asset_id = $assetid AND 
      start = '$utime'") or die('ERROR: THERE WAS A SERVER ERROR<br>Please click <a href="reserve.php"> here</a> and try again and then Contact Your Network Administrator for Assistance<br><br> 
There may be additional errors, but the server did not report them'); 
$numfind = mysql_num_rows($numquery); 
if ($numfind == '0') { 
$query = 
"INSERT INTO reservations(asset_id, user, start, txnid) 
VALUES('$assetid', '$user', '$utime', '$txnid')"; 
mysql_query($query) or die(mysql_error()); 
$x++; 
if ($x >= $numrequested){ 
break; 
} 
} 
} 






} 


return $txnid; 

} 

Я не уверен, где проблема, но любая помощь приветствуется!

+0

Мы не можем сказать, где проблема в том, что если вы не скажете нам, в чём проблема. Ты сказал, что сломал его, но ты не сказал, как он сломался. – randak

ответ

0

$m не массив (0,15,30,45) с момента приращения $i составляет 1:

for($i=$min_start; $i<=$min_end; $i++) { 
$m[] = $i; 
} 

должен быть

for($i=$min_start; $i<=$min_end; $i+=15) { 
$m[] = $i; 
} 
+0

для каждого $ m должно быть $ h, так что стартовый $ h из 8 и $ m из 15 и заканчивая $ h = 10 и $ m = 15, массив должен выглядеть следующим образом: $ h = (8 , 8,8,9,9,9,9,10,10) $ m = (15,30,45,0,15,30,45,0,15) –

+0

@RileyChilds, поэтому прирост '$ i 'должно быть 15, а не 1, поэтому все значения в' $ m' умножаются на 15 – xpy

Смежные вопросы