PM gehen auch nur für Stern-User Aber du kannst seine Mailfkt verwenden.
PLZ Geokoordinaten
Einklappen
X
-
Suchst du, brauchst du nicht peinlich Fragen http://www.php-resource.de/forum/sho...ighlight=stern
Kommentar
-
Hallo Leute!
Was mich etwas wundert, ist die Anzahl der Postleitzahlen.
Hier wird mal von 8xxx gesprochen.
Lt. Wikipedia gibt es aber ca. 30.000 Postleitzahlen
http://de.wikipedia.org/wiki/Postleitzahl_(Deutschland)
In meinem Unternehmen haben wir zudem eine Liste mit allen Postleitzahlen, welche ca. 40.000 Einträge umfasst.
Wird bei den 8xxx nicht berücksichtigt, dass es mehre PLZ pro Ort gibt, oder woher kommt dieser niedrige Wert??
Ansonsten noch eine Frage:
Gibt es eine DB mit PLZ, Ort, Länge und Breite?
Mit der GeoDB komm ich nicht wirklich klar, da dort unter der Type "500100000" Postleitzahlen und Orte ausgegeben werden (jeweils die Ort samt allen Postleitzahlen dieser Orte) ich finde aber leider keine Möglichkeit, die Orte mit den Postleitzahlen zu verbinden...
Kommentar
-
Lt. Wikipedia gibt es aber ca. 30.000 Postleitzahlen
Kommentar
-
Noch eine Frage. Problem ist doch, dass mehrere Ort einen PLZ haben koennen.
Gibt es eine Zuordnung zwischen den offziellen Gemeindeschlüsseln der Orte in Deutschland und den Geokoordinaten?
Danke
Kommentar
-
Umkreissuche nach Orten
hallo zusammen,
ich habe mir dieses script auf meine db angepasst und es funktioniert einwandfrei! ;-)
PHP-Code:$ort = $_POST["ORT"];
$umkreis = $_POST["UMKR"];
$Laenge_breite=mysql_query("SELECT laenge, breite FROM geodaten WHERE ort=$ort");
$Laenge_breitearray=mysql_fetch_array($Laenge_breite);
$laenge=$Laenge_breitearray[0] / 180 * M_PI; // Umrechnung von GRAD IN RAD
$breite=$Laenge_breitearray[1]/ 180 * M_PI; // Umrechnung von GRAD IN RAD
$Abfrage1=mysql_query("SELECT ort, plz,(6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*sin(".$breite.")))) AS Distance FROM geodaten WHERE 6367.41*
SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*
cos(".$laenge."))-sin(RADIANS(breite))*sin(".$breite."))) <= ".$umkreis." ORDER BY Distance");
$Ergebnis2=mysql_fetch_array($Abfrage1);
$Ergebnis3=mysql_num_rows($Abfrage1);
echo "<table border=1><tr>";
echo "Anzahl: $Ergebnis3";
for ($i=0;$i<$Ergebnis3;$i++)
{
while ($Ergebnis2=mysql_fetch_array($Abfrage1,MYSQL_ASSOC))
{
echo "<tr><td>";
echo implode("<td>",$Ergebnis2);
echo "</tr>";
}
}
wie kann ich das realisieren? bin für jeden tipp dankbar...
Kommentar
-
http://phpmagazin.de/itr/ausgaben/ps...nguage,de.html
EDIT:
Per E-Mail bin ich vll. bereit diesen Artikel per PDF zu mailenZuletzt geändert von Benny-one; 30.01.2007, 10:05.Sunshine CMS
BannerAdManagement
Borlabs - because we make IT easier
Formulargenerator [color=red]Neu![/color]
Herkunftsstatistik [color=red]Neu![/color]
Kommentar
-
-
Re: Umkreissuche nach Orten
Hallo zusammen,
ich verwende das Script wie nachfolgende beschrieben, nur nicht nach Ort
sondern nach PLZ so wie es in früheren Beiträgen schon beschrieben ist.
Der Script läuft bei mir auch, jedoch wird immer das erste Ergebnis nicht angezeigt, egal welche PLZ ich nehme. Beim ausprinten der Variable:
$Ergebnis3 kommt die Anzahl korrekt, beim $Ergebnis2 fehlt aber immer der erste wert.
Beispiel: Anzahl: 6
$Ergebnis2 zeigt mir dann aber nur 5 Datensätze an. Es ist immer der
erste Datensatz im Ergebnis der nicht angezeigt wird!
Kann mir hier jemand sagen an was das liegt?
Gruß
Andreas
Original geschrieben von CGNer
PHP-Code:[$ort = $_POST["ORT"];
$umkreis = $_POST["UMKR"];
$Laenge_breite=mysql_query("SELECT laenge, breite FROM geodaten WHERE ort=$ort");
$Laenge_breitearray=mysql_fetch_array($Laenge_breite);
$laenge=$Laenge_breitearray[0] / 180 * M_PI; // Umrechnung von GRAD IN RAD
$breite=$Laenge_breitearray[1]/ 180 * M_PI; // Umrechnung von GRAD IN RAD
$Abfrage1=mysql_query("SELECT ort, plz,(6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*sin(".$breite.")))) AS Distance FROM geodaten WHERE 6367.41*
SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*
cos(".$laenge."))-sin(RADIANS(breite))*sin(".$breite."))) <= ".$umkreis." ORDER BY Distance");
$Ergebnis2=mysql_fetch_array($Abfrage1);
$Ergebnis3=mysql_num_rows($Abfrage1);
echo "<table border=1><tr>";
echo "Anzahl: $Ergebnis3";
for ($i=0;$i<$Ergebnis3;$i++)
{
while ($Ergebnis2=mysql_fetch_array($Abfrage1,MYSQL_ASSOC))
{
echo "<tr><td>";
echo implode("<td>",$Ergebnis2);
echo "</tr>";
}
}
Kommentar
-
Original geschrieben von TobiaZ
Wenn ich deinen "Code" richtig verstanden habe, fehlen dir so grundlegende Grundlagen wie
while($row=mysql_fetch...)
// ausgabe der zeile
PHP-Code:
$Ergebnis2=mysql_fetch_array($Abfrage1); // Hier dran liegt der Fehler, denn hier wird bereits der erste Datensatz gelesen,
// und unten in der while Schleife werden dann die restlichen Datensätze ausgelesen. Die Zeile löschen und schon stimmt es.
$Ergebnis3=mysql_num_rows($Abfrage1);
echo "<table border=1><tr>";
echo "Anzahl: $Ergebnis3";
for ($i=0;$i<$Ergebnis3;$i++)
{
while ($Ergebnis2=mysql_fetch_array($Abfrage1,MYSQL_ASSOC))
{
echo "<tr><td>";
echo implode("<td>",$Ergebnis2);
echo "</tr>";
}
}
Kommentar
Kommentar