Krisförmige Vertriebspartner-Suche (PHP mysql)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Krisförmige Vertriebspartner-Suche (PHP mysql)

    Hi Leute

    Ich möchte eine Art kreisförmige PLZ-Suche (Schweiz: Unsere PLZ's gehen von 1000 - 9999) realisieren (php mysql):


    Ich habe ein Vertriebspartner-Verzeichnis mit Suchfunktion:

    1. Per Inputfeld gibt User PLZ ein (Bsp. 4500)
    2. Die Ausgabe der nächstgelegenen Vertriebspartner sollte nach folgendem Muster erfolgen:

    2A. Eingrenzung des Suchbereiches auf Tausender ( also 4000 - 4999)
    2B. Die Einträge müssen Sortiert werden:[list=a][*]Der nächtgelegene Eintag ( 4512)[*]Der zweitnächste ( 4518)[*]Der drittnächste ( 4470)[*]usw.[/list=a]

    Also eine Art Kreisförmige suche um einen Punkt (4500)



    Leider habe ich keine brauchbaren Ansätze um Punkt 2B zu realisieren.
    Für eure Inputs bin ich sehr dankbar!


    Gruss

  • #2
    Also ich würde die Entfernung zur eingegebenen Zahl berechnen und dann dementsprechent ordnen.

    In etwa so:

    PHP-Code:
    $result mysql_query("SELECT * FROM vertriebspartner 
    WHERE (plz - " 
    $plz " < 500) OR (plz - " $plz " > -500) 
    ORDER BY ((plz - " 
    $plz ") + 500) ASC;"); 
    Ich habs jez nur so ausm Kopf gemacht, aber ich denke es sollte (jedenfalls so in etwa) stimmen.

    Das heißt in worten gefasst: Nimm jeden Vertriebspartner, dessen PLZ-Differenz kleiner als 500 ist, oder größer als Minus 500 (Die Zahlen Unterhalb der eingegebenen Zahl) und sortiere sie nach der differenz + 500 (um die negativen Zahlen auszugleichen) aufsteigend.

    Sollte also gehn.
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      Vielen Dank!

      Ich habe es noch nicht getestet, jedoch ein Einwad habe ich.
      und sortiere sie nach der differenz + 500 (um die negativen Zahlen auszugleichen) aufsteigend.
      4480 - 4500 + 500 = 480
      4500 - 4500 + 500 = 500
      4505 - 4500 + 500 = 505
      4510 - 4500 + 500 = 510

      Das haut meiner Meinung nach nicht hin, aber man könnte quadrieren um die Vorzeichen zu eliminieren.

      (4480 - 4500)^2= 400
      (4490 - 4500)^2= 100
      (4500 - 4500)^2 = 0
      (4505 - 4500)^2 = 25
      (4510 - 4500)^2 = 100

      PHP-Code:
      $result mysql_query("SELECT * FROM vertriebspartner 
      WHERE (plz - " 
      $plz " < 500) OR (plz - " $plz " > -500) 
      ORDER BY ((plz - " 
      $plz ") * (plz - " $plz ") ) ASC;"); 
      Gruss

      Kommentar


      • #4
        Original geschrieben von swsg
        aber man könnte quadrieren um die Vorzeichen zu eliminieren.
        Oder einfach den Betrag nehmen ...

        Oder einfach die Auswählen, wo Entfernnung zwischen -x und x liegt.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar

        Lädt...
        X