Fabian: (mysql) PHP abfrage mit or und variablen

Hallo Forumaner,

ich habe ein wahrscheinlich kleines aber für mich kniffliges Problem.

Ich möchte aus einer Tabelle unter anderem von einer Postleitzahl abhängig abfragen.

Zusätzlich würde ich auf Wunsch gern die nächst höhere und niedrigere Zahl mit einschließen.

Der Besucher kann die Anzahl der Stellen der Postleitzahl von 1-5 selbst bestimmen.

if ($plz!="")
 {
  $plz_laenge = strlen($plz);
  if ($plz_laenge =="1")
   {
    $plz=substr($plz,0,1);
  if ($angrenz_plz=="1")//gucken ob angrenzende PLZ aktiviert
         {
  $plz_o=$plz+1; //eingegebene zahl +1
  $suchkriterien=$suchkriterien."AND (plz like '$plz%' OR plz like '$plz_o%')";

leider sucht er nur die aktuell eingegebene Zahl heraus, die obere Zahl wird leider nicht berücksichtigt.

Wahrscheinlich liegt der fehler einfach an der Abfrage...???

DAnke für jegliche Art von Hilfen

Grüße aus Braunschweig

Fabian

  1. Hallo,

    ein
     (plz BETWEEN $plz AND $plz_o)
    oder auch direkt
     (plz BETWEEN $plz AND $plz+1)
    sollte das Problem lösen.

    Grüße aus Würzburg
    Julian

    1. Danke Julian für die Hilfe,

      aber das trifft den Kern nicht so ganz...

      Wenn jemand 3 als PLZ eintippt so soll auch 2 und 4 gefunden werden

      wenn jemand 37 eintippt soll auch alles von 36000 bis 38999 gefunden werden.

      Jedoch zeigt er auch bei deiner Lösung immer nur eine Zahl an, ohne die weiteren PLZ zu berücksichtigen...

      Grüße Fabian

      1. Hallo Fabian,

        aber das trifft den Kern nicht so ganz...

        Ok, ich glaub jetzt hab ich die Absicht erst korrekt verstanden.

        Der Ansatz muss noch bissl angepasst werden. Könnte etwa so funktionieren:

        if ($plz!="")
        {
            if ($angrenz_plz=="1")//gucken ob angrenzende PLZ aktiviert
            {
                if($plz > 0) // Untere Schranke
                  $plz_u = $plz-1;
                if($plz < 9) // Obere Schranke
                  $plz_o = $plz+1;
                $i = 0;
                while(strlen($plz)<5) // Füllen PLZs auf 5 Stellen auf
                {
                    $plz = $plz."0";
                    $plz_u = $plz_u."0";
                    $plz_o = $plz_o."0";
                    $i++;
                }

        $suchkriterien=$suchkriterien."AND (plz BETWEEN $plz_u AND $plz_o)";
            }
        }

        Grüße aus Würzburg
        Julian