art-d-sign
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 11.01.2004, 11:41   #1
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt

Datensatz älter als 30 Tage


Ich möchte gerne feststellen ob ein Datensatz älter ist als 30 Tage, wenn ja soll er mir Template 1 ausgeben ansonsten Template 2.

Das Problem ist:

1. Wenn ich das so mache wie unten gibt mir immer die gleiche Template aus.

2. Anstatt die Templates zu wechseln währe es doch wahrscheinlich einfacher nur die Grafik für Alten und Neuen Beitrag zu wechseln und nur eine Template zu verwenden.

Das Problem ist, wenn ich das mit einer Template versuche schreibt er mir die Grafiken der Reihe nach hin und dann gibt einmal die Template aus aber ohne Daten.

Die Funktion wird per includ in die endsprechende Seite eingebunden.

PHP-Code:
function tutalter()
{
    
    global 
$db;
    

    
    
$db->query("SELECT a.id,a.catid,a.userid,a.topic,a.datum,a.visits,
                       b.name,b.userid, 
                       c.catid,c.beschreibung
                FROM   tut_dokument a INNER JOIN tut_autoren b, tut_kategorie c
                WHERE  a.catid=c.catid ORDER BY datum "
);
                    

    
    
//Daten anzeigen    
    
$alter         "30";             // Legt das Alter des Eintrages fest
    
$date1         date("d.m.Y");     // liefert das Aktuelle Datum
    
$date2         $row['datum'];     // wann der Datensatz angelegt wurde 
    
    
list($day1,$month1,$year1)=explode(".",$date1);
    list(
$day2,$month2,$year2)=explode(".",$date2);
    
$tdate1=mktime(0,0,0,$month1,$day1,$year1);
    
$tdate2=mktime(0,0,0,$month2,$day2,$year2);
    
    
$diffdate     round(($tdate1-$tdate2)/86400);

    while(
$row =  $db->data())
    {
    
    if (
$diffdate<$alter)
    {
      include(
"./inc/vartutnew.php");
      echo (
$template);
    }
    if (
$diffdate>$alter)
    {
      include(
"./inc/vartutold.php");
      echo (
$template);
    }
    
    }


In dieser Datei lege ich die Variablen für die Templates fest:

PHP-Code:

    $dokid             
$row['id'];
    
$catid             $row['catid'];
    
$beschreibung                    $row['beschreibung'];
    
$topic             $row['topic'];
    
$thema            $row['thema'];    
    
$datum             $row['datum'];
    
$userid            $row['userid'];
    
$name            $row['name'];
    
$visits            $row['visits'];
    
$img            ="<img src='images/newtopic.gif' width='16' height='16'>";
    
    
    
$counter "<a href=clicks.php?id=$row[id] target='_blank' class='menü'>$row[topic]</a>";
    
    
//Templateausgabe
             
$template implode("",file("templates/tpl_tutnew.htm"));
            
$template str_replace("{TOPIC}"$topic$template);
            
$template str_replace("{THEMA}"$thema$template);
            
$template str_replace("{DATUM}"$datum$template);
            
$template str_replace("{USER}"$name$template);
            
$template str_replace("{RUBRIK}"$beschreibung$template);
            
$template str_replace("{VISITS}"$visits$template);
            
$template str_replace("{COUNTER}"$counter$template);
            
$template str_replace("{IMG}"$img$template);

?> 
maffy ist offline   Mit Zitat antworten


Alt 11.01.2004, 14:00   #2
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Für Datumsberechnung sollte man auch Felder vom Type DATETIME in der Datenbank nutzen. Dann kann man die Daten direkt in der Abfrage filtern. Schau mal in der Suche... zu dem Thema habe wir schon einiges geschrieben.

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 11.01.2004, 14:19   #3
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
Das Feld Datum ist bei mir als 'Date' Type angelegt.

Das Problem ist nicht das Berechnen des Unterschieds, sondern die richtige Ausgabe der Templates.
maffy ist offline   Mit Zitat antworten
Alt 11.01.2004, 15:14   #4
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
Ich habe jetzt das Feld Datum in DateTime umgeändert.

Und die Select Abfrage habe ich so geändert:
(Das habe ich in der MYSQL Dokumentation gefunden)

PHP-Code:
SELECT FROM tut_dokument WHERE TO_DAYS(NOW()) - TO_DAYS(datum) <= 30
Wenn ich das Datum jedoch Formatiere schreibt er mir ein Datum von 1.1.1970 hin.

PHP-Code:
$datum  date'd.m.Y'$row['datum']); 
maffy ist offline   Mit Zitat antworten
Alt 11.01.2004, 15:35   #5
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Genau das brauchst du ja nicht mehr... du kannst die Formatierung direkt in deinen Query einbauen. Schau mal hier: http://www.traum-projekt.com/forum/s...ht=datum+mysql

Da wurde das schonmal angesprochen.

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 11.01.2004, 16:41   #6
TP-Insider
 
Registriert seit: Jun 2001
Ort: Berlin
deck16 ist auf einem guten Weg
Du kannst auch das Alter direkt per sql auslesen:


SELECT *, TO_DAYS(NOW()) - TO_DAYS(datum) as alter
FROM tut_dokument;

jetzt brauchts Du in php nur noch feld alter < oder > 30 zu überprüfen.
deck16 ist offline   Mit Zitat antworten
Alt 11.01.2004, 16:55   #7
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
Meinst Du so?

PHP-Code:
 function PrintAllTopics() 

    {
        
    global 
$db;
    
    
$db->query("SELECT *, TO_DAYS(NOW()) - TO_DAYS(datum) as alter FROM tut_dokument");                    
 
 
//Daten anzeigen 
    
while($row =  $db->data())
        { 
          if (
$alter <= 30)
          {
         include(
"./inc/vartutnew.php");
        echo (
$template);    
        }
        include(
"./inc/vartutold.php");    
        echo (
$template);
        }
    } 
maffy ist offline   Mit Zitat antworten
Alt 11.01.2004, 17:21   #8
TP-Insider
 
Registriert seit: Jun 2001
Ort: Berlin
deck16 ist auf einem guten Weg
ja, so:

PHP-Code:
SELECT  * , ( TO_DAYSNOW( ) )  - TO_DAYS(datum) ) AS tage FROM tut_dokument 
"AS alter" kann man nicht nehmen, weil alter ein sql begriff ist.

so bekommst du eine zusätzliche Spalte "tage" für jeden Tabellenzeile.
deck16 ist offline   Mit Zitat antworten
Alt 11.01.2004, 18:28   #9
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
Ok das funktioniert so.

Wenn ich das aber jetzt mit der folgenden Abfrage machen will, wie schaut es dann aus?

PHP-Code:
    $db->query("SELECT a.id,a.catid,a.userid,a.topic,a.datum,a.visits,
                       b.name,b.userid, 
                       c.catid,c.beschreibung
                FROM   tut_dokument a INNER JOIN tut_autoren b, tut_kategorie c
                WHERE  a.catid=c.catid ORDER BY datum "
); 
maffy ist offline   Mit Zitat antworten
Alt 11.01.2004, 19:20   #10
TP-Insider
 
Registriert seit: Jun 2001
Ort: Berlin
deck16 ist auf einem guten Weg
denke mal so:


PHP-Code:
$db->query("SELECT a.id,a.catid,a.userid,a.topic,a.datum,a.visits,
                       b.name,b.userid, 
                       c.catid,c.beschreibung,(TO_DAYS(NOW()) - TO_DAYS(a.datum)) AS tage
                FROM   tut_dokument a INNER JOIN tut_autoren b, tut_kategorie c
                WHERE  a.catid=c.catid"
); 
deck16 ist offline   Mit Zitat antworten
Alt 11.01.2004, 19:42   #11
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
bleibt jetzt nur noch das Problem mit der Datums Formatierung.

Funktioniert das so und wo muss ich dass einsetzen?

DATE_FORMAT('a.datum','%d %M %Y')

Im Augenblick gibt er kein Datum aus.

PHP-Code:
SELECT a.id,a.catid,a.userid,a.topic,a.visitsDATE_FORMAT(a.datum,'%d %M %Y'),
                       
b.name,b.userid
                       
c.catid,c.beschreibung,(TO_DAYS(NOW()) - TO_DAYS(a.datum)) AS tage
                FROM   tut_dokument a INNER JOIN  tut_kategorie c
,tut_autoren b 
                WHERE  a
.catid=c.catid 
maffy ist offline   Mit Zitat antworten
Alt 11.01.2004, 19:51   #12
TP-Insider
 
Registriert seit: Jun 2001
Ort: Berlin
deck16 ist auf einem guten Weg
versuchs mit
PHP-Code:
DATE_FORMAT(a.datum,'%d %M %Y') AS das_datum 
deck16 ist offline   Mit Zitat antworten
Alt 12.01.2004, 16:56   #13
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
Wie kann ich dann auf das_datum Zugreifen.

Etwa so: $row['das_datum'] oder wie geht das?
maffy ist offline   Mit Zitat antworten
Alt 12.01.2004, 17:02   #14
TP-Insider
 
Registriert seit: Jun 2001
Ort: Berlin
deck16 ist auf einem guten Weg
ja, genau wie du auf "tage" und alle anderen spaltennamen zugreifst.
deck16 ist offline   Mit Zitat antworten
Alt 12.01.2004, 19:01   #15
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
Danke für die bisherige Hilfe.

Ich habe das ganze jetzt so gemacht, die Berechnung funktioniert und er zeigt mir die Templates für neue und alte Beiträge endsprechend an.

Das Problem hierbei ist, das er mir jetzt die Template anzeigt aber in der Template für die alten Tutorials keine Datensätze drinnen stehen.

Muss ich dafür auch nochmal eine Abfrage machen damit die Daten angezeigt werden?

PHP-Code:
 function PrintAllTopics() 
{
    
    global 
$db;
    
// ######## Tage zwischen Heute und dem Datum an dem der Datensatz angelegt worden ist  ###########

    
$sqltage $db->query(" SELECT *, TO_DAYS(NOW()) - TO_DAYS(datum) AS anztage FROM tut_dokument a ");
    
    
$alter           "30";                              // Legt das Alter des Eintrages fest 
    
$diffdate         = ($sqltage[anztage]-$alter);        // Berechnet den Unterschied                  
    
// ######## Tutorials auslesen ###########    

    
if ($diffdate <= $alter)
    {
     
$auslesen $db->query ("SELECT a.id,a.catid,a.userid,a.topic,a.visits,a.datum,
                       b.name,b.userid, 
                       c.catid,c.beschreibung
                FROM   tut_dokument a INNER JOIN tut_autoren b, tut_kategorie c
                WHERE  a.catid=c.catid "
);
     
     while(
$row =  $db->data()) 
     
     include(
"vartutnew.php");
     echo (
$template);
    } 
     include(
"vartutold.php");
     echo (
$template);
    } 
Test Seite
maffy ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Datensatz älter als 30 Tage Datensatz älter als 30 Tage
« Daten aus dem Tool von TX3.de in die HP | Einfügen von Bildern mit Datumsänderung »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:26 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.