PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Newbie: If-ElseIf-Else Codeoptimierung (https://www.php-resource.de/forum/php-developer-forum/105916-newbie-if-elseif-else-codeoptimierung.html)

Guenther 08-03-2017 01:20

Newbie: If-ElseIf-Else Codeoptimierung
 
Hallo zusammen.

Ich betrachte hier gerade ein Codesegment und denke mir, dass das doch wesentlich eleganter zu lösen sein müsste, allerdings fehlt mir dazu der Ansatz.

Ausgangssituation ist ein Script, das als Parameter einen Buchstaben übergeben bekommt. Hieraus wird die WHERE Klausel einer SQL Abfrage zusamengesetzt, die dann später nur die Namen mit dem jeweiligen Anfangsbuchstaben zurück liefern soll.

Ich finde, der Code ist zwar logisch, aber gruselig und bestimmt alles andere als performant.

Aber schaue ihn Dir am besten selbst einmal an.

PHP-Code:

            if (IsSeT($_GET['p_name']) && $_GET['p_name'] == "A") {
                
$name_filter "AND (adr_name like 'a%' )";
            } 
            elseif (IsSeT(
$_GET['p_name']) && $_GET['p_name'] == "B") {
                
$name_filter "AND (adr_name like 'b%' )";
            } 
                elseif (IsSeT(
$_GET['p_name']) && $_GET['p_name'] == "C") {
                
$name_filter "AND (adr_name like 'c%' )";
            } 
/* ...*/
            
elseif (IsSeT($_GET['p_name']) && $_GET['p_name'] == "Z") {
                
$name_filter "AND (adr_name like 'z%' )";
            } 
            else {
                
$name_filter "";
            } 

Da wird also wirklich von A-Z jeder einzelne Buchstabe geprüft. Das geht sicherlich irgendwie eleganter. Aber wie?

Danke, dass Du Dir die Zeit zum lesen genommen hast und ich bin sehr gespannt auf den Input, den ich hoffentlich bekomme.

Lg
Günther

bandit600 08-03-2017 10:23

PHP-Code:

$var = isset($_GET['p_name']) ? strtolower($_GET['p_name']) : "";

$name_filter strlen($var) ? "AND (adr_name like '$var%' )" ""


Guenther 09-03-2017 02:29

Es hat auf Anhieb funktioniert. Ganz herzlichen Dank dafür.
Lg
Günther


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

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG