[PHP] Fehler beim rechnen mit Variablen aus einer DB

halo4@SETI[CB]

Lt. Junior Grade
Registriert
Jan. 2002
Beiträge
489
Hi also ich habe folgendes problem, ich habe eine MySQL datenbank mit Koordinaten, der Y wert muss aber noch umgerechnet werden.

wenn ich die Koordinaten direkt aus der DB nehme klappt alles, X und Y haben die gleichen werte wie in der DB, aber wenn ich ich die Y variable bearbeite, dann haben alle Y Werte den gleichen wert.

PHP:

$query = "SELECT sxkoord, sykoord FROM standorte";
$result = mysql_query($query);

$datax = array();
$datay = array();
$maxy = 485;

while($row = mysql_fetch_assoc($result))
{
$datax[] =& $row['sxkoord'];
//$datay[] =& $row['sykoord'];

$tempykoord = $row['sykoord'] ;
$temp = $maxy - $tempykoord ;
//$datay[] =& $maxy - $row['sykoord'];
$datay[] =& $temp;
}


-------

ich weiss nicht was daran falsch sein soll, bin ratlos.....

Danke schon mal für die Hilfe.
 
PHP:
$query = "SELECT sxkoord, sykoord FROM standorte";
$result = mysql_query($query) or die(mysql_error());

$datax = array();
$datay = array();
$maxy = 485;

while($row = mysql_fetch_assoc($result))
{
$datax[] = $row['sxkoord'];
$datay[] = $maxy - $row['sykoord'] ;
}

#lass dir die daten mal ausgeben, um zu checken, ob alles geklappt hat

echo "<pre>";
print_r($datax);
echo "<br />";
print_r($datay);
echo "</pre>";
 
ausgabe ja, aber werte sind müll:

orginal werte in DB (x,y):

221 217
136 75
108 425
152 164
62 93
467 318

werte aus browser:

Array
(
[0] => 221
[1] => 136
[2] => 108
[3] => 152
[4] => 62
[5] => 467
)
Array
(
[0] => -217
[1] => -75
[2] => -425
[3] => -164
[4] => -93
[5] => -318
)



-----


ka warum die werte so sind, dürfte eigentlich nicht so sein.
 
Was soll die Variable $maxy bewirken? Maximaler Wert für Y-Werte? Sollen die Achsen skaliert werden?
 
ja ja ist die maximal Y koordinate von dem bild den jpgraph hat den NUllpunkt oben links, die koordinaten sind aber eigentlich von unten links (0,0) ausgehent. Naja wenn nicht muss ich die in der DB über SQL ändern.


Mein noch größeres :evillol: Problem ist, ich will auf die Punkte (also an diese stelle ) auf dem Bild ein Link setzen, hat jemand eine Idee wie, bin schon am verzweifeln. mit dieser MAP geschichte von HTML geht es nicht, da punkte hinzukommen und wegfallen können. :freak:
 
Dann sags doch gleich:

Mach dir eine div mit genau der größe deines Bilds. Das Bild setzt du als Hintergrundbild für diese Div ein.
Dann fügst du in diese Div ein Bild ein - und weist den Bildern eine neue Position über CSS zu.
Das sieht dann ungefähr so aus:

HTML:
<div style="background-image:url(...)">
  <div style="position: relative; left: Xpx; top: Ypx; display:inline;">
    <a href="..."><img src="..."  /></a>
  </div>
  <div style="position: relative; left: Xpx; top: Ypx; display:inline;">
    <a href="..."><img src="..."  /></a>
  </div>
</div>

Die Rechnung von Crunchtime müsste hierfür auch passen:
$datax[] = $row['sxkoord'];
$datay[] = $maxy - $row['sykoord'] ;
 
Zuletzt bearbeitet:
ok, danke schonmal.

und das kann ich auchjetzt einfach in eine Schleife rein packen?

Edit:

also das Problem ist ja, das ich die Links aus der Datenbank auslese und das es erst z.b. 10 Punkte mit Link sind und später dann 100 Punkte / Links oder so, weil immer welche zu kommen oder wegfallen aus der DB. ich habe mal ein Sreenshot von der Karte gemacht wo die Punkte bereits mit JPGraph gezeichnet wurden, an diese stellen soll dann der Link auch immer sein.

Hier dann auch mal die ganze PHP seite von mir.

PHP:
<?php
include ("src/jpgraph.php");
include ("src/jpgraph_scatter.php");
  $dbHost = "localhost";
  $dbUser = "root";
  $dbPass = "";
  $dbName = "test";
  $connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
  $selectDB = @mysql_select_db($dbName, $connect) or die("Konnte die Datenbank <b>$dbName</b> nicht auswählen!");

DEFINE('WORLDMAP','europe.jpg');

function markCallback($y,$x) {
	return array(false,false,false,'green',0.8);
}

$query  = "SELECT sxkoord, sykoord FROM standorte";
$result = mysql_query($query);
$datax = array();
$datay = array();

while($row = mysql_fetch_assoc($result))
{
$datax[] =& $row['sxkoord'];
$datay[] =& $row['sykoord'];
} 

$graph = new Graph(600,485);
$graph->img->SetMargin(0,0,0,0);			
$graph->SetScale('linlin',0,485,0,600);		
$graph->xaxis->Hide();
$graph->yaxis->Hide();
$graph->SetBackgroundImage(WORLDMAP,BGIMG_FILLPLOT);
$sp = new ScatterPlot($datay,$datax);
$sp->mark->SetType(MARK_IMG_PUSHPIN,'blue',0.6);
$sp->mark->SetCallbackYX('markCallback');
$graph->Add($sp);    
$graph->Stroke();
?>
 

Anhänge

  • map.JPG
    map.JPG
    33,4 KB · Aufrufe: 274
Zuletzt bearbeitet:
Mir ist nich ganz klar, wo dein Problem liegt :(
 
PHP:
<map name="bla">
<?php
while($row = mysql_fetch_assoc($result)) 
{ 
$datax[] =& $row['sxkoord']; 
$datay[] =& $row['sykoord']; 


echo '<area shape="rect" coords="'.($row['sxkoord'] - 2).','.($row['sykoord'] - 2).','.($row['sxkoord'] + 2).','.($row['sykoord'] + 2).'" href="'.$link.'" alt="" title="werk unna" />';


echo '<br />'


} 
?>
</map>
<img ... usemap="bla" />
http://www.faqs.org/docs/htmltut/images/images_famsupp_220.html


EDIT:


also ein bekannter meinte ungfähr so soll es gehen, aber es will einfach nicht:



PHP:
echo '<map name="europe">';

while($row = mysql_fetch_assoc($result))
{
$datax[] =& $row['sxkoord'];
$datay[] =& $row['sykoord'];

echo '<area shape="rect" coords="'.($row['sxkoord'] - 2).','.($row['sykoord'] - 2).','.($row['sxkoord'] + 2).','.($row['sykoord'] + 2).'" href="'.$row['link'].'" alt="" title="'.$row['name'].'" />';
echo '<br />';
}
echo '</map>'; 

echo '<img src="europe.jpg" usemap="europe" alt="Europa Karte" title="Europa Karte" />';
 
Zuletzt bearbeitet:
Zurück
Oben