Я делаю систему бронирования для 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;
}
Я не уверен, где проблема, но любая помощь приветствуется!
Мы не можем сказать, где проблема в том, что если вы не скажете нам, в чём проблема. Ты сказал, что сломал его, но ты не сказал, как он сломался. – randak