Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Ich hänge an einer Abfrage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Ich hänge an einer Abfrage

    PHP-Code:
    $t=mysql_query("SELECT title,ROUND((((acos(sin((".$latitude."*pi()/180)) * sin((`lat`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`lat`*pi()/180)) * cos(((".$longitude."- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344),2) as distance FROM ".ACCCONT." where dep=".$_GET['id']." order by distance asc,sorter asc "); 
    Es gibt in jedem Eintrag einen Flag, den der Author sezen muss.

    Manuelle Sortierung (INT Feld sorter) und / oder Nach Geodaten.

    Entscheidet er sich für Geodaten, so muss er dann entsprechend die Felder lat, lng befüllen, kann aber immernoch die Einträge mit sorter sortieren.

    Resultat soll sein, dass (sofern der Betrachtende seine Geodaten und somit $latitude und $longitude preisgibt) alle Felder, die nach Geodaten sortiert werden sollen entsprechend als erstes sortiert und erst dann alle anderen entsprechend ausgibt.

    Obiges Beispeil passt also nicht, da ich nicht weiß wo ich den entsprechenden Flag "GEO" (GEO=1 manuelle Sortierung), GEO=2 lat,lng sortierung) angeben kann.

    Sowas wie
    PHP-Code:
    $t=mysql_query("SELECT title,IF(GEO==2){ROUND((((acos(sin((".$latitude."*pi()/180)) * sin((`lat`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`lat`*pi()/180)) * cos(((".$longitude."- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344),2) as distance} FROM ".ACCCONT." where dep=".$_GET['id']." order by distance asc,sorter asc "); 
    geht ja nicht.

    Und zweite Frage:
    SQL ist da ja ziemlich zickig. Wenn der User $latitude nicht mitgibt, kommen auch keine Einträge mehr raus, da SQL Fehler. In dem Fall soll die manuelle sortierung greifen. Gibt es da eine Möglichkeit (sowas wie ignore_error) innerhlab des Querys?

    Wahrscheinlich nicht oder? Denn wenn ich eh mit zwei Querys arbeiten muss, hätte sich Frage 1 auch erledigt. Ich hoffe aber nicht

    Danke

  • #2
    Ich habe das bei mir so gemacht, dass ich die Bogenmaßkoordinaten erst in kartesische Koordinaten umgerechnet und die Daten erst dann in die DB geschrieben habe. Danach kann ich dann alles mit recht "einfachen" Mitteln berechnen.

    Kommentar


    • #3
      Entweder verstehe ich nicht was du meinst, oder du verstehst meine Frage nicht

      Kommentar


      • #4
        Hat sich erledigt.
        Ich mache es mit zwei Querys

        Kommentar


        • #5
          Ich spreche von
          PHP-Code:
          ROUND((((acos(sin((".$latitude."*pi()/180)) * sin((`lat`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`lat`*pi()/180)) * cos(((".$longitude."- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344),2) as distance 

          Kommentar


          • #6
            Das war ja nicht das Problem. Funktioniert ideal. Distance wird ausgegeben.

            Kommentar

            Lädt...
            X