php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #31 (permalink)  
Alt 08-09-2003, 12:50
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

in der example.phps findest du folgendes:
PHP-Code:
/**
* Suche nach Ortsnamen
*/
$search 'wuppertal%'// Ortsname (MySQL-Wildcards möglich)
$matches $geodb->findGeoObject($search);
print_r($matches); // <= füg das mal ein 
damit ermittelst du die geodaten des eigenen standortes. das ganze steht in einem array. werden mehrere treffer gefunden, muss der standort halt genauer gewählt werden. das übergibst du per $_POST, gibt es nur einen treffer, kannst du die daten direkt weiterverarbeiten.

die adress-db für der händler erweiterst du nun um die geodaten für deren standort (abgleich geodb-tab mit händler-tab). jedesmal, wenn ein neuer eintrag kommt, holst du auch die geodaten dazu.

die 2. abfrage (umkreissuche) sucht nun in der händler-tabelle. die anweisungen/zuordnungen musst du in der geoclass.php anpassen. oder du machst dir ein umbenanntes duplikat der klasse und arbeitest mit dem. welche tabelle abgefragt wird, muss ja in der klasse definiert werden.

mehr sollte es nicht sein.
__________________
Kissolino.com
Mit Zitat antworten
  #32 (permalink)  
Alt 15-09-2003, 16:48
Pkolb
 Newbie
Links : Onlinestatus : Pkolb ist offline
Registriert seit: Sep 2003
Beiträge: 25
Pkolb ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi Leutz,
das Thema Geo-Datenbank ist bei mir leider immer noch nicht abgehakt. Jetzt habe ich auch noch die blöde Idee, die jeweiligen Vorwahlen mit einzubinden. Da diese bei der OpenGeo- Datenbank nicht dabei sind, wäre ein weitere Datenquelle nützlich. Kennt jemand eine?

Hat jemand von euch eine Ahnung, wo ich diese Daten auch für die Schweiz und Österreich herbekomme?

Geändert von Pkolb (15-09-2003 um 17:19 Uhr)
Mit Zitat antworten
  #33 (permalink)  
Alt 24-09-2003, 21:47
RGummi
 Newbie
Links : Onlinestatus : RGummi ist offline
Registriert seit: Sep 2003
Beiträge: 8
RGummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

also was die Unkreissuche angeht kann ich euch helfen

"SELECT * FROM ".PLZ_DATA_TABLE." WHERE SQRT(POW(".$phi."-Phi,2)*6400 + POW(".$theta."-Theta,2)*12100) < 10";

wobei $phi der Längengrad und $theat der Breitengrad ist

spuckt alles aus was in 10 km Entfernung so zu finden ist !

R
Mit Zitat antworten
  #34 (permalink)  
Alt 24-09-2003, 21:56
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

sieht nicht schlecht aus!!!
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #35 (permalink)  
Alt 24-09-2003, 22:01
RGummi
 Newbie
Links : Onlinestatus : RGummi ist offline
Registriert seit: Sep 2003
Beiträge: 8
RGummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

ich kann noch einen draufsetzen!

"SELECT PLZ, Ort, SQRT(POW(".$phi."-Phi,2)*6400 + POW(".$theta."-Theta,2)*12100) AS Distance FROM ".PLZ_DATA_TABLE." WHERE SQRT(POW(".$phi."-Phi,2)*6400 + POW(".$theta."-Theta,2)*12100) < 10 ORDER BY Distance";

sortiert das Ganze noch so, dass die nächsten PLZ-Gebiete am Anfang kommen und die Distanz auch noch mit rauskommt.

R
Mit Zitat antworten
  #36 (permalink)  
Alt 24-09-2003, 22:08
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

hast du das ganze irgendwo on air, dass man mal testen kann?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #37 (permalink)  
Alt 24-09-2003, 22:24
RGummi
 Newbie
Links : Onlinestatus : RGummi ist offline
Registriert seit: Sep 2003
Beiträge: 8
RGummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nee bin ja gerade dabei, aber es geht.

Und wenn Du meinst die Erde sei eine Kugel und keine Scheibe (die Deutsche Post nimmt das an)

dann sieht das so aus

$phi = deg2rad(11.5583); // zum Test
$theta = deg2rad(48.1627); // zum Test
$radius = 6367.46; // Mittelwert zwichen Äquator und Polradius
$umkreis = 25;

"SELECT PLZ, Ort, ".$radius."*SQRT(2*(1-cos(Theta)*cos(".$theta.")*(sin(Phi)*sin(".$phi.")+cos(Phi)*cos(".$phi."))-sin(Theta)*sin(".$theta."))) AS Distance FROM ".PLZ_DATA_TABLE." WHERE ".$radius."*SQRT(2*(1-cos(Theta)*cos(".$theta.")*(sin(Phi)*sin(".$phi.")+cos(Phi)*cos(".$phi."))-sin(Theta)*sin(".$theta."))) <= ".$umkreis." ORDER BY Distance";

wobei theta und phi in rad anzugeben sind !!! Auch in der Datenbank

deg2rad() leistet da gute Dienste beim konvertieren


Der arme SQL Parser :-)
Mit Zitat antworten
  #38 (permalink)  
Alt 24-09-2003, 22:51
RGummi
 Newbie
Links : Onlinestatus : RGummi ist offline
Registriert seit: Sep 2003
Beiträge: 8
RGummi ist zur Zeit noch ein unbeschriebenes Blatt
Thumbs up

Hallo,

ist jetzt was zum Testen da

Umkreissuche

eure PLZ eingeben und umkreis

R


Geändert von RGummi (24-09-2003 um 23:15 Uhr)
Mit Zitat antworten
  #39 (permalink)  
Alt 25-09-2003, 10:15
Pkolb
 Newbie
Links : Onlinestatus : Pkolb ist offline
Registriert seit: Sep 2003
Beiträge: 25
Pkolb ist zur Zeit noch ein unbeschriebenes Blatt
Talking

Nicht schlecht. Ist das mit der OpenGeoDB gemacht oder wo hast du die Daten her?

Und warum wird der eingegebene Ort in der Ausgabe mitaufgelistet (mit einer Entfernung, was ja gar nicht sein dürfte )?

Geändert von Pkolb (25-09-2003 um 10:18 Uhr)
Mit Zitat antworten
  #40 (permalink)  
Alt 25-09-2003, 13:36
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
41068 Mönchengladbach 0.000095
naja, n bisschen schwund ist immer. die erde ist ja wie gesagt keine scheibe und dadurch werden vermutlich kleine differenzen auftreten.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #41 (permalink)  
Alt 25-09-2003, 18:59
RGummi
 Newbie
Links : Onlinestatus : RGummi ist offline
Registriert seit: Sep 2003
Beiträge: 8
RGummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Selbstkritik !!!!

Was ich da auf die Schnelle gemacht habe war ja ganz nett. Es werden auch die Punkte genau auf die Kugel projeziert aber die Distanz berücksichtigt immer noch keine Erdkrümmung!!!

Ich kümmere mich darum, aber für den Hausgebrauch ist es ok.

Natürlich kommt der eigen PLZ-Bereich zurück. Es werden ja alle mit einer Distanz kleiner 10 km gesucht! Und da gehört das eigen Viertel ja auch dazu. Abweichungen beruhen wohl auf Rundungsfehlern.

R
Mit Zitat antworten
  #42 (permalink)  
Alt 25-09-2003, 19:14
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

naja, den eigenen ort kann man ja ggf rausfiltern ( >0 oder != PLZ)

Aber die korrekte Entfernung wäre nicht schlecht.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #43 (permalink)  
Alt 25-09-2003, 19:54
JohnM
 Junior Member
Links : Onlinestatus : JohnM ist offline
Registriert seit: Aug 2003
Beiträge: 79
JohnM ist zur Zeit noch ein unbeschriebenes Blatt
Question

Sorry, dass ich störe, aber man muss doch nur die PLZ aus der opengeodb holen und dann mit den zugehörigen Daten ein neues GeoObject erstellen, oder liege ich falsch?

PHP-Code:
<?php
require_once("./GeoClass.php");
$geodb = new GeoDB(DB_NAMEDB_USERDB_PASS'geo_locations''ort''breite''laenge''plzs');

$radius 20// aus der Form lesen
$maxHits 50// aus der Form lesen

$myHome = new GeoObject('Königstein im Taunus'50.183338.46667);
// myhome mit einer PLZ-Query festlegen ( vorher aus der Form lesen )

$matches $geodb->findCloseByGeoObjects($myHome$radius$maxHits);
if (
count($matches)) {
    echo 
'Im Umkreis von <b>'.$radius.'</b> km um <b>'.$myHome->name.'</b> wurden folgende Orte gefunden:<br>';
    echo 
'<ul>';
    foreach (
$matches as $object) {
        echo 
'<li>'.$myHome->getDistanceString($object).' ';
        echo 
'('$myHome->getOrientation($objectGEO_ORIENTATION_SHORT).') ';
        echo 
'- <b>'.$object->name.'</b></li>';
    }
    echo 
'</ul>';
}
?>
Probiert das mal.
Mit Zitat antworten
  #44 (permalink)  
Alt 25-09-2003, 20:23
RGummi
 Newbie
Links : Onlinestatus : RGummi ist offline
Registriert seit: Sep 2003
Beiträge: 8
RGummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo

Hab es jetzt korrigiert!

SELECT PLZ, Ort, ".$radius."*ACOS(cos(Theta)*cos(".$theta.")*(sin(Phi)*sin(".$phi.")+cos(Phi)*cos(".$phi."))+sin(Thet a)*sin(".$theta.")) AS Distance FROM ".PLZ_DATA_TABLE." WHERE ".$radius."*ACOS(cos(Theta)*cos(".$theta.")*(sin(Phi)*sin(".$phi.")+cos(Phi)*cos(".$phi."))+sin(Thet a)*sin(".$theta.")) <= ".$umkreis." ORDER BY Distance";

Zu sehen und zu Testen unter



Umkreissuche

1. Wenn man GeoClass.php hat ja. Aber es ging wohl um das Prinzip was dahinter steckt!

2. Ich spare mir halt das foreach und den Traffic von der Datenbank in das script. Frei nach dem Motto was die Datenbank kann (mit einem SQL Aufruf)soll sie auch tun (weil sie es viel schneller kann). Angeblich gibt es SQL Statements die über mehrere DIN A4 Seiten gehn !!!

3. War für mich auch neu als ich mit SQL angefangen hat, aber mir hat ein profi gesagt "man filtert nichts per Hand" wenn da ne leistungsfähige Datenbank werkelt", der zweite Kommentar war dann "Was machst Du bei 10 Millionen Datensätzen" ??? Nun ja die PLZ Datenbank hat nur gute 8000 Einträge.

R

Mit Zitat antworten
  #45 (permalink)  
Alt 25-09-2003, 20:35
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

kann jetzt in der seite keine veränderung sehen ?

zu 1: hattest du erwähnt, auf welchen daten deine db basiert?

zu 2: so ist es auch vollkommen richtig
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:00 Uhr.