CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
10.01.2006, 10:39:04
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
Datensätze zeitliche Eingrenzung
... wie gehe ich am besten vor um eine Datenbankabfrage umzusetzen, die es ermöglicht Datensätze einer bestimmten Zeitspanne Tag.Monat.Jahr herauszufiltern.
Jeder Datensatz hat zumindest ein Datumsfeld, welches ich mit Date_Format in das deutsche Datumsformat bringe.
Da sich die Abfrage direkt an die DB richtet und dort das yyyy-mm-dd Datum vorliegt muss sich meine Abfrage wohl auch in diesem Format sein.
Im Handbuch von MYSQL konnte ich nur bedingt Infos finden.
Verwende ich beim SELECT ein LIMIT $start, $ende so kann ich darin 2 Variablen nutzen, doch die Zeitliche Spanne muss bezogen auf Start-TAG-MONAT-JAHR bis Ende-TAG-MONAT-JAHR möglich sein und das wären doch schon 6 Variable.
Wo ist mein Denkfehler?
Ach ja, das Datumsfeld liegt als date vor.
cu,
Franzx
Geändert von Franzx (10.01.2006 um 10:40:41 Uhr)
|
10.01.2006, 11:32:11
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Datensätze zeitliche Eingrenzung
Schau dir dazu am besten mal die MySQL-Datumsfunktionen DATE_ADD() bzw. DATE_SUB() an.
|
10.01.2006, 11:34:25
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Datensätze zeitliche Eingrenzung
Hat in diesem Fall nix mit LIMIT zu tun. LIMIT hat nicht mit der Auswahl, mehr mit der Anzahl der auszuwählenden/anzuzeigenden Datensätze zu tun.
Versuchs hiermit:
PHP-Code:
SELECT * FROM file WHERE von <= "yyyy-mm-dd" AND bis >= "yyyy-mm-dd"
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
10.01.2006, 14:44:15
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
Vielen Dank für Eure schnellen Antworten!
Zitat:
Zitat von vt1816
Versuchs hiermit:
PHP-Code:
SELECT * FROM file WHERE von <= "yyyy-mm-dd" AND bis >= "yyyy-mm-dd"
|
Hallo vt1816,
ja, das kann ich verstehen und leuchtet mir ein.
Nochmal vielen Dank.
cu,
Franzx
|
10.01.2006, 15:34:07
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
Habe es wohl doch noch nicht verstanden. Folgend meine SELECT:
PHP-Code:
$result = mysql_query("SELECT wert FROM tbl WHERE DATE_FORMAT(wert, '%d.%m.%Y') <= '".$_REQUEST['von_wert']."' AND DATE_FORMAT(wert, '%d.%m.%Y') >= '".$_REQUEST['bis_wert']."' ") or die(mysql_error());
Es gibt zwar keinen SQL-Fehler aber auch kein Ergebnis. Tatsächlich sind da aber laut Zähler 155 Datensätze zutreffend.
cu,
Franzx
|
10.01.2006, 15:58:55
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Datensätze zeitliche Eingrenzung
Lass Dir mal die Query mit ECHO vorher ausgeben.
Wie übergibst Du die Daten (GET / POST)? Arbeite dementsprechend mit $_GET bzw. $_POST. Haben die Parameter das richtige Format (yyyy-mm-dd / dd-mm-yyyy / dd.mm.yyyy / etc.)?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
10.01.2006, 19:49:53
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Datensätze zeitliche Eingrenzung
Benutze nicht die mit DATE_FORMAT() formatierten Datumsangaben für den Vergleich sondern das Format, in dem die Daten in der Datenbank stehen.
|
11.01.2006, 10:10:13
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
Zitat:
Zitat von xabbuh
Benutze nicht die mit DATE_FORMAT() formatierten Datumsangaben für den Vergleich sondern das Format, in dem die Daten in der Datenbank stehen.
|
Vieln Dank, ja es funktioniert ohne Date_Format().
Das war ein Punkt und der Teufel liegt im Detail, denn die mussten getauscht werden. Eine Zeitspanne von >= bis <= .
Allerdings muss die Eingabe der Zeitspanne, in das Formular, jetzt im yyyy-mm-dd erfolgen. Gibt es dafür auch noch eine Lösung, um ein deutsches Format eingeben zu können und dies aber als Übergabewert gleich das DB-Format erhält?
Ich seh mal in der PHP-DOKU nach.
cu,
Franzx
|
11.01.2006, 10:57:00
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Datensätze zeitliche Eingrenzung
Zitat:
Zitat von Franzx
Allerdings muss die Eingabe der Zeitspanne, in das Formular, jetzt im yyyy-mm-dd erfolgen. Gibt es dafür auch noch eine Lösung, um ein deutsches Format eingeben zu können und dies aber als Übergabewert gleich das DB-Format erhält?
|
Ja klar. Da Du die Daten eh prüfen mußt (jeden Mist sollst Du Dir tunlichst nicht aufschwatzen lassen), kannst Du bei der Gelegenheit gleich den ISO Datumstring bilden.
PHP-Code:
$d = explode('.', trim($_POST['datum]'));
if ($d[2] < 100)
$d[2] += 2000;
if (checkdate($d[1], $d[0], $d[2]))
$datum_iso = sprintf('%04d-%02d-%02d', $d[2], $d[1], $d[0]);
else
print 'Dieses Datum gibts nicht!';
Geändert von meikel (†) (11.01.2006 um 10:57:13 Uhr)
|
11.01.2006, 11:52:19
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
Zitat:
Zitat von meikel
PHP-Code:
$d = explode('.', trim($_POST['datum]'));
if ($d[2] < 100)
$d[2] += 2000;
if (checkdate($d[1], $d[0], $d[2]))
$datum_iso = sprintf('%04d-%02d-%02d', $d[2], $d[1], $d[0]);
else
print 'Dieses Datum gibts nicht!';
|
Hat ein bisschen gedauert bis ich es verstanden hatte, aber dieser Code prüft das Datumsformat auf ein gültiges deutsches Format. Dabei ist auch eine 2stellige Jahreszahl möglich und sofern diese unter 100 ist, ist es vor dem Jahr 2000.
Ich bin leider noch nicht soweit, da ich erst noch das "Changing" brauche - Datumsformat wird deutsch ins Formular eingegeben und im DB-Format übermittelt - für die SELECT.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:18:30 Uhr.
|