ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
263
263
EMPFEHLEN
-
02.04.08 18:08 #1
- Registriert seit
- Mar 2008
- Beiträge
- 29
Guten Abend,
Ich bins wieder einmal mehr,
Ich versuche momentan eine Liste mit den letzten Beiträgen auf der Seite zu machen,
dazu habe ich testweise 2 Tabellen genommen, News und gaestebuch.
(Um noch anzufügen mit einer Tabelle, geht es irgendwie ohne Probleme)
Nun möchte ich aber aus der ersten Tabelle und der 2. Tabelle die letzten Beiträge auslesen, danach sollen sie nach Datum sortiert werden.
Dies bereitet mir allerdings Sorgen
Dabei habe ich dass hier versucht
:
Code :1 2 3 4 5 6 7 8 9 10 11
$sql = "SELECT Datum, Titel, Inhalt FROM News INNER JOIN gaestebuch WHERE DATE_ADD(Datum, INTERVAL 3 DAY) >= NOW() ORDER BY Datum DESC LIMIT 2";
Datum ist in beiden Tabellen vorhanden
Titel ist in der News Tabelle vorhanden und Inhalt in der gaestebuch Tabelle.
Mit der where Abfrage möchte ich den Zeitintervall begrenzen und mit Datum Desc halt nach Datum sortieren.
Das funktioniert bei einer Tabelle auch prima, bei 2 Tabellen überhaupt nicht.
Mir fehlt überhaupt die Idee wie ich das umsetzen könnte, damit dies geht.
Später im Script gebe ich das ganze wie folgt aus: (bei einer Tabelle)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
$result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { $a = $row['Datum']; $try = strtotime("$a"); $ez = time(); $auso = $ez - $try; $nun = $auso / 86400; echo " <div class=\"akl\">\n"; echo "<a href=\"index.php?section=news\">"; echo "» "; echo "</a>"; echo $row['Titel']; echo " </div>\n"; echo " <div class=\"akr\">\n"; echo " ‹ "; echo ceil($nun); echo " Tagen"; echo " </div>\n"; echo " <div class=\"clearen\">\n"; echo " </div>\n"; } } else { echo " <div class=\"Aktuell\">\n"; echo "» Keine News vorhanden\n"; echo " </div>\n"; }
Um hier noch anzufügen, die Daten sind in beiden Tabellen zB so"2008-03-22 14:30:59" gespeichert. Also kein Timestamp. Ich kam erst später auf die Idee, dass Timestamps wahrscheindlich sinnvoller gewesen wären.
Vielleicht hat jemand von euch schonmal sowas gemacht und hätte eine Umsetzungsidee.
Von der Mysql abfrage bis zum Ausgeben der beiden verschiedenen Datensätze.
Grüsse und danke falls sich jemand die Mühe macht.
-
Ich hab jetzt mal nur die ersten Zeilen deines Post gelesen (für mehr bin ich jetzt zu müde
).
Du machst einen Inner Join - was vollkommen falsch ist.
Die Tabellen haben ja null gemeinsam.
Was du brauchst ist eine UNION-Abfrage, bei der du darauf achten musst, dass beide Teil-Abfragen die selben Spalten (Anzahl und Art) zurückgeben.Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!
-
02.04.08 18:31 #3
- Registriert seit
- Mar 2008
- Beiträge
- 29
ah ups, danke
Ich kenn mich in dem Bereich leider nicht so aus, noch eine andere Frage hätte ich,
ich möchte ja Inhalt eigentlich gleich behandeln wie den Titel, wie kann ich sowas realisieren? Darf ich dem den Alias Titel geben?
-
Deine beiden Teilselects müssen nicht die gleichen Spaltennamen haben, sondern nur gleiche Spaltenanzahl und Spaltenart.
Inhalt und Titel solltest du also problemlos kombinieren können
Code sql:1 2 3
SELECT spalte1, spalte2, titel FROM tabelle1 UNION SELECT spalte4, spalte5, inhalt FROM tabelle2
Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!
-
02.04.08 18:46 #5
- Registriert seit
- Mar 2008
- Beiträge
- 29
ah das funktioniert ja wunderbar, ich hab mir das vieeel komplizierter vorgestellt.
Tausend-Dank
-
02.04.08 19:12 #6
- Registriert seit
- Mar 2008
- Beiträge
- 29
Ich hätte jetzt doch nochmal eine Frage, ist es nach/mit Union möglich später mit einer If Abfrage herauszufinden von welcher Tabelle nun der Datensatz stammt?
Soweit ich mitbekommen habe, ist es ja nun so, dass er die praktisch verschmilzt.
Ich möchte nämlich noch die Kategorie angeben in welcher der Post war, bzw eine Link dafür hinzufügen.
Grüsse
-
02.04.08 19:16 #7
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
auch das kannst Du mit in das Statement packen:
Code sql:1 2 3
SELECT spalte1, spalte2, titel, 'tabelle1' AS kategorie FROM tabelle1 UNION SELECT spalte4, spalte5, inhalt, 'tabelle2' AS kategorie FROM tabelle2
LG
-
02.04.08 19:57 #8
- Registriert seit
- Mar 2008
- Beiträge
- 29
vielen dank, auch das hat super funktioniert und ich habs nun endlich geschafft

PHP-Code:<?php
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
$sql = "
SELECT Datum, Titel, 'news' AS kategorie FROM News
WHERE DATE_ADD(Datum, INTERVAL 3 DAY) >= NOW()
union
SELECT Datum, Inhalt, 'gb' AS kategorie FROM gaestebuch
WHERE DATE_ADD(Datum, INTERVAL 3 DAY) >= NOW()
ORDER BY
Datum DESC
LIMIT 2";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
while($row = mysql_fetch_assoc($result)) {
if(strlen($row['Titel']) >= 20) {
$row['Titel'] = wordwrap($row['Titel'],20);
$row['Titel'] = substr($row['Titel'],0,strpos($row['Titel'],"\n")).' ';
}
$a = $row['Datum'];
$try = strtotime("$a");
$ez = time();
$auso = $ez - $try;
$nun = $auso / 86400;
echo " <div class=\"akl\">\n";
if($row['kategorie'] == "news")
{
echo "<a href=\"index.php?section=news\">";
echo "» ";
echo "news.";
}
elseif($row['kategorie'] == "gb")
{
echo "<a href=\"index.php?section=gb\">";
echo "» ";
echo "book.";
}
else
{
echo "unbk.";
}
echo "</a>";
echo $row['Titel'];
echo " </div>\n";
echo " <div class=\"akr\">\n";
echo " ‹ ";
echo ceil($nun);
echo " Tagen";
echo " </div>\n";
echo " <div class=\"clearen\">\n";
echo " </div>\n";
}
} else {
echo " <div class=\"Aktuell\">\n";
echo "» Keine News vorhanden\n";
echo " </div>\n";
}
?>
Ähnliche Themen
-
Problem bei einem JOIN zw. zwei Tabellen, (Daten aus beiden Tabellen auslesen)
Von CookieBuster im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 05.04.10, 22:20 -
Tabellen verknüpft - aber wie mit $row[] Daten auslesen?
Von Dueddi im Forum PHPAntworten: 10Letzter Beitrag: 06.05.05, 23:59 -
Daten aus 2 Tabellen auslesen
Von nobaschwa im Forum PHPAntworten: 5Letzter Beitrag: 03.12.04, 12:02 -
Daten aus 2 Access-Tabellen auslesen
Von andrine im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 30.11.04, 13:47 -
Daten aus 2 MySQL-Tabellen auslesen
Von supercat1510 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 24.05.03, 20:53





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren