mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 00:52 Benutzername: Passwort: Auto-Login

Thema: [PHP/MySQL] Tabellen zusammenführen vom 09.02.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP/MySQL] Tabellen zusammenführen
Seite: 1, 2, 3  Weiter
Autor Nachricht
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht: Männlich
Verfasst Mo 09.02.2009 17:39
Titel

[PHP/MySQL] Tabellen zusammenführen

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Mo 09.02.2009 17:49
Titel

Antworten mit Zitat Zum Seitenanfang

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 *zwinker* vielleicht hilfts dir weiter
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Mo 09.02.2009 17:50
Titel

Antworten mit Zitat Zum Seitenanfang

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 *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht: Männlich
Verfasst Mo 09.02.2009 17:55
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Mo 09.02.2009 17:59
Titel

Antworten mit Zitat Zum Seitenanfang

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...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht: Männlich
Verfasst Di 10.02.2009 16:00
Titel

Antworten mit Zitat Zum Seitenanfang

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 *zwinker* 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 ....
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Di 10.02.2009 16:14
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
escaPe
Threadersteller

Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht: Männlich
Verfasst Di 10.02.2009 17:03
Titel

Antworten mit Zitat Zum Seitenanfang

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... * Ich will nix hören... *
  View user's profile Private Nachricht senden
 
Ä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
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3  Weiter
MGi Foren-Übersicht -> Programmierung


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.