php - php算法中的意外输出
问题描述
我正在尝试创建一个页面,我可以在其中选择与某人约会的时间。
在我的数据库中,我今天已经有 3 个日期,如下所示:
在 9:00、10:00 和 12:00,因此这些时间不应出现在页面中。
但我所拥有的是:
9:30:00 9:30:00 10:00:00 10:30:00 11:00:00 11:00:00 11:00:00 11:30:00 11:30:00 11:30:00 12:00:00 12:00:00 14:00:00 14:00:00 14:00:00 ...
我认为有一个算法问题,但我不知道有代码:
<?php
/**
* Template Name: calendrier
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
//
get_header(); ?>
<div id="primary" <?php generate_do_element_classes( 'content' ); ?>>
<main id="main" <?php generate_do_element_classes( 'main' ); ?>>
<?php
do_action( 'generate_before_main_content' );
if(!isset($_GET['mydate'])){
$today=getdate();
$_GET['mydate']=$today['year']."-".$today['mon']."-".$today['mday'];
}
echo "<p>Entrez une date :</br><form action=\"\" method=\"get\"><input type=\"hidden\" name=\"page_id\" value=\"21\"><input type=\"hidden\" name=\"myuser\" value=\"".$_GET['myuser']."\" ><input type=\"hidden\" name=\"myform\" value=\"".$_GET['myform']."\"><input type=\"date\" name=\"mydate\" /></p><input type=\"submit\" value=\"Modifier la date\" /></form>";
$mydata = $wpdb->get_results(
$wpdb->prepare("
SELECT *
FROM cal
WHERE user_id = %s
AND date = %s
",
$_GET['myuser'],
$_GET['mydate']
)
);
$disp = $wpdb->get_results(
$wpdb->prepare("
SELECT * from disponibility where user_id = %s and date = %s
",
$_GET['myuser'],
$_GET['mydate']
)
);
$cat = $wpdb->get_row(
$wpdb->prepare("
SELECT * from cat where id = %s
",
$_GET['myform']
)
);
echo "<h1>Calendrier ".$_GET['mydate']."</h1>";
foreach($disp as $dispun){
$debut = $dispun->start; // start hour
$fin = $dispun->end; // end hour
$debut_parts = explode(":", $debut);
$fin_parts = explode(":", $fin);
$debut_parts[0] = intval($debut_parts[0]); // int start hour
$debut_parts[1] = intval($debut_parts[1]); // int start minutes
$debut_parts[2] = intval($debut_parts[2]); // int start seconds
$fin_parts[0] = intval($fin_parts[0]); // int end hour
$fin_parts[1] = intval($fin_parts[1]); // ...
$fin_parts[2] = intval($fin_parts[2]);
while($debut_parts[0] < $fin_parts[0] || ($debut_parts[0] == $fin_parts[0] && $debut_parts[1] < $fin_parts[1]) ){ // foreach half hour
if($mydata != null){ // if there is already an date recorded
foreach($mydata as $mydataun){ // foreach recorded date
$itime = $mydataun->time;
$jtime = explode(":", $itime);
$jtime[0] = intval($jtime[0]);
$jtime[1] = intval($jtime[1]);
$jtime[2] = intval($jtime[2]);
if(strval($jtime[0]).":".strval($jtime[1]).":".strval($jtime[2]) == strval($debut_parts[0]).":".strval($debut_parts[1]).":".strval($debut_parts[2])){
if($debut_parts[1]== 0 && $mydataun->duration == 1){
$debut_parts[1]+=30;
}elseif($mydataun->duration == 1){
$debut_parts[0]+=1;
$debut_parts[1]=0;
}
}else{
echo "<a href=\"https://someaddress/?page_id=24&mydate=".$_GET['mydate']."&myuser=".$_GET['myuser']."&myform=".$_GET['myform']."&mytime=".strval($debut_parts[0]).":";
if($debut_parts[1]==0){
echo "00:00";
}else{
echo "30:00";
}
echo "\">".$debut_parts[0].":";
if($debut_parts[1]==0){
echo "00:00";
}else{
echo "30:00";
}
echo "</a></br>";
}
}
}else{
echo "<a href=\"https://someaddress/?page_id=24&mydate=".$_GET['mydate']."&myuser=".$_GET['myuser']."&myform=".$_GET['myform']."&mytime=".strval($debut_parts[0]).":";
if($debut_parts[1]==0){
echo "00:00";
}else{
echo "30:00";
}
echo "\">".$debut_parts[0].":";
if($debut_parts[1]==0){
echo "00:00";
}else{
echo "30:00";
}
echo "</a></br>";
}
if($debut_parts[1]== 0){
$debut_parts[1]+=30;
}else{
$debut_parts[0]+=1;
$debut_parts[1]=0;
}
}
}
do_action( 'generate_after_main_content' );
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php
/**
* generate_after_primary_content_area hook.
*
* @since 2.0
*/
do_action( 'generate_after_primary_content_area' );
generate_construct_sidebars();
get_footer();
解决方案
echo "<a href=\"https://someaddress/?page_id=24&mydate=".$_GET['mydate']."&myuser=".$_GET['myuser']."&myform=".$_GET['myform']."&mytime=".strval($debut_parts[0]).":";
if($debut_parts[1]==0){
echo "00:00";
}else{
echo "30:00";
}
echo "\">".$debut_parts[0].":";
if($debut_parts[1]==0){
echo "00:00";
}else{
echo "30:00";
}
echo "</a></br>";
必须在while循环的末尾
推荐阅读
- c# - SA1200 与 IDE0065
- python - 如何从 QForm PyQt5 中读取元素
- python - AWS Rekognition 引发错误:InvalidS3ObjectException
- amazon-eks - 为 AWS EKS Fargate 手动创建 ALB
- surface - pythonocc 识别表面中的孔(及其尺寸)
- c++ - 使用套接字的两种方式通信
- gitpython - Git.custom_environment 不适用于 docker 中的 Repo.clone_from
- api - 德语维基百科 API 中的空格问题
- wordpress-gutenberg - Wordpress Gutenburg 中的重叠列
- azure-active-directory - Microsoft 365 subscription extra-costs for registering app in Azure Active Directory Admin Center