You are not logged in.

wcf.regNote.message

~Zero~

Beginner

  • "~Zero~" started this thread

Posts: 14

  • Send private message

1

Sunday, November 27th 2005, 10:08pm

[Problem] Zeit vergleich,..

Hi, ich will hiervon 0000-00-00 00:00:00 überprüfen wenn schon mehr als eine Stunde vergangen ist (und natürlich auch ob es immer noch der gleiche Tag ist).
Ich weis nur nicht wie ich das anstellen soll...

Ich bin für jede Hilfe dankbar.

PS: Die Frage gab es bestimmt schon aber da ich sie nicht gefunden frag ich nochmal:
Gibt es eine Möglichkeit das auto_increment in der datenbank von der letzten aktuellen zahl einsetzt?

This post has been edited 1 times, last edit by "~Zero~" (Nov 27th 2005, 10:14pm)


badmoon2049

Intermediate

Posts: 188

Location: Leipzig

Occupation: Azubi

  • Send private message

2

Sunday, November 27th 2005, 10:53pm

Quoted

Gibt es eine Möglichkeit das auto_increment in der datenbank von der letzten aktuellen zahl einsetzt?


die frage versteh ich net ?

zu deiner ersten frage werden die daten so gespeichert 0000-00-00 00:00:00 oder als timestamp wenn du sie so 0000-00-00 00:00:00 speicherst warum nimmst du dann nicht die explode() funktion ??

bsp.)

PHP Source code

1
2
3
4
5
6
7
8
9
$timestring '0000-00-00 00:00:00';

// arrTime[0] <-- Datum komplett
// arrTime[1] <-- Zeit komplett
$arrTime explode(" "$timestring);

// wenn du jetzt noch sekunden oder tag haben willst musst du $arrTime[]
// auch noch "exploden" und dann halt vergleichen
// ich hoff ich konnt dir ein bissle helfen

~Zero~

Beginner

  • "~Zero~" started this thread

Posts: 14

  • Send private message

3

Sunday, November 27th 2005, 11:00pm

Ok danke.

Zum 2ten wenn man auto_increment benutzt werden datensätze immer mit der id erstellt die davor bei der der letzten erstellung benutzt wurde.

Ich würd gern wissen ob man da irgendwas machen kann damit die zb ID´s durchgehend sind..

ich hoffe das ist verständlich^^

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

4

Monday, November 28th 2005, 8:45am

und ich würde mir aus den ganzen einzeldaten dann mit mktime nen timestamp machen. Da bekommst du dann zwei Zahlen für jede Zeit.
Ziehst du nu die Kleinere von der Grösseren ab, hast du den zeitlichen Abstand in sekunden von den zwei Zeiten. dann nur noch schauen ob es größer 60 (eine Minute) oder grösser 60*60*24 (ein Tag) ist und schon weißt du ganz genau bescheid.

Du musst allerdings vorher schon deinen Zeitstring parsen.
Ungefähr so:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function parseTimeStr($str// Format vom String: '0000-00-00 00:00:00'
{
    if($str == "") return false;
    $tmp explode(" "$str);
    if(!is_array($tmp) || count($tmp) != 2) return false;
    $datum explode("-"$str);
    if(!is_array($datum) || count($datum) != 3) return false;
    $zeit explode(":"$str);
    if(!is_array($zeit) || count($zeit) != 3) return false;
    $retval = Array();
    $retval['tag'] = $datum[2];
    $retval['monat'] = $datum[1];
    $retval['jahr'] = $datum[0];
    $retval['stunden'] = $zeit[0];
    $retval['minuten'] = $zeit[1];
    $retval['sekunden'] = $zeit[2];

    return $retval;
}


So und so kannst du dir dann die zwei Timestamps machen:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
$time1 '2005-11-28 07:35:51';
$time2 '2005-11-28 07:36:45';

$time1 parseTimeStr($time1);
$timestamp1 mktime($time1['stunden'],$time1['minuten'],$time1['sekunden'],$time1['monat'],$time1['tag'],$time1['jahr']);

$time2 parseTimeStr($time2);
$timestamp2 mktime($time2['stunden'],$time2['minuten'],$time2['sekunden'],$time2['monat'],$time2['tag'],$time2['jahr']);

echo $timestamp2 $timestamp1 60 "länger als eine Minute<br />" "kürzer als eine Minute";

echo $timestamp2 $timestamp1 60*60*24 "länger als ein Tag<br />" "kürzer als ein Tag";

In meinem Beispiel kommt dann kürzer als eine Minute und kürzer als ein Tag raus, da die Timestamps genau um 54 sek. unterschiedlich sind.

Ciao Ephraim

[EDIT]
Es gibt noch eine zweite Lösung für die parseTimeStr Funktion.
Die erste Basiert auf explode die zweite kann man mit Regex lösen:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function parseTimeStr($str// Format vom String: '0000-00-00 00:00:00'
{
    $match = Array();
    if(!preg_match("/(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2}):(\d{2})/"$str$match)) return false;
    if(!is_array($match) || count($match) != 7) return false// 7 deshalb weil er alle werte die im Regex
// in Klammern stehen als einen Wert vom Array bekommt und
// einmal den Kompletten ge-match-ten String als Wert [0] hat.
    $retval = Array();
    $retval['tag'] = $match[3];
    $retval['monat'] = $datum[2];
    $retval['jahr'] = $datum[1];
    $retval['stunden'] = $zeit[4];
    $retval['minuten'] = $zeit[5];
    $retval['sekunden'] = $zeit[6];

    return $retval;
}
[/EDIT]

~Zero~

Beginner

  • "~Zero~" started this thread

Posts: 14

  • Send private message

5

Monday, November 28th 2005, 5:39pm

@Ephraim danke du hast mir mit deinem Beispiel sehr weiter geholfen

This post has been edited 2 times, last edit by "~Zero~" (Nov 28th 2005, 7:05pm)


Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

6

Tuesday, November 29th 2005, 9:21am

Immer wieder gerne :)

Ach und zu dem Autoincrement... naja du kannst jedesmal nach dem Löschen alle Datensätze auslesen die Tabelle leeren (vielleicht sogar neu anlegen) und dann alles wieder reinschreiben. Dann hast du die ID's in reihenfolge ...
aber wofür .... am besten du machst für sowas einen neuen thread auf. hmmm im SQL würde ich sagen.

Ciao Ephraim

wcf.user.socialbookmarks.titel