| 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! Post your PHP questions here! |
 |
|

10-06-2005, 09:45
|
|
Fubbel
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 6
|
|
Mysql Join Abfrage mit php wieder ausgeben?
Hallo,
Bin jetzt das erste mal hier.
Vielleicht kann mich ja jemand in die richtige Richtung schubsen mit meinem Problem.
Wie es im Topic steht hab 2 Tabellen. Fürs Verständnis werde ich Beispiel Tabellen & Spalten nehmen.
Tabelle1: T1 | Spalten: Name, Pos, V_ID
Tabelle2: T2 | Spalten: V_ID, V_name
Beide Tabellen haben eine ID mit auto_increment. in T2 ist V_ID der Wert der auto_incremented wird. Bei T1 gibt es eine extra Spalter die ich hier nun nicht aufgelistet habe. Die V_ID wurde manuell eingepflegt und soll nun mit der V_ID aus T2 verglichen werden.
Die MySQL Syntax scheint soweit zu stimmen. Zumindest bekomme ich diese über PHPMyAdmin richtig ausgelesen. (sieht mal so aus)
Zum php Code.
PHP-Code:
<?php
include("config.php");
include("dbconnect.php");
$sql = "SELECT T1.Name, T1.Pos, T1.V_ID,
T2.V_ID, T2.V_name,
FROM
T1
LEFT JOIN T2 ON T2.V_ID = T1.V_ID
ORDER BY T1.Name
LIMIT 0, 500";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo "$row[0]";
}
?>
Mein Fehler:
Parse error: parse error, unexpected T_VARIABLE in
Wenn ich das so mit nur einer Tabelle mache funktioniert es. Auch wenn ich mehrere Werte ausgebe.
Da die sql Abfrage an für sich funkioniert denke ich das es an der Ausgabe liegt, bzw daran das ich nun aus 2 Tabellen auslese und dies ein Problem mit der Ausgabe gibt. (BEreits ein Problem beim auffangen der Werte??)
Leider habe ich im Forum und auch im Netz nichts entsprechendes gefunden.
Würde mich freuen wenn mir jemand einen Tip geben kann.
Danke
gruss
Geändert von Fubbel (10-06-2005 um 10:05 Uhr)
|

10-06-2005, 09:46
|
|
MoRtAlAn
PHP Master
|
|
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
|
|
du siehst aber schon an der formatierung des von dir geposteten codes, dass da was nicht stimmt ???
warum wird alles ab hier:
$result = mysql ....
weiterhin als String gefärbt ??
gruss
|

10-06-2005, 10:07
|
|
Fubbel
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 6
|
|
hups
peinlich
ist mir wohl gestern nach dem ganzen probieren passiert. danke
und jetzt geht es natürlich.....
gibt es etwas das man hier verbessern oder ändern sollte?
Also z.B. die Art wie es geschrieben ist oder einfach ein Verbesserungsvorschlag.
Geändert von Fubbel (10-06-2005 um 10:20 Uhr)
|

10-06-2005, 10:29
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Erst mal solltest du den Fehler in deinem ersten Posting nicht editieren, damit nachleser den Thread überhaupt verstehen. Ich sehe in deinem Posting nämlich keinen Fehler.
Und ich würde die $sql Var noch ändern.
PHP-Code:
$sql = "SELECT T1.Name, T1.Pos, T1.V_ID, ".
"T2.V_ID, T2.V_name, ".
"FROM T1 ".
"LEFT JOIN T2 ON T2.V_ID = T1.V_ID ".
"ORDER BY T1.Name ".
"LIMIT 0, 500";
|

10-06-2005, 10:51
|
|
Fubbel
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 6
|
|
hm k sry.
war keine Absicht
Zur Aufklärung. Ich hatte das " am Ende der SQL Abfrage vergessen.
Werde das mal so ändern.
Wobei ich nicht ganz nachvollziehen kann aus welchem Grund das so besser sein soll. Mal abgesehen von der besseren Formatierung.
|

10-06-2005, 10:58
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Auch wenn man da 'nur' mit dem Mysql-Server redet, sollte man doch auf eine ordentliche Schreibweise achten
Bei mysql_fetch_array($result) empfehle ich immer noch mit anzugeben, welchen Ergebnistyp man gerne hätte, also entweder MYSQL_ASSOC oder MYSQL_NUM für ein assoziatives oder numerisches Array, weil ansonsten beide Indexe daherkommen und somit doppelten Speicher belegen. Also:
mysql_fetch_array($result,MYSQL_ASSOC)
oder
mysql_fetch_array($result,MYSQL_NUM)
|

10-06-2005, 10:59
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Warum genau kann ich dir auch nicht sagen.
$sql = " code
code
code"
macht man halt nicht
|

10-06-2005, 12:06
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
|

10-06-2005, 12:10
|
|
ankh
Member
|
|
Registriert seit: May 2005
Beiträge: 304
|
|
weil's beim syntax-highlighting oftmals wie'n Würstchen Eintopf aussieht.
ansonsten fiele mir auch kein Grund ein...
|

10-06-2005, 12:10
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Hab ich doch geschrieben.
Weiss nicht genau.
Ist wahrscheinlich geschmackssache.
Ich kennen niemanden der so Scriptet / Programmiert.
|

10-06-2005, 12:10
|
|
prego
PHP Senior
|
|
Registriert seit: May 2005
Ort: Hey ropp, hinne riwwer unn wirrer zuricke!
Beiträge: 1.602
|
|
Um die vielen Leerzeichen in der Query zu sparen *G*
PHP-Code:
<?php
$sql = "SELECT T1.Name, T1.Pos, T1.V_ID,
T2.V_ID, T2.V_name,
FROM
T1
LEFT JOIN T2 ON T2.V_ID = T1.V_ID
ORDER BY T1.Name
LIMIT 0, 500";
echo $sql."<hr/>";
$sql = "SELECT T1.Name, T1.Pos, T1.V_ID, ".
"T2.V_ID, T2.V_name, ".
"FROM T1 ".
"LEFT JOIN T2 ON T2.V_ID = T1.V_ID ".
"ORDER BY T1.Name ".
"LIMIT 0, 500";
echo $sql;
?>
Seht ihr den Unterschied?
Ausserdem funktioniert dies Query nicht - da darf kein "," nach T2.V_name sein - weil das ja direkt vom FROM gefolgt wird.
Wenn sie funktioniert würde es mich wundern...
__________________
so long, der-p | 72dpi-club
Microsoft IE-Manager Dean Hachamovitch bei der Vorführung des IE7 Beta Preview 2 am 20.3.2006:
"Wir hatten mit IE ganz offensichtlich was verschlafen."
Geändert von prego (10-06-2005 um 12:13 Uhr)
|

10-06-2005, 12:16
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
PHP-Code:
echo "$row[0]";
macht man auch nicht.
|

10-06-2005, 12:19
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Auch wenns funktioniert
|

10-06-2005, 12:22
|
|
prego
PHP Senior
|
|
Registriert seit: May 2005
Ort: Hey ropp, hinne riwwer unn wirrer zuricke!
Beiträge: 1.602
|
|
Hmm, die Maxime "Hauptsache es funktioniert!" oder "Wichtig ist, was hinten rauskommt!" ist ja für den Anfang ok - aber guter Stil beim Programmieren ist schon wichtig.
Dafür gibt es mehrere Gründe:
1. Es erleichtert das Debugging ungemein.
2. Wenn man syntaktisch richtig programmiert gibt es nur in Ausnahmefällen Probleme bei Versionssprüngen (Bsp: php4 -> php5)
3. Der Code ist für andere besser lesbar/verstehbar.
4. Man findet sich später, weil man zb ne Erweiterung machen will, besser drin zurecht und muss sich nicht ständig fragen: "Was hab ich denn hier gemacht?"
5. In den meisten Fällen wird das Script schneller ausgeführt, weil PHP nicht "hintenrum durchs Knie" denken muss.
6...
__________________
so long, der-p | 72dpi-club
Microsoft IE-Manager Dean Hachamovitch bei der Vorführung des IE7 Beta Preview 2 am 20.3.2006:
"Wir hatten mit IE ganz offensichtlich was verschlafen."
|

10-06-2005, 12:46
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
6. Manche IDE's stolpern bei Highlighting/Folding/Completion/Strukturanalyse.
7. ...
|
|
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
|