Ergebnis 1 bis 13 von 13

Thema: PHP Daten in einem Tag auf Überschneidung prüfien und dementsprechend anzeigen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #12
    Drei Fehler:
    1. Erst mal hast du bei deiner if-Abfrage bei $task2->start vergessen den Formatstring mitzugeben.
    2. Der Formatstring für die Uhrzeit muss H:i:s lauten.

    Korrigierst du diese beiden Fehler, dann wirst du auch ein Ergebnis bekommen, welches aber noch falsch ist, denn:

    3. Du testest die IDs nicht auf Gleichheit. Das sorgt dafür, dass er eine Task mit sich selbst überprüft.

    Edit:
    Ich würde den Code aber auch so in etwas aufteilen:

    Code:
    function getOverlaps(DateTime $date,array $tasks)
    {
    	$result = array();
    	$tasksOfThisDay = getTasksOfDate($date, $tasks);
    	
    	foreach ($tasksOfThisDay as $task1) 
    	{
    		foreach ($tasksOfThisDay as $task2) 
    		{
    			if (isOverlay($task1, $task2)) 
    			{
    				$array = array($task1->id, $task2->id);
    				sort($array);
    				if (!in_array($array, $result)) $result[] = $array;
    			}
    		}
    	}
    	
    	return $result;
    }
    
    function getTasksOfDate(DateTime $date, array $tasks)
    {
    	$result = array();
    	foreach($tasks as $task)
    	{
    		if($task->start->format('Y-m-d') == $date->format('Y-m-d'))
    		{
    			$result[] = $task;
    		}
    	}
    	
    	return $result;
    }
    
    function isOverlay(stdClass $task1, stdClass $task2)
    {
    	return  ($task1->id != $task2->id)
    			&& ($task1->start->format('H:i:s') < $task2->end->format('H:i:s')) 
    			&& ($task1->start->format('H:i:s') >= $task2->start->format('H:i:s'));
    }
    Meine php Kenntnisse sind aber auch sehr eingerostet. Vermutlich geht der Code noch hübscher. Ich hab schon seit etlichen Jahren nichts mit mit php am Hut gehabt.

    Geändert von Whiz-zarD (18.06.2014 um 19:54 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •