Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
neueste Inhalte aus Datenbank [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
neueste Inhalte aus Datenbank


 
Claus
16-07-2002, 11:41 
 
...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

 
Titus
16-07-2002, 12:38 
 
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()');

 
tj99de
16-07-2002, 12:52 
 
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

 
Titus
16-07-2002, 13:52 
 
letztes Besuchsdatum merken, beim nächsten Besuch in $letzterbesuch ablegen und

mysql_query ("select * from Datum where Datum>='$letzterbesuch'");

 
tj99de
16-07-2002, 14:06 
 
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.

 
Claus
16-07-2002, 14:12 
 
...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.

 
tj99de
16-07-2002, 14:34 
 
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

 
Claus
16-07-2002, 15:00 
 
...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

 
Claus
16-07-2002, 15:32 
 
...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."&nbsp;&nbsp;".$text."<br>";
}
}
}
}
?>

 
Titus
16-07-2002, 23:16 
 
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

 
tj99de
17-07-2002, 11:55 
 
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:

 
Titus
18-07-2002, 12:10 
 
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.

 
Titus
18-07-2002, 16:00 
 
hmm ... stimmt *zuOracleschiel*
dann vielleicht doch eher '0001' ff
Hat die gleichen Vorteile wie die erste Idee
und vermeidet den Nachteil mit der Null

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:29 Uhr.