0

という名前のテーブルと、列の型がscheduleという名前の列があります。その列には、現在 2012 年 11 月 1 日から 2012 年 11 月 30 日までの日付の範囲があります。ユーザーが日付の範囲を入力できる小さなフォーム (入力名と) があり、日付の範囲を現在データベースにある日付と比較できるようにしたいと考えています。Datedatefromto

これは私が持っているものです:

////////////////////////////////////////////////////////
//////First set the date range that we want to use//////
////////////////////////////////////////////////////////

if(isset($_POST['from']) && ($_POST['from'] != NULL))
    {
    $startDate = $_POST['from'];
    }
else
    {
    //Default date is Today
    $startDate = date("Y-m-d");
    }
if(isset($_POST['to']) && ($_POST['to'] != NULL))
    {
    $endDate = $_POST['to'];
    }
else
    {
    //Default day is one month from today
    $endDate = date("Y-m-d", strtotime("+1 month"));
    }

//////////////////////////////////////////////////////////////////////////////////////
//////Next calculate the total amount of days selected above to use as a limiter//////
//////////////////////////////////////////////////////////////////////////////////////

$dayStart = strtotime($startDate);
$dayEnd = strtotime($endDate);
$total_days = abs($dayEnd - $dayStart) / 86400 +1;

echo "Start Date: " . $startDate . "<br>End Date: " . $endDate . "<br>";
echo "Day Start: " . $dayStart . "<br>Day End: " . $dayEnd . "<br>";
echo "Total Days: " . $total_days . "<br>";

////////////////////////////////////////////////////////////////////////////////////
//////Then we're going to see if the dates selected are in the schedule table//////
////////////////////////////////////////////////////////////////////////////////////

//Select all of the dates currently in the schedule table between the range selected.
$sql = ("SELECT Date FROM schedule WHERE Date BETWEEN '$startDate' AND '$endDate' LIMIT $total_days");

//Run a check on the query to make sure it worked. If it failed then print the error.
if(!$result_date_query = $mysqli->query($sql))
    {
    die('There was an error getting the dates from the schedule table [' . $mysqli->error . ']');
    }

//Set the dates to an array for future use.
// $current_dates = $result_date_query->fetch_assoc();

//Loop through the results while a result is being returned.
while($row = $result_date_query->fetch_assoc())
    {
    echo "Row: " . $row['Date'] . "<br>";
    echo "Start day: " . date('Y-m-d', $dayStart) . "<br>";
    //Set this loop to add 1 day to the Start Date until it reaches the End Date
    for($i = $dayStart; $i <= $dayEnd; $i = strtotime('+1 day', $i))
        {
        $date = date('Y-m-d',$i);
        echo "Loop Start day: " . date('Y-m-d', $dayStart) . "<br>";

        //Run a check to see if any of the dates selected are in the schedule table.
        if($row['Date'] != $date)
            {
            echo "Current Date: " . $row['Date'] . "<br>";
            echo "Date: " . $date . "<br>";
            echo "It appears as though you've selected some dates that are not in the schedule database.<br>Please correct the issue and try again.";
            return;
            }
        }
    }

    //Free the result so something else can use it.
    $result_date_query->free();

ご覧のとおり、いくつかの echo ステートメントを追加したので、何が生成されているかがわかります。私が見ることができるものから、私のもの$row['Date']は増加しておらず、同じ日付にとどまっているように見えます。もともと変数に設定していましたが(現在はコメントアウトされています)、それが問題を引き起こしている可能性があると思いました。

テスト用に 2012 年 11 月 1 日から 2012 年 11 月 15 日までの日付のテーブルを作成し、このすべての php コードを phpfiddle.org に入力しましたが、接続するために提供されたユーザー名を取得できません。

ここにリンクがあります:PHP Fiddle

それまでの間、ドキュメントを読んでユーザー接続の問題を解決しようとします。指示やアドバイスをいただければ幸いです。

4

0 に答える 0