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 ");
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 ");
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
Kommentar