[PHP] IF-Abfrage mit vielen PLZ ?
-
Hallo Zusammen.
Ich hatte versucht, eine if Abfrage zu starten mit dem OR zeichen. Da ich jeder Mitarbeiter auf ein bestimmtes Gebiet einteilen möchte, sollte PHP prüfen welche PLZ dann zugewiesen wird. Dazu habe ich mal folgendes versucht:
Ich habe eine Datei erstellt, wo die Bezirke mit den PLZ aufgelistet sind. das ||-Zeichen sollte dann dem IF Dienen als 'or' Abfrage.
$bezirk_baden = "5400 || 5401 || 5402 || 5403 || 5404 || 5405 || 5406 || 5413 || 5242 || 5244 || 5200 || 5201 || 5408 || 5300 || 5442 || 5423 || 5412 || 5212 || 5415 || 5416 || 5507 || 5243 || 5443 || 5442 || 5452 || 5412 || 5223 || 5301 || 5222 || 5417 || 5430 || 5431 || 5210 || 5303";
Die IF-Abfrage sieht dann so aus:
require_once("includes/plz_verzeichnis.inc"); require_once("includes/ma_plz.inc"); if($_POST['plz'] == $bezirk_aarau) { $mitarbeiter = $ma_aarau; } if($_POST['plz'] == $bezirk_baden) { $mitarbeiter = $ma_baden; } if($_POST['plz'] == $bezirk_lenzburg) { $mitarbeiter = $ma_lenzburg; } if($_POST['plz'] == $bezirk_hallwil) { $mitarbeiter = $ma_hallwil; } if($_POST['plz'] == $bezirk_spreitenbach) { $mitarbeiter = $ma_spreitenbach; } if($_POST['plz'] == $bezirk_wohlen) { $mitarbeiter = $ma_wohlen; }
Die MA.inc enthält lediglich die E-Mail Adressen zum Mitarbeiter.
Mir ist nun aufgefallen, dass nichts passiert. Wahrscheinlich geht die Abfrage so nicht. Wollte dass $_POST['plz'] == 5501 || $plz == 5502 nicht zu unü¨bersichtlich wird und alle PLZ eines Bezirkes speichern und so überprüfen.
Gibt es eine elegante Lösung?? Mit in_array komm ich auch nicht weiter, denn wie sollte ich dann die verschiedene PLZs, trennen und ist dan $bezirk_baden beispielsweise automatisch ein Array? ICh glaube nicht.
lg
Wolf
-
mach lieber die Bezirke als Listen von PLZs. Dann guckst Du ob die PLZ in dem Bezirk vorhanden ist:
$bezirk_baden = array(5400, 5401, 5402, 5403, 5404); if(in_array($_POST['plz'], $bezirk_baden)) { $mitarbeiter = $ma_baden; }
Nun könntest Du auch ein sogenanntes assoziatives Array verwenden um das
ganze zu vereinfachen:$bezirke = array('ma_baden' => array(5400, 5401, 5402, 5403, 5404), 'ma_aarau' => array(...)); $mitarbeiter = ''; foreach($bezirke as $ma => $bezirk) { if(in_array($_POST['plz'], $bezirk)) { $mitarbeiter = $ma; break; } }
ungetestet
-
switch ($_POST['plz']) { case 5400: case 5401: case 5402: // ... $mitarbeiter = $ma_baden; break; case 5500: case 5501: $mitarbeiter = $ma_lenzburg; break; // ... }
-
Also ich würde es per mySQL-DB lösen und alternativ die Lösung von Airdamn bevorzugen.
Viel wichtiger ist, dass Du dein Skript sicher machst: Nenne Die Dateien auf alle Fälle um, so dass sie die Endung ...inc.php tragen! Sollten Sie nur ...inc heissen, kann sie in der Regel jeder anschauen und etwaige Sicherheitslücken ausfindig machen und missbrauchen!