Bekomme den Inhalt des Joins nicht angezeigt...

dornw

Neuer Benutzer
Beiträge
2
Hallo,

folgendes Script habe ich geschrieben komme aber nicht mehr weiter - will die Händlernummern aus einer Relation anzeigen lassen ... aber meine möglichkeiten bringen mich nicht weiter.... hier der code.....

So wie es jetzt ist funktionierts - aber ich bekomme es nicht hin aus der 2ten Tabelle die Händlernummern anzeigen zu lassen..... :-(

<br><br>
// Testversion Haendlersuche im Umkreis ohne Relation zum Handler - Nur Postleitzahlbereich
<br><br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
Postleitzahl:<input type="text" name="plz" value="<?php echo $_GET['plz']; ?>" maxlength="5"/><br /><br />
Umkreis :<input type="text" name="radius" value="<?php echo $_GET['radius']; ?>" maxlength="5"/><br /><br />
<input type="submit" name="suche" value="Suche" />
</form>


<?php


if(isset($_GET['suche']))
{
$plz = $_GET['plz'];
$radius = $_GET['radius'];

$conn = mysql_connect('rdbms.strato.de', 'U3092231', '*******') or die('db connect error: ' . mysql_error());
mysql_select_db('DB3092231', $conn) or die('Datenbank kann nicht ausgewählt werden');

$sqlstring = "SELECT * FROM plz_de LEFT JOIN haendler_num ON (haendler_num.Plz = plz_de.plz)where '".$plz."'= plz_de.plz and haendler_num.haendlernr >= 1";

$result = mysql_query($sqlstring);

$row = mysql_fetch_assoc($result);

$lng = $row["longitude"] / 180 * M_PI;
$lat = $row["latitude"] / 180 * M_PI;


mysql_free_result($result);

$sqlstring2 = "SELECT DISTINCT plz_de.plz,plz_de.ort,plz_de.ortsteil,(6367.41*SQRT(2*(1-cos(RADIANS(plz_de.latitude))*cos(".$lat.")*(sin(RADIANS(plz_de.longitude))*sin(".$lng.")+cos(RADIANS(plz_de.longitude))*cos(".$lng."))-sin(RADIANS(plz_de.latitude))* sin(".$lat.")))) AS Distance FROM plz_de AS plz_de WHERE (6367.41*SQRT(2*(1-cos(RADIANS(plz_de.latitude))*cos(".$lat.")*(sin(RADIANS(plz_de.longitude))*sin(".$lng.")+cos(RADIANS(plz_de.longitude))*cos(".$lng."))-sin(RADIANS(plz_de.latitude))*sin(".$lat."))) <= '".$radius."')ORDER BY Distance";

$result = mysql_query($sqlstring2) or die('query failed: ' . mysql_error());
$str = "<table width=\"600\" border=\"4\" cellspacing=\"1\" cellpadding=\"4\">";
$str .= "<tr>";
$str .= "<th>PLZ</th>";
$str .= "<th>Ort</th>";
$str .= "<th>Ortsteil</th>";
$str .= "<th>Entfernung</th>";
$str .= "<th>Haendlernr</th>";
$str .= "</tr>";

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$str .= "<tr><td>".$row["plz"]."</td><td>".$row["ort"]."</td><td>".$row["ortsteil"]."</td><td>".round($row['Distance'],2)."km</td><td>".$row["Haendlernr"]."</td></tr>";
}

$str .= "</table>";

mysql_free_result($result);
mysql_close($conn);
echo $str;
}
?>
 
Werbung:
Werbung:
Kein Problem.

Btw.: bei größeren Datenmengen wird das mit MySQL von der Performance her grottig. Würdest Du gleich PostgreSQL / PostGIS verwenden könntest Du eine indexbasierte Umkreissuche einsetzen (Du machst ja eine Umkreissuche, soweit ich das sehe), das wäre selbst bei Milliarden von Datensätzen dann noch schnell (Millisekundenbereich).
 
Zurück
Oben