php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.04.2005, 19:59  
Gast
 
Beiträge: n/a
Standard datum auslesen eintragen

hallo leute ich bin hier schon halb am verweifeln.

ich benutze als datenbank sqlite und habe folgende tabelle:

[INT ID] [VARCHAR(30) name] [DATE datum]

auf der webpage erhalte ich durch ein Eingabefeld eine variable namens $date,
inder ein datum eingetragen wird in der form: 20.12.2005

das ganze splitte ich mit explode in $date[0] $date[1] $date[2]

nun möchte ich das datum in die datenbank eintragen und beim laden einer zusätzlichen seite alle datensätze löschen bei denen das datum der datensätze kleiner ist als das aktuelle(heutige) datum.

sqlite_query($db,"delete from user where datum < ? ");


ich hab wirklich schon überall geschaut wie ich ein datum mit nur einem querybefehl von der datenbank lösche, doch ich bin auf keine lösung gestossen. habe wirklich schon alles versucht. timestamp, date() etc. aber kein erfolg

hoffe ihr könnt mir helfen.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.04.2005, 21:06  
Gast
 
Beiträge: n/a
Standard

kommt schon leute
 
Alt 12.04.2005, 21:27  
Gast
 
Beiträge: n/a
Standard

Was brauchst du?? Wo ist das Problem?

Also ich werd aus deiner Frage nicht schlau!

Kann mir aber vorstellen, dass du nicht weisst, wie du die differnz ordentlich hinbekommst.

du könntest es einfach machen

Meine Idee (Pseudocode)
time()<time()-sec(Tag)


Gruss
Unien
 
Alt 12.04.2005, 21:31  
Erfahrener Benutzer
 
Registriert seit: 30.01.2005
Beiträge: 435
Jojo1
Standard

Zitat:
Zitat von Unien
Was brauchst du?? Wo ist das Problem?

Also ich werd aus deiner Frage nicht schlau!

Kann mir aber vorstellen, dass du nicht weisst, wie du die differnz ordentlich hinbekommst.

du könntest es einfach machen

Meine Idee (Pseudocode)
time()<time()-sec(Tag)

Gruss
Unien
So meinte er es glaub
Aber er meint nicht 24h sondern Heute?

Aber wenn du 24h meinst dann ist das 86400 Sekunden.
Also wie Unien gemeint hat:

time()<time()-86400
Jojo1 ist offline  
Alt 12.04.2005, 21:42  
Gast
 
Beiträge: n/a
Standard

Das ganze könntest du auch so machen.
PHP-Code:
<?php
$DateToDelete
=mktime(0,0,0,date(m),date(d)-1,date(Y));

?>
Den Timestamp von Heute kannst du dir dann denken
 
Alt 12.04.2005, 21:51  
Gast
 
Beiträge: n/a
Standard

ahoi

ich versuch das nochmal zu umschreiben

also ich habe eine tabelle mit einer Datum-spalte.
ich möchte einfach nur einen query ausführen, der mir alle datensätze löscht, bei denen das datum eines datensatzes > 1 Tag ist.

- User - Ip - Datum
Frank 192.168.0.2 12.04.2005
... ... ...
jetzt möchte ich ein query starten, das mir alle Datensätze löscht, bei denen das Datum dieser älter ist als das Heutige Datum.

sqlite_query($db, "Delete from Users where Datum < Heute")

das problem ist das ich einfach nicht auf die lösung komme, wie ich das datum in die Datenbank eintragen soll.

ich habe schon versucht einen timestamp in Datum (datenbank) zu speichern. ging alles wunderbar. aber ich habe es nicht hinbekommen, alle datensätze zu löschen, die älter sind als z.b. einen tag.

es ist so, das ich eine liste auf der HP ausgebe, die mir links mit dazugehörigen datum anzeigt. damit ich das ganze nicht selbst verwalten muss, steht dann in der datenbank das datum, wann welcher eintrag erlischt. beim aufruf einer bestimmten seite werden dann alle datensätze automatisch gelöscht, bei denen das datum in der datenbank abgelaufen ist.

ich habe schon sowas versucht:

$datum1 = "12.02.2005"
...
$datum = 20050212 (vom jahr bis tag == grösste zahl)
sqlite_query($db, "delete from users where datum < 20050212");

wenn ich die datensätze ohne . und mit der reihenfolge Ymd in die DB eintrage und dann den vergleich ziehe dann sollte er alle datensätze eigentlich löschen.
nunja demnach war das nicht so

dann würde ich jedoch noch vor dem problem stehen, das ich den punkt weggelassen habe und es danach viel zu umständlich sein wird, das datum auf der HP wieder auszugeben. zudem müsste ich noch ne funktion schreiben, das überprüft, ob das datum in der form 02.02.2004 oder 2.2.2004 oder vielleicht doch 02.2.04 etc. eingegebenw wurde. denn dann würde wieder die ganze rechnung nicht aufgehen mit:

20040203 (=03.02.2004 HEUTE) - 20040103 (=03.01.2004 Datensatz Datum)

denn wenn der user 02.2.2004 eingibt erhalte ich 2004202 somit

20040202 -2004202 = differenz von 18036000

also geht das schonmal nicht.


alles was ich brauche ist einfach eine möglichkeit, einen datensatz in die datenbank einzutragen und diesen mit dem heutigen datum zu vergleichen und alle datensätze zu löschen, die z.b. älter als 2 wochen sind.

hoffe es ist einigermassen zu verstehen

plz help sitz schon die ganze zeit vor der kiste und überleg wie ich das hinbekommen soll weil ich hier ne homepage für unser studentenwohnheim programmiere
 
Alt 12.04.2005, 22:00  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von 5h4d3
jetzt möchte ich ein query starten, das mir alle Datensätze löscht, bei denen das Datum dieser älter ist als das Heutige Datum.
Daß sqlite den Datentyp DATE(TIME) nicht kennt, hat Dich also nicht dazu veranlaßt, das Datum numerisch (timestamp) abzulegen? Sicher, denn sonst wäre es ja kinderleicht... :wink:
 
Alt 12.04.2005, 22:10  
Gast
 
Beiträge: n/a
Standard

hehe ich gebe zu ich habe das datum mit dieser subtraktion gemacht, weil ich schon keinen anderen ausweg wusste, die differenz zu berechnen.
doch je mehr ich damit angefangen hab, desto schlimmer wurde es

hast du ne ahnung wie ich das mit timestemp zustande bringe,
also dateneintrag, und differnez auslesen ?

denn ich hab wirklich keine ahnung mehr

eigentlich hat der code meiner meinung nach funktioniert aber die datensätze konnten einfach nicht gelöscht werden und als datumeintrag hat er mir, egal wie das timestamp aussah immer das gleiche datum eingetragen

bitte geb mir mal nen beispielcode wie ich das realisieren könnte
 
Alt 12.04.2005, 22:16  
Gast
 
Beiträge: n/a
Standard

Wie zwingt man den User das Datum per Timestamp einzugeben??
*g* lol (Scherz konnt ich mir jetzt net verkneifen)


Du könntest das ganze per Auswahlfelder machen, aber du könntest dich auch mit den RegEx rumschlagen - mit denen du eine Eingabe im Formular kontrollieren kannst.

In beiden Fällen bekommst du dann einen ordentlichen String als Datum. Zur Not kannst du das Datum auch noch mit checkdate überprüfen, ob es denn ein wahres Datum ist.

Dann wandelst du das in nen Timestamp um. Aber wie man immer so schön sagt:"Viele Wege führen nach Rom"; Das ist immer die gleiche Zeit - ob das nun das eine oder andere Format hat.

Bei SqlLite kann ich dir leider nicht helfen - habe ich noch nie benutzt.
 
Alt 12.04.2005, 22:22  
Gast
 
Beiträge: n/a
Standard

hehe
also das ist schon alles erledigt

das datum hab ich schon eingelesen in der form 12.02.2005
eine fehlerroutine hab ich schon eingebaut


$date = explode(".",$date);

if (empty($date)) {
echo "<LI class='details1'>Datum darf nicht leer sein</LI>";
$fehler++;
}
elseif (count($date) != 3) {
echo count($date);
echo "<LI class='details1'>Datum hat falsche Wertangabe</LI>";
$fehler++;
}
elseif (checkdate($date[1],$date[0],$date[2]) == false) {
echo "<LI class='details1'>Datum existiert nicht</LI>";
$fehler++;
}


if (empty($user)) {
echo "<LI class='details1'>User darf nicht leer sein</LI>";
$fehler++;
}





jetzt ist nur noch das problem da:

in timestamp umwandeln. ok das kriege ich noch hin. das eintragen des timestamps auch. doch mit dem befehl:

delete from users where datum < $heute ([heute = timestamp])

löscht er mir die datensätze nicht.

ich versteh einfach net wieso.

ich hab die spalte in der datenbank DATE deklariert.

aber wenn ich den befehl ausführe sind immernoch alle datensätze da :/
 
 


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
NULL-Wert ueber PHP in MySQL-DB eintragen b_i_g_b_o PHP Tipps 2008 6 25.05.2008 01:20
Jahrestag ermitteln cyberholic PHP Tipps 2006 4 17.12.2006 12:50
näherstes datum zum aktuellen datum herausfinden flflfl Datenbanken 7 01.05.2006 16:57
[Erledigt] Beliebiges Datum eintragen Datenbanken 4 21.02.2006 10:28
[Erledigt] Daten aus MYSQL nach Datum filtern Datenbanken 3 19.09.2005 16:09
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
datum in mysql datenbank! Datenbanken 7 09.07.2005 14:43
Ordner auslesen, Ausgabe nach dem Datum sortieren PHP Tipps 2005-2 10 02.07.2005 17:18
Datum auslesen und dann in die Datenbank eintragen Beatbox PHP Tipps 2005 8 01.03.2005 16:53
Datum und Zeit PHP Tipps 2004-2 5 11.12.2004 23:53
Datum einer Datei auslesen php-newbie83 PHP Tipps 2004 2 07.10.2004 18:37
Auslesen von Datum! PHP Tipps 2004 7 08.08.2004 21:53
Wochentag für beliebiges Datum auslesen? PHP Tipps 2004 3 05.08.2004 23:14
[Erledigt] datensätze auslesen vergeleichen und ausgeben (Datum) PHP Tipps 2004 2 20.07.2004 15:28
datum auslesen PHP Tipps 2004 1 22.06.2004 09:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mkdate php sqlite, sqlite datensätze löschen die älter, sqlite 3 date auslesen, sqlite3 fehlerroutine, beliebiges datum mit php umschreiben, sqlite date leer, wochentag 21.02.2006

Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.