SEO-Software von Suchmaschinenoptimierung.de

DB Ausgabe nach Datum hervorheben

(hier klicken, um zum Original Thread zu gelangen)
annaloga
Hallo zusammen,

ich tue mich mal wieder schwer eine Lösung zu finden.

Die Einträge meiner DB sollen nach einen bestimmten Datumsschema ausgegeben werden.

Unzwar:
einträge von gerstern sollen farblich rot ausgegeben werden
einträge von vorgestern gelb
einträge von vor 3 tagen grün
einträge älter als max. eine woche lila
einträge älter als max 2 wochen orange
einträge älter als max 4 wochen blau
einträge alle älter als 4 wochen grau

wäre schön wenn jemand rat weiss.


Datum speichern.

php:
1:
<?php $datum date('d.m.y'); ?>



Die Einträge werden wie folgt ausgegeben:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
<?php $sql "SELECT 
            id, b_press, b_date
            FROM $db_table_2
            ORDER BY ".$_GET["orderby"]." ".$strsort."
            LIMIT $start, $eintraege_pro_seite
            ";
/* Asgabe Tabelle oder Fehlermeldung */    
    $result mysql_query($sql)
        OR die("Error: $sql <br>".mysql_error());
        
            
    while($row mysql_fetch_object($result))
               {

        echo"<table>";
            
    while($row mysql_fetch_object($result))
               {
        echo "<tr><td>".$row->id."</td>
                      <td>".$row->b_press."</td>
                      <td>".$row->b_date."</td></tr>";
            }
        echo "</table>"?>


LG anna
KrickelD
Also wenn die Datumsangaben wirklich im Format dd.mm.YYYY gespeichert sind dann kann PHP mit diesen nicht direkt rechnen - ein strtotime() ist notwendig um daraus einen verwertbaren Unix-Timestamp zu generieren.

In der Ausgabe-Schleife kannst du diesen Timestamp dann prüfen. Zum Beispiel speicherst du die Hintergrundfarbe in einer Variable, dessen Inhalt über eine switch-Abfrage entsprechend gefüllt wird.
annaloga
hmmm ....

das datum habe ich mal abgeändert und speichere es nun nur noch mit

php:
1:
<?php time() ?>


Bezüglich der verschiedenen zeiträume habe ich jetzt mal folgenden Code

php:
1:
2:
3:
4:
5:
6:
7:
8:
<?php $dat1 strtotime("now");
$dat2 strtotime("-1 day");
$dat3 strtotime("-2 day");
$dat4 strtotime("-3 day");
$dat5 strtotime("-1 week");
$dat6 strtotime("-2 week");
$dat7 strtotime("-3 week");
$dat8 strtotime("-4 week"); ?>



Ich weiß nun absolut nicht, wie ich daraus was brauchbares zaubern soll.

habe es mal so gemacht:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<?php $i $row->b_date;

if($i <= $dat2)    { 
    echo "nicht älter als 1 tag"; 
}elseif($i $dat2 && $i <= $dat3){
    echo "nicht älter als 2 tage";     
}elseif($i $dat3 && $i <= $dat4){
    echo "nicht älter als 3 tage";     
}elseif($i $dat4 && $i <= $dat5){
    echo "nicht älter als 1 woche";     
}elseif($i $dat5 && $i <= $dat6){
    echo "nicht älter als 2 wochen";     
}elseif($i $dat6 && $i <= $dat7){
    echo "nicht älter als 3 wochen";     
}elseif($i $dat8){
    echo "älter als 4 woche";     
} ?>


habe keine aahnung ob das so richtig ist.
moonsword
mit ner for schleife und nem array kannst du das nochmal schöner und kürzer machen smile

beim programmieren geht es meiner meinung nach wie in der mathematik nicht nur um das lösen eines problems, sondern auch um das finden einer möglichst eleganten lösung Augenzwinkern

das mit der woche gestaltet sich ein bisschen schwierig...aber geht sicher auch:

wie es sicher auch nochmal schöner aussieht, ohne eine forschleife, wenn man nicht an dem wochen-problem tüfteln möchte: speicher das ganze in eine variable ... d.h. den ganzen rattenschwanz an text nicht immer in den einzelnen if's ausgeben, sondern die zahl und woche/tage in variablen speichern und dann ausgeben
annaloga
also ganz ehrlich gesagt .. ich habe keine ahnung wie das gehen soll.

unglücklich
moonsword
so mal als beispiel, grad zusammengeschustert und text ist noch nicht verarbeitet smile
php:
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:
<?php
$array = array( //Angabe: array(int Tage,String farbe)
    array(7*4,'blue'),
    array(7*2,'orange'),
    array(7,'lila'),
    array(3,'green'),
    array(2,'yellow'),
    array(1,'red')
);
$color 'grey'//Wenn es älter als das älteste ist

$date strtotime($argv[1]); #$row->b_date;
$now time();

// Kontrollausgabe auf der Konsole zum testen
print "Date: ".date('H:m:i d.m.Y',$date)."\n";
print "Now: ".date('H:m:i d.m.Y',$now)."\n";

for($i 0$i count($array); $i++) {
    //Immer wenn es den Wert untersteigt, wird der variable $color ein neuer Wert zugewiesen.
    //Differenz now-date ist genau das alter des posts
    if($now-$date <= $array[$i][0]*24*60*60) {
        $color $array[$i][1];
    }
}
print "\nColor: ".$color."\n";
?>
annaloga
ach Du bist ein Schatz smile

das hätt ich ja im Leben nicht so hinbekommen.
Habs jetzt angepasst und probiert ... funktioniert wunderbar *freu freu*

Lieben Dank Dir für die Mühe.

Zitat:
Original von moonsword
so mal als beispiel, grad zusammengeschustert und text ist noch nicht verarbeitet smile
php:
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:
<?php
$array = array( //Angabe: array(int Tage,String farbe)
    array(7*4,'blue'),
    array(7*2,'orange'),
    array(7,'lila'),
    array(3,'green'),
    array(2,'yellow'),
    array(1,'red')
);
$color 'grey'//Wenn es älter als das älteste ist

$date strtotime($argv[1]); #$row->b_date;
$now time();

// Kontrollausgabe auf der Konsole zum testen
print "Date: ".date('H:m:i d.m.Y',$date)."\n";
print "Now: ".date('H:m:i d.m.Y',$now)."\n";

for($i 0$i count($array); $i++) {
    //Immer wenn es den Wert untersteigt, wird der variable $color ein neuer Wert zugewiesen.
    //Differenz now-date ist genau das alter des posts
    if($now-$date <= $array[$i][0]*24*60*60) {
        $color $array[$i][1];
    }
}
print "\nColor: ".$color."\n";
?>
(hier klicken, um zum Original Thread zu gelangen)



Tipp: Ranking-Konzept.de - Das SEO-Forum (Forum rund um die Suchmaschinenoptimierung) der artaxo AG.
Das große Versicherungs ABC von Versicherung.de - mit allen Aspekten der Computerversicherungen!
Fan-Foren.de, die große Community mit Musikforum ist ab sofort online.