Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht:
|
Verfasst Mo 09.02.2009 17:39
Titel [PHP/MySQL] Tabellen zusammenführen |
|
|
also folgendes Problem:
ich möchte zwei (später auch mehr) Tabellen die mit Inhalt gefüllt sind in einem array zusammenführen, sodass ich bei einer Ausgabe diese 2 Tabellen die dann nur noch eine sein sollten sortieren kann. (z.b.: nach Uhrzeit).
folgend sieht mein Code aus:
Code: | <?php
include("login.php");
// Verbindung mit Datenbank aufbauen
$timestamp = time();
$datum_heute = date("d.m.Y",$timestamp);
$wochentag_heute = date("l",$timestamp);
$uhrzeit_jetzt = date("His",$timestamp);
$uhrzeit_5std = $uhrzeit_jetzt+50000;
// $datum_heute = heutiges Datum
// $wochentag_heute = heutiger Wochentag in englisch
// $uhrzeit_jetzt = jetzige Uhrzeit (Angabe : HHMMSS)
// $uhrzeit_5std = jetzige Uhrzeit plus 5 Stunden
switch($wochentag_heute)
{case "Monday": $wochentag_heute = "Montag"; break;
case "Tuesday": $wochentag_heute = "Dienstag"; break;
case "Wednesday": $wochentag_heute = "Mittwoch"; break;
case "Thursday": $wochentag_heute = "Donnerstag"; break;
case "Friday": $wochentag_heute = "Freitag"; break;
case "Saturday": $wochentag_heute = "Samstag"; break;
case "Sunday": $wochentag_heute = "Sontag"; break;}
// $wochentag_heute wird in deutsch gewandelt
$abfrage = "SELECT Wochentag, TIME_FORMAT(Uhrzeit,'%k:%i') AS Uhrzeit_formatiert, Name, Text FROM mfs WHERE Wochentag LIKE '$wochentag_heute' AND Uhrzeit > '$uhrzeit_jetzt' AND Uhrzeit < '$uhrzeit_5std'";
// Medical Fitness-Studio Abfrage: Heutiger Wochentag von Uhrzeit jetzt bis Uhrzeit plus 5 Stunden
$abfrage = "SELECT Wochentag, TIME_FORMAT(Uhrzeit,'%k:%i') AS Uhrzeit_formatiert, Name FROM aqua WHERE Wochentag LIKE '$wochentag_heute'";
$ergebnis = mysql_query($abfrage);
echo $ergebnis;
echo "<table>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td>",$row->Uhrzeit_formatiert,"</td>";
echo "<td>",$row->Wochentag,"</td>";
echo "<td>",$row->Name,"</td>";
echo "<td><a href='",$row->Text,"'>weitere Informationen...</a></td></tr>";
}
echo "</table>";
mysql_free_result($ergebnis);
mysql_close(); |
Das Problem ist das das array nicht weiter gefüllt wird sondern ersetzt.
Hab im Internet bissel gestöbert und den UNION Befehl gefunden der ab MySQL 4.0
laufen soll. Ich hab 5.1 aber folgender Code hat nicht funktioniert:
Code: | [...]
$abfrage = "SELECT * FROM mfs UNION SELECT * FROM aqua";
$ergebnis = mysql_query($abfrage);
echo $ergebnis;
echo "<table>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td>",$row->Uhrzeit,"</td></tr>";
}
echo "</table>";
[...] |
Meine Frage ist nun wieso die Ausgabe mit dem UNION Befehl nicht einwandfrei
läuft??
hat jemand einen Tipp?
für Hilfe wäre ich sehr dankbar
escaPe
|
|
|
|
|
choise
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Mo 09.02.2009 17:49
Titel
|
|
|
kann mir dein code nun nich ganz durchlesen weil ich leider weg muss, aber wenn man mit MySQL Tabellen zusammenführt, denke ich als erstes an JOINS.
bye, bis morgen vielleicht hilfts dir weiter
|
|
|
|
|
Anzeige
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
Verfasst Mo 09.02.2009 17:50
Titel
|
|
|
wenn du irgendwas von arrays willst, solltest du auch irgendwo eines verwenden! ich befürchte, du hast nicht wirklich den plan, von dem, was du da machst...
schau dir den begriff array noch mal genauer an.
für deine query wäre ein blick in einen einfachen join vielleicht nützlich: http://dev.mysql.com/doc/refman/5.1/de/left-join-optimization.html
Code: |
SELECT * FROM t1, t2 WHERE t2.column2=5 AND t1.column1=t2.column1;
|
aber das erst, nachdem du weißt, was du tust
|
|
|
|
|
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht:
|
Verfasst Mo 09.02.2009 17:55
Titel
|
|
|
ich weis serwohl was ein array ist.
Eine Variable gefüllt mit mehreren Werten die man mit
Variable[x]
ansprechen kann. Ich dachte das $ergebnis ein array wäre, da wie gesagt diese variable mit
mehreren Werten gefüllt ist.
Aber ich lass mich gerne eines besseren belehren. Ist ja noch kein Meister vom Himmel gefallen
mfG escaPe
|
|
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
Verfasst Mo 09.02.2009 17:59
Titel
|
|
|
nein, $ergebnis ist eine "resource". die du dann anhand von mysql_fetch_object() in ein objekt schreibst. für ein array
gibts dann mysql_fetch_array()
letzteres ist das was du suchst. und wenn du dann noch eine schlaue query baust, kannst du alles in einem rutsch in
ein array haun...
|
|
|
|
|
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht:
|
Verfasst Di 10.02.2009 16:00
Titel
|
|
|
choise hat geschrieben: | kann mir dein code nun nich ganz durchlesen weil ich leider weg muss, aber wenn man mit MySQL Tabellen zusammenführt, denke ich als erstes an JOINS.
bye, bis morgen vielleicht hilfts dir weiter |
Bei Join kann ich doch nur Datensätze von 2 Tabellen in 1 Spalte zusammenfügen.
Aber ich möchte die Datensätze untereinander ausgeben.
So soll z.B.. folgendes mit zwei Datensätzen passieren:
Datensatz 1 Tabelle 1: 19:00, basteln, www.basteln.de
Datensatz 1 Tabelle 2: 18:00, hobby, www.hobby.de
ergeben sich nach einer Abfrage wie folgt:
1 19:00 basteln www.basteln.de
2 18:00 hobby www.hobby.de
nicht
1 19:00 basteln www.basteln.de 18:00 hobby www.hobby.de
2 ....
|
|
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
Verfasst Di 10.02.2009 16:14
Titel
|
|
|
escaPe hat geschrieben: |
Bei Join kann ich doch nur Datensätze von 2 Tabellen in 1 Spalte zusammenfügen.
|
da ich den rest deiner einwände nicht verstehe nur kurz folgendes:
a) nein. es wird nichts zusammengefügt. jedes ergebnis steht da wo du es hinschreibst... solltest du zwei mal "uhrzeit" in den tabellen haben, kannste es ja mit "AS" in "UHRZEIT_AUS_TABELLE_1" o.ä. formatieren...
beschäftige dich ein wenig mit der funktionalität des "einfachen" joins, den ich dir da geschickt habe, dann sollte es klarer werden.
|
|
|
|
|
escaPe
Threadersteller
Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht:
|
Verfasst Di 10.02.2009 17:03
Titel
|
|
|
pixelpapst303 hat geschrieben: | escaPe hat geschrieben: |
Bei Join kann ich doch nur Datensätze von 2 Tabellen in 1 Spalte zusammenfügen.
|
da ich den rest deiner einwände nicht verstehe nur kurz folgendes:
a) nein. es wird nichts zusammengefügt. jedes ergebnis steht da wo du es hinschreibst... solltest du zwei mal "uhrzeit" in den tabellen haben, kannste es ja mit "AS" in "UHRZEIT_AUS_TABELLE_1" o.ä. formatieren...
beschäftige dich ein wenig mit der funktionalität des "einfachen" joins, den ich dir da geschickt habe, dann sollte es klarer werden. |
welcher ist den der "einfache join" ???
Inner join, left join, right join, straight join?
Ich hab folgendes probiert:
Code: |
$abfrage = "SELECT aqua.Uhrzeit, mfs.Uhrzeit FROM aqua LEFT JOIN mfs";
$ergebnis = mysql_query($abfrage);
echo "<table>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td>",$row->aqua.Uhrzeit,"</td>";
echo "<td></td></tr>";
}
echo "</table>"; |
leider kein Ergebnis...
hat nichts ausgespuckt.
ausserdem versteh ich nicht wie du das mit dem "AS Uhrzeit aus tabelle 1" meinst
sieht es dann folgender masen aus:
Code: |
$abfrage = "SELECT aqua.Uhrzeit, mfs.Uhrzeit AS aqua.Uhrzeit FROM aqua LEFT JOIN mfs";
|
oder so:
Code: |
$abfrage = "SELECT Uhrzeit, mfs.Uhrzeit AS Uhrzeit FROM aqua LEFT JOIN mfs";
|
bin grad bischen am hängen...
|
|
|
|
|
|
|
|
Ähnliche Themen |
[PHP&MySQL] Insert in 2 Tabellen
[PHP/MySQL] Tabellen automatisch wiederherstellen?
Problem mit mysql, Verknüpfung von Tabellen
[PHP-MySQL] IF in SELECT, Tabellen Auswahl
[MySQL] Join über 3 und mehr Tabellen …
[MySQL] Komme mir Aufbau der Tabellen nicht weiter
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|