Nun, Frage ist beantwortet. Für diejenigen, die wissen wollen, was ich habe, hier ist es.
Um ein Startdatum und ein Enddatum (ein Datumsbereich, wenn man so will) ändern in eine Reihe von Einzeldaten, ich benutze:
function createDateRangeArray($strDateFrom,$strDateTo) //Changes a Range of Dates to Specific Dates
{
static $aryRange = array(); //Creates an Array
$iDateFrom = mktime(1,0,0,substr($strDateFrom,5,2), substr($strDateFrom,8,2),substr($strDateFrom,0,4));
$iDateTo = mktime(1,0,0,substr($strDateTo,5,2), substr($strDateTo,8,2),substr($strDateTo,0,4));
if ($iDateTo >= $iDateFrom)
{
array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry
while ($iDateFrom<$iDateTo)
{
$iDateFrom += 86400; // add 24 hours
array_push($aryRange,date('Y-m-d',$iDateFrom));
}
}
return $aryRange; //Returns to step 1 and adds another value into the array
}
Um jeden Tag von meiner SQL-Datenbank und schieben Sie sie bekommen jeden Datumsbereich aus einer ganzen Liste von Klassen zu bekommen und machte eine riesige Auswahl habe ich es geschafft So, jetzt
$query = "SELECT startdate, enddate FROM classdetails";
$results = mysql_query($query);
while ($arrays = mysql_fetch_array($results))
{
$aryDates = createDateRangeArray($arrays['startdate'],$arrays['enddate']);
echo "<br />";
}
: in einem einzelnen Array wurde diese verwendet. Jetzt musste ich dieses Array verwenden, um die Daten tatsächlich zu deaktivieren. Mit den Funktionen von denen Yi Jiang hat keine großzügig schrieb (danke an alle, die mir geholfen haben), ist der nächste Schritt:
$(function()
{
//To enable End Date picker only when Start Date has been chosen (And to disable all dates prior of said date)
var end = $('#enddate').datepicker({numberOfMonths: 3, beforeShowDay: checkAvailability,});
// Defining a function, because we're binding this to two different events
function enableEnd() {
end.attr('disabled', !this.value.length) // Enable the end input element if the first one has anything in it
.datepicker('option', 'minDate', this.value); // Set the minimum date to the date in the first input
}
//End of function
// Datepicker
$('#startdate').datepicker({
numberOfMonths: 3,
beforeShowDay: checkAvailability,
onSelect: enableEnd // Call enableEnd when a date is selected in the first datepicker
}).bind('input', enableEnd); // Do the same when something is inputted by the user
//hover states on the static widgets
$('#dialog_link, ul#icons li').hover(
function() {$(this).toggleClass('ui-state-hover');}
);
});
//End of Function
//Disabling all dates where selected room and speaker is unavailable
var $myBadDates = new Array (<?php foreach($aryDates as $disabledate) { echo " \"$disabledate\","; } echo " 1"; ?>); //Creates the array (The echo " 1"; is merely to close the array and will not affect the outcome
function checkAvailability(mydate){
var $return=true;
var $returnclass ="available";
$checkdate = $.datepicker.formatDate('yy-mm-dd', mydate);
for(var i = 0; i < $myBadDates.length; i++)
{
if($myBadDates[i] == $checkdate)
{
$return = false;
$returnclass= "unavailable";
}
}
return [$return,$returnclass];
}
//End of function
Das einzige, was in meinem Körper gerade jetzt, für Testzwecke sind:
<!-- Datepicker -->
<h2 class="header">Datepicker</h2>
<span>
Start Date: <input type="text" id="startdate" />
</span>
<span>
End Date: <input type="text" id="enddate" disabled="disabled" />
</span>
Es ist lang, ja, aber es funktioniert. Danke an alle, die mir geholfen haben, dass das funktioniert. Die Änderung war das Ändern einer Funktion zu einer JQuery-Funktion, die existiert (aus welchen Gründen habe ich nicht an erster Stelle verwendet); toggleClass. Danke, dass du das rausholst. .
$ ('# datepicker1') keyup (function() \t \t \t \t \t { \t \t \t \t \t $ ('# datepicker2') picker ("Freigabe");. \t \t \t \t \t }); Dies funktioniert auch nicht. Ich wähle ein Datum im ersten Feld, Feld 2 ist immer noch deaktiviert. Ich versuche, etwas in das erste Feld einzugeben (nichts kommt natürlich heraus), aber das zweite Feld ist dann aktiviert. –
Auch nach der Auswahl eines Datums wird es: Es hat immer noch keinen Wert. –