Archiv verlassen und diese Seite im Standarddesign anzeigen : neueste Inhalte aus Datenbank
...erst mal Danke an Titus.
War ja recht einfach. (Schäm..)
Aber jetzt häng ich doch wieder.
In der Tabelle gibt es drei Spalten:
Seite, Datum und Inhalt. Seite 2 oder 5 und entsprechender Inhalt können also mehrmals vorkommen, jeweils mit dem neuen Änderungsdatum.
Wie schaffe ich es, dass ich alle Seiten mit nur dem aktuellsten, also letzten Änderungsdatum anzeigen kann?
Mit "select seite, inhalt from brochure order by datum desc limit 0,1" wird natürlich nur die am zuletzt geänderte Seite angezeigt.
Bestimmt nicht so schwierig. Wenn mans weiß.
Danke
für alle mit dem aktuellsten Datum:
$q = mysql_query ('select distinct Datum from Tabelle order by Datum desc limit 0,1');
$letztes = mysql_fetch_result($q,0,'Datum');
$q = mysql_query("select * from Tabelle where Datum='$letztes'");
für alle von heute:
$q = mysql_query('select * from Tabelle where Datum=now()');
Da hab ich dann auch gleich mal ne generelle Frage zu, was ist, wenn die einzelnen Seiten an unterschiedlichen Tagen geändert wurden und ich von jeder Seite die neuste Version haben will?
Also Seite 3 wurde heute geändert, Seite 5 gestern und der Rest am Sonntag und ich will jetzt von jeder Seite die neueste Version haben.
Wie geht das?
cu tj99de
letztes Besuchsdatum merken, beim nächsten Besuch in $letzterbesuch ablegen und
mysql_query ("select * from Datum where Datum>='$letzterbesuch'");
Dann bekomme ich aber nur die Seiten, die nach meinem letzten Besuch geändert wurden.
Ich will aber immer die neuste Version aller Seiten haben, egal wann die geändert wurden. Es ist ja durchaus möglich, daß ich an einer Seite 3 Monate lang nix mache, weil der Teil schon fertig ist und ich nur täglich an den anderen Seiten arbeite.
...genau das meinte ich ja:
an unterschiedlichen Tagen geändert.
Und dann von allen den neuesten Stand aufrufen.
Klappt immer noch nicht.
Mit "$letztes = mysql_fetch_result($q,0,'Datum');" stimmt was nicht.
Bei der von Titus genannten Methode werden nur alle die Seiten ausgegeben, bei denen die letzte Änderungen mit der spätesten vorgenommenen Änderung übereinstimmt. Daher entfallen alle die Seiten, die davor geändert wurden.
Beispiel:
Seite 3 wurde gestern geändert
Seite 4 wird heute geändert
Die Abfrage liefert nur Seite 4, aber nicht Seite 3
Das muß also irgentwie anders gehen.
Man könnte ne Schleife machen, in der für jede Seite die letzte Version ausgelesen wird, aber das muß auch einfacher und vor allem schneller gehen.
cu tj99de
...und wenn man alle Seitenzahlen in einen Array schreibt:
$seite=array(1,2,3...);
Dann mittels einer Schleife alle Seitenzahlen abfrägt und da wiederrum nach der neuesten Version sucht und diese mit Inhalt ausgibt.
Täume nichts als Träume
...na also. So geht's:
<?
if(@$anzeigen) {
include ("connect.php3");
$s=array(1,2,3);
while(list($k, $a) = each($s)) {
$result = mysql_db_query("bericht","select seite, text from brochure where seite='$a' order by datum desc limit 0,1");
$num=mysql_num_rows($result);
if($num>0){
for ($i=0; $i<$num; $i++)
{
$seite=mysql_result($result, $i, "seite");
$text=mysql_result($result, $i, "text");
echo $seite." ".$text."<br>";
}
}
}
}
?>
oder mit nur einer Query und einer Schleife:$seite = false;
$q = mysql_db_query("bericht","select seite, text from brochure
order by seite, datum desc");
while ($x = mysql_fetch_assoc($q))
{
if ($x['seite']!==$seite)
{
$seite = $x['seite'];
var_dump($x); // oder ne andere Methode, um $x auszugeben
}
}
Es werden zwar alle ausgelesen, aber von jeder seite jeweils nur die neueste ausgegeben
Anzahl der Seiten: select count(distinct seite) from brochure
Danke Titus!
An so eine Lösung hatte ich gedacht, hatte nur keine Ahnung, wie man die Abfrage basteln muß.
andnotexists 17-07-2002, 14:47 Hoi zäme
Ich löse dies etwas anders.
Bei meiner DB sind immer folgende Felder vorhanden:
NRVERHI = Nummer Version History
Eintrag 9999 aktuellste Version
Eintrag 0001 erste Version History
Eintrag 0002 zweite Version History
usw.
STAKT00 = Status aktiv
Eintrag 2 = aktiv
Eintrag 8 = gelöscht
also zum Beistpiel:
NRVERHI STAKT00
9999 2 --aktiv
0001 8 --erster Hystoryeintrag
0002 8 --zweiter Hystoryeintrag
0003 8 --dritter Hystoryeintrag
Damit erreiche ich dass ich im Query schreiben kann:
and NRVERHI = 9999 and STAKT00 = 2
und erhalte immer die neuste Version.
:huep:
Die Idee ist auch nicht schlecht.
Allerdings würde ich die aktuelle Version '0000' und nicht '9999' nennen, dann geht das mit der Verschiebung beim Aktualisieren nämlich einfacher:
update brochure set version=verson+1 where seite='$seite';
insert into brochure (seite, version, inhalt) values ('$seite', '0000', '$inhalt');
und das "update ... set version='0001' where version='9999'" entfällt
andnotexists 18-07-2002, 14:18 Deine Idee ist auch nicht schlecht.
Ich habe den Wert '9999' genommen, weil der Wert '0000' ja von anderen Programmen oder Programmierer als nichts interpretiert werden könnte.
Als Sicherheit nehme ich desshalb das in Kauf.
hmm ... stimmt *zuOracleschiel*
dann vielleicht doch eher '0001' ff
Hat die gleichen Vorteile wie die erste Idee
und vermeidet den Nachteil mit der Null
|
-
- |