php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.12.2004, 12:10  
Erfahrener Benutzer
 
Registriert seit: 01.09.2004
Beiträge: 140
Paulo
Standard if Problem

PHP-Code:
$land "Belgien";

if (
$land == "Deutschland" ) {
$zone "Zone=1";
}
if (
$land == ("Frankreich" || "Belgien" || "Niederlande" || "England" || "Irland" || "Lux" || "Österreich" || "Dänemark" || "Tschechien")){
$zone "Zone=2";
}
if (
$land == ("Polen" || "Litauen" || "Latvia" || "Estonia" || "Slovakai" || "Slovenien" || "Schweden" || "Ungarn" || "Italien" || "Portugal" || "Spanien")){
$zone "Zone=3";
}
if (
$land == ("Finnland" || "Iceland" || "Griechenland")){
$zone "Zone=4";
}
if (
$land == "Schweiz") {
$zone "Zone=5";
}
if (
$land == "Norwegen"){
$zone "Zone=6";
}
            }
        } 
Egal was ich dort eingebe bei $land, es funktioniert nur Schweiz und Norwegen. Ansonsten ist es immer Zone=4 , woran könnte das liegen?

Danke
Paulo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.12.2004, 12:22  
Gast
 
Beiträge: n/a
Standard ereg_replace (||)

hast Du anstatt || mal versucht mit "or" zu verknüpfen?
 
Alt 20.12.2004, 12:30  
Erfahrener Benutzer
 
Registriert seit: 01.09.2004
Beiträge: 140
Paulo
Standard Re: ereg_replace (||)

Zitat:
Zitat von nice2kn0w
hast Du anstatt || mal versucht mit "or" zu verknüpfen?
Hilft leider auch nix :/
Paulo ist offline  
Alt 20.12.2004, 12:43  
Gast
 
Beiträge: n/a
Standard

Ihr möchtet bestimmt mal in der Doku nachsehen, wie man das richtig macht:

http://www.php.net/manual/de/languag...-structures.if

Code:
if ($land == "Frankreich" || $land == "Belgien" ..........
Oder vielleicht switch/case benutzen:
Code:
switch ($land)
{
   case "Deutschland": $zone = "Zone=1"; break;

   case "Frankreich":
   case "Belgien":
   case "Niederlande":
   case "England":
   case "Irland": 
   case "Lux":
   case "Österreich":
   case "Dänemark":
   case "Tschechien": $zone = "Zone=2"; break;

   :
   :
}
Gruß
phpfan
 
Alt 20.12.2004, 12:46  
Neuer Benutzer
 
Registriert seit: 20.12.2004
Beiträge: 17
micha-bbg
Standard

Ich glaub, diese if-Abfragen mit or-Verknüpfungen funktioneieren nicht so. Nimm doch eine switch-Abfrage (ist auch übersichtlicher):
Code:
<?PHP
$land = "Estonia";
switch ($land)
{
  case "Deutschland":
    $zone = "Zone=1";
    break;
  case "Frankreich":
  case "Belgien":
  case "Niederlande":
  case "England":
  case "Irland":
  case "Lux":
  case "Österreich":
  case "Dänemark":
  case "Tschechien":
    $zone = "Zone=2";
    break;
  case "Polen":
  case "Litauen":
  case "Latvia":
  case "Estonia":
  case "Slovakai":
  case "Slovenien":
  case "Schweden":
  case "Ungarn":
  case "Italien":
  case "Portugal":
  case "Spanien":
    $zone = "Zone=3";
    break;
  case "Finnland":
  case "Iceland":
  case "Griechenland":
    $zone = "Zone=4";
    break;
  case "Schweiz":
    $zone = "Zone=5";
    break;
  case "Norwegen":
    $zone = "Zone=6";
    break;
}
?>
Mfg
Micha

edit: phpfan war schneller...
micha-bbg ist offline  
Alt 20.12.2004, 13:09  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hier bietet sich eine Lösung mit einem einfachen Array an:
Code:
$countries = array('Deutschland' => 1,
                   'Frankreich'  => 2,
                   'Belgien'     => 2,
                   'Niederlande' => 2);

if (!isset($countries[$country])) die('Des Land gibds nedd!');

$zone = $countries[$country];
Und zu dem Vergleichsoperatoren-Problem:
Or verknüpft in PHP die bool. Repräsentationen der Werte miteinander: ('foo' || 'bar') wird also interpretiert als (true || true) und das ergibt natürlich true (true log. oder true = true). Wenn du irgendeinen nichtleeren String (also dein $land) via '==' mit true vergleichst, bekommst du immer ein true zurück, siehe[1]. Daher wurde dein Wert auf "Zone=4" gesetzt.

[1] http://www.php.net/manual/en/types.comparisons.php

Basti
Basti ist offline  
Alt 20.12.2004, 14:29  
Erfahrener Benutzer
 
Registriert seit: 01.09.2004
Beiträge: 140
Paulo
Standard

Ahh ok, danke an alle!
Paulo ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
case..spanien

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.