ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1062
1062
EMPFEHLEN
-
Hi,
ich möchte eine Datenbankabfrage einsetzen, die anhand von PHP Variablen eine Berechnung ausführt und anhand dieser Berechnung eine Query generiert.
Ich schreibe es mal so dar wie ich es mir vorstelle - vielleicht versteht man es besser:
MySQL soll also anhand dieser Formel die Ausgabe filtern, so dass MySQL die Rechenarbeit leistet und diese nicht über das PHP Script geleistet wird. Ich verspreche mir dadurch eine bessere Performance bei größeren Zugriffszahlen.PHP-Code:$lat_1 = '5';
$lat_2 = '7';
$lng_1 = '8';
$lng_2 = '9';
$entf = '40';
$pi = '3.14';
$A = '5.9';
...
$sql_query = ("SELECT
*
FROM
`database`
WHERE
// Hier in der WHERE-Klausel soll nun die Formelberechnung umgesetzt werden - ANFANG
(((acos(sin($lat_1)*sin($lat_2)+cos($lat_1)*cos($lat_2)*cos($lng_2-$lng_1)))180*$pi)*$A) <= $entf
// Formelberechnung - ENDE
ORDER BY
'point' ASC
");
$result = mysql_query($sql_query);
while( $row = mysql_fetch_array($result,MYSQL_ASSOC) ) {
echo $row['point']."<br />";
}
...
Vielleicht hat jemand eine zündende Idee für mich.
Beste Grüße,
prekoWem das Wasser bis zum Hals steht, sollte den Kopf nicht hängen lassen.
Was man heute Rap-Musik nennt, hieß früher Stottern und war heilbar...
Es gibt zwei Wege im Leben - den schweren und den falschen!
-----------------------------------------------------------------------------------------------------
http://www.prenociste-mir.com
-----------------------------------------------------------------------------------------------------
-
15.07.09 18:44 #2
Hallo!
Keine zündene Idee..... aber den Hinweis dass es für die Variable $pi auch eine Funktion gibt.
Gruss Dr Dau
[edit]
Eine Idee hätte ich doch.
Die Abfrage führt so zum gewünschten Ergebnis?
Dann würde ich mal gucken was passiert wenn Du die mathematischen PHP-Funktionen in der php.ini oder per ini_set() deaktivierst (Abschnitt: disable_functions).
Soweit ich weiss gibt es diese nämlich auch in MySQL.
Dann müssten sie für PHP eigentlich ein einfacher String sein und MySQL müsste sie als Fünktionen ansehen.
Keine Ahnung ob es funktioniert..... aber ein Versuch wäre es wert.
[/edit]Geändert von Dr Dau (15.07.09 um 19:09 Uhr)
Schri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 29.10.2011)
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
-
15.07.09 19:08 #3
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
ich verstehe ehrlich gesagt das Problem gar nicht. Klar kann auch MySQL solche Berechnungen durchführen. Schau halt in den numerischen Funktionen nach.
Ich sehe in dieser Formel allerdings keinen einzigen Spaltennamen. Was soll MySQL da filtern? Du bekommst entweder alle Datensätze oder keinen...
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
Hi,
@ kuddeldaddeldu:
sorry, mein Fehler - habe mein Denkmodell reinkopiert und nicht die Realsituation.
Hier nun die richtige Darstellung:
@Dr. Dau:PHP-Code:/*
Spalten in der MySQL Tabelle:
lat_2 | lng_2 | city
*/
$lat_1 = '5';
$lng_1 = '8';
$entf = '40';
$pi = '3.14';
$A = '5.9';
...
$sql_query = ("SELECT
`lat_2`,
`lng_2`,
`city`,
FROM
`database`
WHERE
// Hier in der WHERE-Klausel soll nun die Formelberechnung umgesetzt werden - ANFANG
(((acos(sin($lat_1)*sin(lat_2)+cos($lat_1)*cos(lat_2)*cos(lng_2-$lng_1)))180*$pi)*$A) <= $entf
// Formelberechnung - ENDE
ORDER BY
//Hier soll das Ergebnis aus der obigen Formel rein// ASC
");
$result = mysql_query($sql_query);
while( $row = mysql_fetch_array($result,MYSQL_ASSOC) ) {
echo $row['point']."<br />";
}
...
Die Abfrage führt so nicht zum gewünschten Ergebnis (ich vermute Du hinterfragst die Syntax). Ist nur ein Ausdruck dessen, was ich bezwecken möchte. Allerdings ist die Formel als solche korrekt - mit PHP funktioniert sie!
Ich möchte per MySQL alle Orte abrufen, die in einem bestimmten Radius um einen Ausgangspunkt liegen und dann eine Sortierung in aufsteigender Folge nach Entfernungskilometern realisieren.
Damit nun MySQL nicht die ganze Tabelle einliest (welche bei meinem Vorhaben ziemlich groß werden könnte), soll eine "Vorauswahl" der Datensätze getroffen werden, die dann weiter von PHP verarbeitet wird.
Lasse ich die Berechnung nicht durch MySQL abarbeiten, so muss ich erst PHP drüberjagen, damit ich eine Sortierung nach Entfernungskilometern realisieren kann, da die Daten in der Datenbank "nur" die Längen- und Breitengrade enthalten und daraus erst anhand der Formel oben die tatsächlichen Entfernungskilometer berechnet werden.
Übrigens arbeite ich mit einer ausführlicheren Zahl PI - habe es aus einfachheitsgründen abgekürzt.
Beste Grüße,
prekoWem das Wasser bis zum Hals steht, sollte den Kopf nicht hängen lassen.
Was man heute Rap-Musik nennt, hieß früher Stottern und war heilbar...
Es gibt zwei Wege im Leben - den schweren und den falschen!
-----------------------------------------------------------------------------------------------------
http://www.prenociste-mir.com
-----------------------------------------------------------------------------------------------------
-
16.07.09 10:54 #5
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
Ähnliche Themen
-
Entfernung berechnen anhand der PLZ
Von Sascha1976 im Forum Coders TalkAntworten: 32Letzter Beitrag: 05.08.10, 20:54 -
Stapelverarbeitung bzw. Automatisieren, anhand dem Beispiel möglich?
Von zylon im Forum Cinema 4DAntworten: 1Letzter Beitrag: 01.12.07, 00:53 -
mysql Lebensalter berechnen lassen ?
Von Deletemaster im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 23.11.06, 19:50 -
MySQL: Ausgabe von einer Tabelle anhand eines Spielplans
Von Sebbel85 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 29.08.06, 19:06 -
Kurs anhand von zwei Positionsangaben berechnen?
Von bartman336 im Forum Coders TalkAntworten: 5Letzter Beitrag: 02.07.04, 22:52





Zitieren

Login





