PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

01-09-2006, 16:47
|
weltins
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 6
|
|
Addition von zwei Variablen, bzw. einer Variablen und eriner Zahl
Hallo zusammen,
ich komme nicht mehr weiter. Mag evtl. trivial sein, aber ich bekomme es nicht hin.
Ich habe eine Datenbank in der Städte mit den jeweiligen Koordinaten abgelegt sind. Diese will ich in HTML mit einer Grafik kennzeichnen. Funktioniert auch soweit hervorragend.
Jetzt ist es aber so, dass ich bei absoluter Positionierung die Städte mit negativem Werten auf der x-Achse nicht sehen kann. Also habe ich eine weitere Tabell "faktor" angelegt, wo im feld "gesamt" der Umrechnungfaktor "600" abgelegt ist. Beim Versuch diese beiden Werte zu addieren, scheitere ich.
So fuktioniert es noch:
PHP-Code:
<?php
$link = mysql_connect("localhost","user","passwort");
mysql_select_db("datenbank",$link);
$query = "select * from stadt, faktor order by x_koord";
$x = x_koord; <----- um den geht es
$y = y_koord;
$result = mysql_query($query,$link);
$num = mysql_numrows($result);
for ($i = 0; $i < $num; $i++)
{
$row = mysql_fetch_array($result);
printf("<div style=\"position:absolute; left:$row[$x]px; top:$row[$y]px; \">
<img src=\"city.gif\" alt=\"$row[stadtname]\" title = \"$row[stadtname]\"></div>");
}
?>
Ausgabe in HTML:
<div style="position:absolute; left: -580px; top:33px; "> ....und so weiter.
So geht es nicht mehr:
PHP-Code:
<?php
$link = mysql_connect("localhost","user","passwort");
mysql_select_db("datenbank",$link);
$query = "select * from stadt, faktor order by x_koord";
$x = x_koord + gesamt; <---------- der hier
$y = y_koord;
$result = mysql_query($query,$link);
$num = mysql_numrows($result);
for ($i = 0; $i < $num; $i++)
{
$row = mysql_fetch_array($result);
printf("<div style=\"position:absolute; left:$row[$x]px; top:$row[$y]px; \">
<img src=\"city.gif\" alt=\"$row[stadtname]\" title = \"$row[stadtname]\"></div>");
}
?>
Ausgabe in HTML:
<div style="position:absolute; left: Sant Tönispx; top:33px; ">
Auch z.B. $x = x_koord + 600 hat nicht zum Ziel geführt.
Wäre toll, wenn mir jemand auf die Sprünge helfen könnte.
Gruß,
weltins
Geändert von weltins (01-09-2006 um 19:13 Uhr)
|

01-09-2006, 18:43
|
Boron
Registrierter Benutzer
|
|
Registriert seit: Aug 2004
Beiträge: 191
|
|
1. Brich mal bitte deinen Code um. Mag nicht horizontal scrollen.
2.
Zitat:
$query = "select * from stadt, faktor order by x_koord";
$x = x_koord; <----- um den geht es
|
wo kommt denn das x_koord auf einmal her? oder müssen wir das nicht wissen? am besten du schreibst statt * die felder rein, die du benutzt!
3. muss es nicht mysql_num_rows heißen?
4. geht es nur um die addition von zwei werten oder was ist deine frage? da soll kein negativer wert bei rauskommen?
dann nimm doch den betrag davon.
if($x <= 0)
{
$x = $x * -1;
}
|

01-09-2006, 19:12
|
weltins
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 6
|
|
So...habe den Code mal in der Hälfte umgebrochen.
zu 2)
Ich selektiere zwei Tabellen - stadt und faktor. in stadt ist der Stadtname und die Koordinaten x_koord und y_koord abgelegt. In faktor ist gesamt mit dem Wert 600 abgelegt.
zu 3)
nein
zu 4)
Ich benötige nicht einfach den positiven Wert. Ich benötige alle Koordinaten so wie sie sind. Da aber negative Koordinaten nicht angezeigt werden, soll das Koordinatensystem um 600 px nach rechts verschoben werden.
Also jeder x_koord-Wert + 600
|

01-09-2006, 19:29
|
3DMax
PHP Senior
|
|
Registriert seit: Jan 2004
Beiträge: 1.916
|
|
Zitat:
Original geschrieben von weltins zu 2)
Ich selektiere zwei Tabellen - stadt und faktor. in stadt ist der Stadtname und die Koordinaten x_koord und y_koord abgelegt.
|
x_koord ist eine konstante, wo ist die zuweisung?
wenn es eine variable sein soll, fehlt ein $ und ebenfalls die frage, wo ist die zuweisung?
setze error_reporting(E_ALL); an den anfang des scriptes.
|

02-09-2006, 00:08
|
weltins
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 6
|
|
Hallo 3DMax,
ich bin mir nicht sicher, was Du meinst...
Ja, x_koord ist eine Konstante. Ich wüsste nicht, wie ich sie anders zuweisen sollte, als ich es getan habe. Da mein Script durchaus funktionsfähig ist, zeigt mein erstes Beispiel.
Beispiel:
Das Table stadt enthält folgende Werte....
name x_koord y_koord
eins -580 33
zwei 77 217
Wie an meiner HTML-Ausgabe von Script 1 fuktioniert auch alles wie gewünscht:
<div style="position:absolute; left:-580px; top:33px; ">
<div style="position:absolute; left:77px; top:217px; ">
Ich verstehe nicht, warum das hinterfragt wird...es funktioniert!!!!!
Das einzige, was ich möchte ist, dass
<div style="position:absolute; left: -580px; top:33px; ">
umgesetzt wird in
<div style="position:absolute; left: 20px; top:33px; ">
Also 600px addiert werden.
Dieses habe ich in Script 2 versucht und bin fehlgeschlagen, da die Addition der beiden Werte (x_koord + gesamt) nicht funktioniert.
Auch ein setzen von error_reporting(E_ALL) ist hier nicht zielführend (siehe beide angeführte Ergebnisse), da das Script nicht auf Fehler läuft, sondern lediglich nicht das gewünschte Ergebnis liefert.
Ich denke eher, dass ich nicht richtig addiere, bzw. die Felder nicht richtig definiert habe.
Das, was funktioniert zu hinterfragen, hilft mir leider nicht weiter
|

02-09-2006, 00:23
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
PHP-Code:
echo "html kram" . ((int)($row[$x]) + 600) . "wieder html";
wenn das läuft, kannst du "600" durch deine konstanten ersetzen.
|

02-09-2006, 00:56
|
weltins
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 6
|
|
Hallo penizillin,
ich glaube, ich brauche jetzt wirklich einmal Dummy-Hilfe.
Ich habe zwei Dinge ausprobiert:
(mit "")
PHP-Code:
printf("<div style=\"position:absolute; left:"((int)($row[$x]") + 600)px; top:$row[$y]px; \">
<img src=\"city.gif\" alt=\"$row[stadtname]\" title = \"$row[stadtname]\" ></div>");
Ergebnis:
Parse error: parse error, unexpected '
(ohne "")
<div style="position:absolute; left  (int)(-580) + 600)px; top:33px; ">
|

02-09-2006, 01:05
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
|

02-09-2006, 01:38
|
weltins
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 6
|
|
Hallo penizillin,
vielen Dank für den Verweis. Ich konnte dort aber mehr über die Verwendung von richtig oder falsch lernen, als eine korrekte Kodierung für meinen speziellen Fall finden.
Da Du da offensichtlich etwas mehr Ahnung hast.... wäre es möglich, mir die entsprechende Passage editiert zurückzugeben? Danach erkenne ich wahrscheinlich auch meinen Fehler besser.
Wäre toll!
Gruß,
weltins
|

02-09-2006, 01:52
|
gleiwitz19
Banned
|
|
Registriert seit: Jul 2006
Ort: Banned by wahsaga
Beiträge: 76
|
|
PHP-Code:
<?php
$link = mysql_connect("localhost","user","passwort");
mysql_select_db("datenbank",$link);
$query = "select * from stadt, faktor order by x_koord";
$x = x_koord + gesamt; <---------- der hier
$y = y_koord;
$result = mysql_query($query,$link);
$num = mysql_numrows($result);
for ($i = 0; $i < $num; $i++)
{
$row = mysql_fetch_array($result);
printf("<div style=\"position:absolute; left:$row[$x]px; top:$row[$y]px; \">
<img src=\"city.gif\" alt=\"$row[stadtname]\" title = \"$row[stadtname]\"></div>");
}
?>
das obige Original ist doch ein Unsinn, nach allen menschlichen Faktoren müsste es doch so heissen:
PHP-Code:
<?php
$link = mysql_connect("localhost","user","passwort");
mysql_select_db("datenbank",$link);
$query = "select * from stadt,faktor order by x_koord";
$result = mysql_query($query,$link) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
$x = $row['x_koord'] + $row['gesamt'];
$y = $row['y_koord'];
printf("<div style=\"position:absolute; left:$x px; top:$y px; \">
<img src=\"city.gif\" alt=\"{$row['stadtname']}\" title=\"{$row['stadtname']}\"></div>");
}
?>
C'est tout, fini!
EDIT: den Kram mit $gesamt noch nachgelesen und gefixt
und das title = auf title= gebessert.
Geändert von gleiwitz19 (02-09-2006 um 02:07 Uhr)
|

02-09-2006, 10:10
|
gleiwitz19
Banned
|
|
Registriert seit: Jul 2006
Ort: Banned by wahsaga
Beiträge: 76
|
|
addition von zwei Spalten
Variante Rechnung in mysql:
PHP-Code:
<?php
$link = mysql_connect("localhost","user","passwort");
mysql_select_db("datenbank",$link);
$query = "select x_koord+gesamt as x, y_koord as y, stadtname
from stadt,faktor order by x_koord";
$result = mysql_query($query,$link) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
printf("<div style=\"position:absolute; left:$_row[x]px; top:$_row[y]px; \">
<img src=\"city.gif\" alt=\"$row[stadtname]\" title=\"$row[stadtname]\"></div>");
}
?>
PS @überbreite: in der Vorschau hat es mehr Platz, weil die Poster-Spalte fehlt.
|

04-09-2006, 16:55
|
weltins
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 6
|
|
Hallo gleiwitz19,
vielen Dank. Variante 1 hat super fuktioniert.
Ich werde auch Variante 2 ausprobieren, ich glaube, die ist für meine Zwecke besser geeignet.
Gruß,
weltins
|

04-09-2006, 18:06
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.105
|
|
Re: Addition von zwei Variablen, bzw. einer Variablen und eriner Zahl
Dürfte ich noch einmal deine Fehler aufzeigen?
PHP-Code:
$x = x_koord;
$y = y_koord;
Du greifst nicht auf Daten aus der Datenbank zu, weil du den Query schließlich erst weiter unten abschickst! PHP wird denken, du willst die Konstanten x_koord und y_koord verwenden, müsstest auch dementsprechend eigentlich eine Fehlermeldung erhalten!
Da PHP diese Konstanten nicht findet, verwendet er die Namen x_koord und y_koord als Zeichenkette, in $x steht also 'x_koord' und in $y steht 'y_koord'!
PHP-Code:
$num = mysql_numrows($result);
die Funktion mysql_numrows sollte eher diese hier sein!
PHP-Code:
(...) $row[$x] (...) $row[$y] (...)
$row ist ein Array mit den Indizes 'x_koord', 'y_koord' und 'stadtname'. Du greifst jetzt durch $x und $y, in denen ja, wie oben erklärt, 'x_koord' und 'y_koord' steht, eher zufällig auf die richtigen Arrayelemente zu. Richtig wäre natürlich
PHP-Code:
(...) $row['x_koord'] (...) $row['y_koord'] (...)
PHP-Code:
(...) $row[stadtname] (...)
Wieder gleicher Fehler wie oben, du versuchst mit einer Konstanten zu arbeiten, die es nicht gibt! Und darum wandelt PHP die (nicht bekannte) Konstante in den String 'stadtname' um, so dass du wieder, eher zufällig, auf das richtige Arrayelement zugreifst!!
Die Kritik an deinem Quellcode war also durchaus berechtigt!! Die Lösung hat man dir aber ja bereits schon gegeben...
|

04-09-2006, 18:20
|
gleiwitz19
Banned
|
|
Registriert seit: Jul 2006
Ort: Banned by wahsaga
Beiträge: 76
|
|
Zitat:
Original geschrieben von weltins
Hallo gleiwitz19,
vielen Dank. Variante 1 hat super fuktioniert.
Ich werde auch Variante 2 ausprobieren, ich glaube, die ist für meine Zwecke besser geeignet.
Gruß,
weltins
|
Den Dank nehm ich gerne entgegen. Gruss.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
Aktuelle PHP Scripte
Homepagetools 2022
Kostenloses Gästebuch und Homepagetools für die eigene Homepage.
Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.
29.04.2022
freepler | Kategorie: PHP/ Gaestebuch
|
SF-Shopsystem V1.0
Hier haben wir ein einzigartiges Shopsystem in PHP.
Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich.
Ausführliche Beschreibung weiter unten.
28.04.2022
Speedcrawler | Kategorie: PHP/ Shops
|
Anzeigen Markt mit PayPal Bezahl System
Anzeigen Markt Script
mit PayPal Bezahl System
Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal
seine Anzeigen zu schalten, je nach seinem Guthaben.
27.04.2022
Webace_de | Kategorie: PHP/ Anzeigenmarkt
|
Alle PHP Scripte anzeigen
|