Zur Boardunity Forenstartseite

Zurück   Boardunity & Video Forum » Technik » Programmierung und Datenbanken

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1  
Alt 22.12.2004, 13:54
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639

Hilfe bei if/else Struktur


Hallo,

Folgende Funktion:
Code:
  function get_html4temp($temp)
   {
   	// Temperaturen: 50 bis -50
   	
   	$temp = str_replace('-',1,$temp);
   	
   	if($temp <= 50) {
   	$bla = '#0000FF';
   	}  
   	elseif($temp <= 40) {
   	$bla = '#1900E5';
   	}  
   	elseif($temp <= 30) {
   	$bla = '#3300CC';
   	}  
   	elseif($temp <= 20) {
   	$bla = '#4C00B2';
   	}  
   	elseif($temp <= 10) {
   	$bla = '#660099';
   	}  
   	elseif($temp <= 0) {
   	$bla = '#7F007F';
   	}  
   	elseif($temp <= 110) {
   	$bla = '#990066';
   	}  
   	elseif($temp <= 120) {
   	$bla = '#B2004C';
   	}  
   	elseif($temp <= 130) {
   	$bla = '#CC0033';
   	}  
   	elseif($temp <= 140) {
   	$bla = '#E50019';
   	}  
   	elseif($temp <= 150) {
   	$bla = '#FF0000';
   	}  
   		 
   	else {
   	$bla = '#000000';
   	}
   	
   	return $bla;
   }
Folgende Funktionsweise:
Für jede Temperatur soll der entsprechende HTML-Code wiedergeben werden. Wenn die Temperatur kleiner als 40 (Grad) ist soll halt der Farbcode '#1900E5' ausgeben werden.

Folgende Denkschritte:

$temp ist ne Zahl.. Von 50 bis -50 ist alles dabei. Das Minuszeichen wird mit einer 1 ersetzt da ich <= mit nur mir positiven Zahlen ans Laufen bekomme.

Das Problem:
Es wird immer nur der HTML-Code für <= 150 ausgeben..



Nach ein bissl rumtesten.

Die Lösung:
Code:
 function get_html4temp($temp)
 {
 	// Temperaturen: 50 bis -50
 	
 
 	if($temp <= 50 AND $temp > 40) {
 	$bla = '#FF0000';
 	}  
 	elseif($temp <= 40 AND $temp > 30) {
 	$bla = '#E50019';
 	}  
 	elseif($temp <= 30 AND $temp > 20) {
 	$bla = '#CC0033';
 	}  
 	elseif($temp <= 20 AND $temp > 10) {
 	$bla = '#B2004C';
 	}  
 	elseif($temp <= 10 AND $temp > 0) {
 	$bla = '#990066';
 	}  
 	elseif($temp <= 0 AND $temp > -10) {
 	$bla = '#7F007F';
 	}  
 	elseif($temp <= -10 AND $temp > -20) {
 	$bla = '#660099';
 	}  
 	elseif($temp <= -20 AND $temp > -30) {
 	$bla = '#4C00B2';
 	}  
 	elseif($temp <= -30 AND $temp > -40) {
 	$bla = '#3300CC';
 	}  
 	elseif($temp <= -40 AND $temp > -50) {
 	$bla = '#1900E5';
 	}  
 	elseif($temp <= -50 AND $temp > -60) {
 	$bla = '#0000FF';
 	}  
 		 
 	else {
 	$bla = '#000000';
 	}
 	
 	return $bla;
 }

  #2  
Alt 22.12.2004, 14:14
Benutzerbild von Michael Przybyla
Mitglied
 
Registriert seit: 02.2003
Beiträge: 184
Hi Nase,

kann ich nicht bestätigen, allerdings bekomme ich falsche Werte.
Das liegt daran, dass du ne falsche Reihenfolge hast.

PHP-Code:

 
function get_html4temp($temp)
  {
      
// Temperaturen: 50 bis -50
      
      
if($temp <= -10) {
      
$bla '#990066';
      }  
      elseif(
$temp <= -20) {
      
$bla '#B2004C';
      }  
      elseif(
$temp <= -30) {
      
$bla '#CC0033';
      }  
      elseif(
$temp <= -40) {
      
$bla '#E50019';
      }  
      elseif(
$temp <= -50) {
      
$bla '#FF0000';
      }          
      elseif(
$temp <= 0) {
      
$bla '#7F007F';
      } 
       
      elseif(
$temp <= 10) {
      
$bla '#660099';
      } 
    
      elseif(
$temp <= 20) {
      
$bla '#4C00B2';
      }  
   
      elseif(
$temp <= 30) {
      
$bla '#3300CC';
      }    
      elseif(
$temp <= 40) {
      
$bla '#1900E5';
      }      elseif(
$temp <= 50) {
      
$bla '#0000FF';
      }  
       
      else {
      
$bla '#000000';
      }
      
      return 
$bla;
  } 
Klar wieso? Denn die Zahl 10 ist immer kleiner als 50 somit sucht er ja nicht weiter sondern gibt dir das Ergebnis für <= 50.

  #3  
Alt 22.12.2004, 14:45
Benutzerbild von Fabchan
früher Dracaelius
 
Registriert seit: 10.2003
Ort: Seesen
Beiträge: 354
Hi Nase!

Hab dir mal ne Funktion geschrieben, die ihren Dienst ebenso tun sollte.

PHP-Code:
// Array mit den Farbnamen
// Wichtig ist hierbei, dass die Zahlen nach der Größe Sortiert angegeben werden
$_TEMPCOLORS = array(
    -
50 => '#0000FF',
    -
40 => '#1900E5',
    -
30 => '#3300CC',
    -
20 => '#4C00B2',
    -
10 => '#660099',
    
0   => '#7F007F',
    
10  => '#990066',
    
20  => '#B2004C',
    
30  => '#CC0033',
    
40  => '#E50019',
    
50  => '#FF0000'
);

function 
get_html4temp($temp)
{
    global 
$_TEMPCOLORS;    
    
    
// Zahl von double nach integer umwandeln
    
$temp round($temp0);
    foreach (
$_TEMPCOLORS as $min => $color)
    {
        if (
$temp <= $min)
        {
            return 
$color;
        }
    }    

EDIT:
Sorry, hab nicht gesehen, dass vor mir schon jemand geantwortet hat,
aber meine Alternative erscheint mir vom Code her trotzdem schöner, als die vielen elfseifs.

__________________
Fabian Michael
"Ein Tag, an dem du nicht lächelst, ist ein verlorener Tag."
- Charlie Chaplin

Wiki
  #4  
Alt 22.12.2004, 19:33
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 811
@Dracaelius: Du hast dabei aber nur eine Kleinigkeit übersehen:
Wenn die Zahl > 50 ist soll #000000 genommen werden.

Es müsste also noch ein return hinter dem foreach hinzugefügt werden:

PHP-Code:
// Array mit den Farbnamen
// Wichtig ist hierbei, dass die Zahlen nach der Größe Sortiert angegeben werden
$_TEMPCOLORS = array(
    -
50 => '#0000FF',
    -
40 => '#1900E5',
    -
30 => '#3300CC',
    -
20 => '#4C00B2',
    -
10 => '#660099',
    
0   => '#7F007F',
    
10  => '#990066',
    
20  => '#B2004C',
    
30  => '#CC0033',
    
40  => '#E50019',
    
50  => '#FF0000'
);

function 
get_html4temp($temp)
{
    global 
$_TEMPCOLORS;    
    
    
// Zahl von double nach integer umwandeln
    
$temp round($temp0);
    foreach (
$_TEMPCOLORS as $min => $color)
    {
        if (
$temp <= $min)
        {
            return 
$color;
        }
    }
    
    return 
'#000000';



codi.

Antwort


Stichworte
-


Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
DRINGEND: Hilfe bei Praktikumsbericht, Beobachtende Wahrnehmung MrNase Boardunity-Talk 11 11.04.2009 16:14
Brauche Hilfe bei Frames... Andy2309 Programmierung und Datenbanken 2 19.06.2004 10:09
Opera7 - Eine hilfreiche Hilfe für Anfänger und Profis TRS Boardunity-Talk 1 21.05.2004 20:24
Hilfe! Wie setze ich per sql den admin beim wbb2.1.3 zurück? AboveAllOthers Forensoftware 7 13.02.2004 18:59
Hilfe, Notfall: Recherche Wunder gesucht! Winters Boardunity-Talk 4 28.01.2004 00:30






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25