ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / PHP / MySQL Probleme / Filter und timestamp problem


Seite 1 von 1

korn schrieb am 16.12.2003 um 02:25 Uhr

hallo leute,
ich arbeite an einem project und komme einfach nicht weiter :/
problem1:
ich will all einträge die älter als 7 tage rausfiltern und archive=1 setzen.....
folgendes habe ich bereits:

<? 
include("connect.php"); 
$zeit = time() - '7*24*60*60'; 
$daten =  mysql_query("UPDATE news WHERE datum < '".$zeit."' SET archive='1'"); 
if ($daten){ 
    echo"<center>entries were moved to archive....<a href=\"index.php\">back to menu<a></center>"; 
    exit; 
} 
if (!$daten){ 
    echo"<center>error:".mysql_error()."</center>"; 
    exit; 
} 
mysql_close($con_id); 
?>

dann wäre da noch problemchen numero 2:
wenn ich einen datensatz hinzufügen möchte funzt alles ausser der timestamp....er schreibt mir einfach 000000000 in die column timest(hat den type timestamp)....hier der code:

<? 
include("connect.php"); 
$stamp = time(); 
$datum = date("d/m/Y"); 
$query = mysql_query("INSERT INTO news (datum, program, type, author, timest) VALUES ('$datum', '$program', '$type', '$author','$stamp')"); 
if ($query) 
echo "<center>entry was added succesfully....enjoy..</center>"; 
if(!$query) 
echo "<center>could not enter entry to db: ".mysql_error(). "</center>"; 
mysql_close($con_id); 
?>

ich bin dankbar für jede hilfe und tip ;)
danke im voraus

Jürgen S. schrieb am 16.12.2003 um 17:19 Uhr

Hallo,

zu deinem timestamp - Problem

In der MySQL Doku steht zu dazu
TIMESTAMP[(M)]
Ein Zeitstempel. Der Wertebereich ist '1970-01-01 00:00:00' bis irgendwann im Jahr 2037. MySQL zeigt TIMESTAMP-Werte im YYYYMMDDHHMMSS-, YYMMDDHHMMSS-, YYYYMMDD- oder YYMMDD-Format an, abhängig davon, ob M 14 (oder fehlend), 12, 8 oder 6 ist, gestattet aber, dass Sie TIMESTAMP-Spalten Werte entweder als Zeichenketten oder als Zahlen zuweisen. Eine TIMESTAMP-Spalte ist nützlich, um Datum und Zeit einer INSERT- oder UPDATE-Operation zu speichern, weil sie automatisch auf das Datum und die Zeit der jüngsten Operation gesetzt wird, wenn Sie nicht selbst einen Wert zuweisen. Sie können sie auch auf das aktuelle Datum und die aktuelle Zeit setzen, indem Sie einen NULL-Wert zuweisen. See section 7.2.2 Datums- und Zeit-Typen. Ein TIMESTAMP wird immer mit 4 Bytes gespeichert. Das M-Argument betrifft nur die Anzeige der TIMESTAMP-Spalte. Beachten Sie, dass TIMESTAMP(X)-Spalten, bei denen X 8 oder 14 ist, als Zahlen interpretiert werden, während andere TIMESTAMP(X)-Spalten als Zeichenketten interpretiert werden. Das soll lediglich sicherstellen, dass Sie Tabellen mit diesen Typen verlässlich dumpen und wiederherstellen können! See section 7.2.2.2 Die DATETIME-, DATE- und TIMESTAMP-Typen.

Das erklärt vielleicht dein Problem. MySQL setzt allein einen Zeitstempel und überschreibt dabei offenbar deine Variable.

Gruß

korn schrieb am 16.12.2003 um 18:49 Uhr

hallo jürgen,
danke für deine antwort....ich hab den fehler für den timestamp gefunden.....es war der type in der db (vorher timestamp jetzt int)....
bei der aussortierung bin ich nicht weiter gekommen.....habe verschieden strings versucht zum sortieren....

korn schrieb am 18.12.2003 um 22:44 Uhr

weiss vielleicht einer wie ich problem 1 lösen kann?

gruss und danke

theDon schrieb am 18.12.2003 um 23:07 Uhr

$zeit = time() - 7*24*60*60;

korn schrieb am 19.12.2003 um 00:29 Uhr

hi don,
ich meinte den querystring (so das ich die entries rausfiltern kann und zugleich bei den entries archive=1 setze)

danke

theDon schrieb am 19.12.2003 um 12:27 Uhr

wenn du die anführungszeichen bei der besagten zeile weglässt, dann sollte es funktionieren.

korn schrieb am 20.12.2003 um 02:38 Uhr

jo danke nochmal an ALLE für eure hilfe =)
es läuft jetzt...
syntax für den string war:
UPDATE tablename SET somethinbg WHERE bkbjdkbj

Seite 1 von 1