php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 10-02-2009, 13:49
Lavingstar
 Member
Links : Onlinestatus : Lavingstar ist offline
Registriert seit: Oct 2004
Beiträge: 212
Lavingstar ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datum vergleichen funzt nicht richtig

Hallo,
ich habe ein Problem bei meiner Suchen-Funktion hinsichtlich der Datumsuche.

Wenn ich z.b. als Datum den 31.03.2009 drin habe und suche nach >= 30.03.2009 findet er den Eintrag einwandfrei
- suche ich jedoch nach <=01.04.2009 kann er den Eintrag vom 31.03.2009 nicht finden (findet dafür aber bspw. Einträge vom 01.03.2009)

Grundproblem: Das "Datum" ist ein 'String' - kein 'date', die Einträge werden jedoch über 'strtotime' angezeigt bzw. ausgegeben:
PHP-Code:
{echo date("d.m.Y"strtotime($row["a_dat"]));} 
Gesucht und verglichen werden sie mit folgendem Code:
PHP-Code:
if($a_dat1!="" && $a_dat2!="" )
{
$where .= "and a_dat >= 'a_dat1' and a_dat <= 'a_dat2'"; } 
Frage: Kann/Muss ich in dem o.g. suchen/vergleichen-Code das "strtotime" irgendwie mit reinbringen,
sodass er keine 2 Strings vergleicht sondern 2 Datums/Daten/Datümmer?
Mit Zitat antworten
  #2 (permalink)  
Alt 10-02-2009, 13:53
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Datum vergleichen funzt nicht richtig

Zitat:
Original geschrieben von Lavingstar
Grundproblem: Das "Datum" ist ein 'String'
Wenn du das Problem bereits erkannt hast - wieso vermeidest du es dann nicht?
Zitat:
- kein 'date',
Was soll "ein date" sein?
Sofern du nicht das Paarungsritual meinst, druecke dich bitte genauer aus.


Zitat:
die Einträge werden jedoch über 'strtotime' angezeigt bzw. ausgegeben
Warum?

Zitat:
Frage: Kann/Muss ich in dem o.g. suchen/vergleichen-Code das "strtotime" irgendwie mit reinbringen,
sodass er keine 2 Strings vergleicht sondern 2 Datums/Daten/Datümmer?
Antwort: Vergleiche Daten wann immer moeglich in ihrer urspruenglichen Form, und nicht in irgendeiner "formatierten".
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 10-02-2009, 14:04
Lavingstar
 Member
Links : Onlinestatus : Lavingstar ist offline
Registriert seit: Oct 2004
Beiträge: 212
Lavingstar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@wahsaga: Ich merke an deinen Antworten (auch in anderen Posts) dass du heute wohl nicht gut drauf bist. Ich möchte dich daher bitten entweder konstruktiv und vor allem objektiv auf meine Fragen zu antworten, oder es sein zu lassen. Mich für meine bisherigen Programmierungen zu rechtfertigen mache ich normalerweise nicht, aber der Verständlichkeit wegen hier die Antwort zu deinen Fragen:

1. Weil ich weder die Variablen noch die Felder der bestehenden Datenbank umschreiben und damit noch mehr Probleme erzeugen möchte

2. Date => http://www.php.net/date (ich wäre sehr überrascht wenn diese Frage ernst gemeint war - ich schliesse sie mal zurück auf deine negative Konditionierung)

3. Damit ich sie eingeben kann als tt.mm.jjjj und ausgeben kann als tt.mm.jj sofern dies erwünscht ist

4. Lässt sich hier aber leider nicht anders machen, da das Datum "string" ist und ich 2 Strings schlecht mit <>= vergleichen kann. Darum möchte ich sie als Datum in der date()-Funktion miteinander vergleichen
Mit Zitat antworten
  #4 (permalink)  
Alt 10-02-2009, 14:06
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein, er hat einfach recht.
Datum als varchar statt als date in der Datenbank zu speichern ist einfach nur dämlich und wird dir noch viel mehr Probleme machen als das hier.

Spätestens wenn auf einmal die Performanz suckt...
Mit Zitat antworten
  #5 (permalink)  
Alt 10-02-2009, 14:07
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
date("Ymd"
dann hast du Zahlenwerte die du mit größer/kleiner überprüfen kannst. ist zwar pfuschig, aber du willst es ja nicht anders

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #6 (permalink)  
Alt 10-02-2009, 14:09
Lavingstar
 Member
Links : Onlinestatus : Lavingstar ist offline
Registriert seit: Oct 2004
Beiträge: 212
Lavingstar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Nein, er hat einfach recht.
Datum als varchar statt als date in der Datenbank zu speichern ist einfach nur dämlich und wird dir noch viel mehr Probleme machen als das hier.
Hmm ... reicht es denn wenn ich einfach das Feld "a_dat" in der Datenbank von VARCHAR auf DATE umstelle? Oder muss ich dazu noch im PHP-Code irgendwas ändern bei den Variablen?
Mit Zitat antworten
  #7 (permalink)  
Alt 10-02-2009, 14:16
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Queries müssen geändert werden, die müssen ungefähr so aussehen:
INSERT INTO tabelle (Datum) VALUES("2008-02-31");

Beim Auslesen musst du das Datum umformatieren, das geht z.B. so
SELECT *, UNIX_TIMESTAMP(Datum) Datum FROM tabelle;
und dann
PHP-Code:
echo date("d.m.Y"$row["Datum"]); 
oder auch ohne UNIX_TIMESTAMP im Query, dafür noch ein strtotime() um $row["Datum"] drumherum.
Mit Zitat antworten
  #8 (permalink)  
Alt 10-02-2009, 14:19
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Lavingstar
@wahsaga: Ich merke an deinen Antworten (auch in anderen Posts) dass du heute wohl nicht gut drauf bist. Ich möchte dich daher bitten entweder konstruktiv und vor allem objektiv auf meine Fragen zu antworten, oder es sein zu lassen.
Ich antworte so, wie ich es fuer richtig halte.
Und wenn jemand Unsinn schreibt oder Unsinn programmiert, dann weise ich ihn darauf hin - ob's ihm nun passt, oder nicht.

Zitat:
Mich für meine bisherigen Programmierungen zu rechtfertigen mache ich normalerweise nicht
Jeder Programmierer sollte sein Vorgehen in dem Sinne "rechtfertigen" koennen, dass er jeweils darlegen kann, warum eine bestimmte Variante gewaehlt wurde, warum gewisse Nachteile dieser ggf. in Kauf genommen wurden, etc.
Zitat:
1. Weil ich weder die Variablen noch die Felder der bestehenden Datenbank umschreiben und damit noch mehr Probleme erzeugen möchte
Symptome zu bekaempfen, statt Ursachen abzustellen, war schon immer bloedsinnig.

Zitat:
2. Date => http://www.php.net/date (ich wäre sehr überrascht wenn diese Frage ernst gemeint war - ich schliesse sie mal zurück auf deine negative Konditionierung)
Natuerlich war die Frage ernst gemeint.

Was du jetzt verlinkt hast, ist eine PHP-Funktion, mit der sich ein Datum auf die unterschiedlichsten Arten darstellen und formatieren laesst.
Zu behaupten, das gewaehlte Speicherformat waere "ein date", ist also nach wie vor hoechst unsinnig.

Unterlasse bitte deine "Rueckschluesse" - sonst fange ich auch mal damit an.
Zitat:
3. Damit ich sie eingeben kann als tt.mm.jjjj und ausgeben kann als tt.mm.jj sofern dies erwünscht ist
Auch keine - sinnvolle - Antwort auf die Frage.

Auch die Datenbank selber kann ein Datum bereits formatiert zurueckliefern - wenn man es in ihr denn erst mal in einem sinnvollen Format ablegen wuerde.
Zitat:
4. Lässt sich hier aber leider nicht anders machen, da das Datum "string" ist und ich 2 Strings schlecht mit <>= vergleichen kann.
Abgesehen davon, dass man das durchaus "kann" -
Zitat:
Darum möchte ich sie als Datum in der date()-Funktion miteinander vergleichen
- auch das ist wieder absolut unnoetig, wenn Datenbank-seitig ein vernuenftiger Feldtyp gewaehlt wird.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 10-02-2009, 14:31
Lavingstar
 Member
Links : Onlinestatus : Lavingstar ist offline
Registriert seit: Oct 2004
Beiträge: 212
Lavingstar ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
wahsaga

"wenn wenn wenn wenn .... "
Antworte einfach nicht mehr auf meine Threads und gut ist.

Kannst dich ja mal an den Antworten von ghostgamblern orientieren der mir trotz meiner unprofessionellen und fehlerhaften Fragestellung erheblich weiterhelfen konnte.
------------------------------------------------


@ghost:

Vielen Dank für deine Hilfe, werde die Vorschläge direkt mal ausprobieren.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:44 Uhr.