Zitat von Quetschi
					
						
						
							
							
							
							
								
								
								
								
									Beitrag anzeigen
								
							
						
					
				
				
			
		Preisberechnung mit Saisonzeiten
				
					Einklappen
				
			
		
	X
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 Jap - wie gesagt, es geht darum zu ermitteln in welcher Saison die Anreise liegt - also nächstes analog dazu die Saison in der die Abreise liegt.
 
 Du kannst natürlich auch BETWEEN einsetzen wie in h3lls Code vorgeschlagen, was auch etwas eleganter ist, da du dann das Anreisedatum nur einmal verwenden musst. Evtl. kann mysql damit die Abfrage sogar effizienter durchführen - das weiß ich jetzt grad nicht.Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
 Schön - etwas Geschichte kann ja nicht schaden.
 Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
 Kommentar
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 Kürzen wir das einfach mal ab hier - auf die Art siehst du auch, welcher Fall zutreffend war.Code:SET @begin_day = '2014-06-22'; SET @end_day = '2014-07-07'; SELECT label, begin_date, end_date, @begin_day, @end_day, if( @begin_day >= begin_date AND @end_day <= end_date , DATEDIFF(@end_day, @begin_day) + 1, 0 ) as case1, if( @begin_day >= begin_date AND @begin_day <= end_date AND @end_day > end_date , DATEDIFF(end_date, @begin_day) + 1, 0 ) as case2, if( @begin_day < begin_date AND @end_day >= begin_date AND @end_day <= end_date , DATEDIFF( @end_day , begin_date) + 1, 0 ) as case3, if( @begin_day < begin_date AND @end_day > end_date , DATEDIFF( end_date, begin_date) + 1, 0 ) as case4, ( 0 + if( @begin_day >= begin_date AND @end_day <= end_date , DATEDIFF(@end_day, @begin_day) + 1, 0 ) + if( @begin_day >= begin_date AND @begin_day <= end_date AND @end_day > end_date , DATEDIFF(end_date, @begin_day) + 1, 0 ) + if( @begin_day < begin_date AND @end_day >= begin_date AND @end_day <= end_date , DATEDIFF( @end_day , begin_date) + 1, 0 ) + if( @begin_day < begin_date AND @end_day > end_date , DATEDIFF( end_date, begin_date) + 1, 0 ) ) as count_days FROM season HAVING count_days > 0 Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
 Schön - etwas Geschichte kann ja nicht schaden.
 Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
 Kommentar
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 Das packe ich dann alles in eine mysql_query()?Zitat von Quetschi Beitrag anzeigenKürzen wir das einfach mal ab hier - auf die Art siehst du auch, welcher Fall zutreffend war.Code:SET @begin_day = '2014-06-22'; SET @end_day = '2014-07-07'; SELECT label, begin_date, end_date, @begin_day, @end_day, if( @begin_day >= begin_date AND @end_day <= end_date , DATEDIFF(@end_day, @begin_day) + 1, 0 ) as case1, if( @begin_day >= begin_date AND @begin_day <= end_date AND @end_day > end_date , DATEDIFF(end_date, @begin_day) + 1, 0 ) as case2, if( @begin_day < begin_date AND @end_day >= begin_date AND @end_day <= end_date , DATEDIFF( @end_day , begin_date) + 1, 0 ) as case3, if( @begin_day < begin_date AND @end_day > end_date , DATEDIFF( end_date, begin_date) + 1, 0 ) as case4, ( 0 + if( @begin_day >= begin_date AND @end_day <= end_date , DATEDIFF(@end_day, @begin_day) + 1, 0 ) + if( @begin_day >= begin_date AND @begin_day <= end_date AND @end_day > end_date , DATEDIFF(end_date, @begin_day) + 1, 0 ) + if( @begin_day < begin_date AND @end_day >= begin_date AND @end_day <= end_date , DATEDIFF( @end_day , begin_date) + 1, 0 ) + if( @begin_day < begin_date AND @end_day > end_date , DATEDIFF( end_date, begin_date) + 1, 0 ) ) as count_days FROM season HAVING count_days > 0 
 Kommentar
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 Ja - bis auf das mit dem SET @begin_day und SET @end_day
 
 In der Praxis baust du die Query wahrscheinlich einfach per PHP mit entsprechend eingesetzten Variablen für An- und Abreise zusammen.
 
 EDIT:
 
 @begin_day, @end_day sowie die if-blöcke, deren ergebnisse als case1, case2 usw. ausgegeben werden, brauchst du normalerweise nicht - ich hab sie dir zur Veranschaulichung eingebaut, damit du siehst, welche Saison wegen welcher Bedingung in die Berechnung eingeflossen ist.Zuletzt geändert von Quetschi; 29.07.2014, 22:44.Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
 Schön - etwas Geschichte kann ja nicht schaden.
 Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
 Kommentar
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 hey,Zitat von Quetschi Beitrag anzeigenJa - bis auf das mit dem SET @begin_day und SET @end_day
 
 In der Praxis baust du die Query wahrscheinlich einfach per PHP mit entsprechend eingesetzten Variablen für An- und Abreise zusammen.
 
 EDIT:
 
 @begin_day, @end_day sowie die if-blöcke, deren ergebnisse als case1, case2 usw. ausgegeben werden, brauchst du normalerweise nicht - ich hab sie dir zur Veranschaulichung eingebaut, damit du siehst, welche Saison wegen welcher Bedingung in die Berechnung eingeflossen ist.
 habe das ganze jetzt mal ausprobiert.
 
 er wirft mir aber z.B. 42 in case4 aus (Datum war. 11.7.14 - 19.7.14)
 Kommentar
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 Bei mir kommt bei diesem Daten und den Saisonzeiten aus deinem Eröffnungspost 9 Tage in Saison B durch case1 raus, was auch korrekt ist.
 
 Irgendwo hast du wohl einen Fehler beim übernehmen des Statements gemacht.Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
 Schön - etwas Geschichte kann ja nicht schaden.
 Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
 Kommentar
 
          
Kommentar