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 |
11.01.2006, 14:40:47
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Datensätze zeitliche Eingrenzung
Zitat:
Zitat von Franzx
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.
|
Das ist doch mit drin.
Wenn checkdate nicht meckert:
$datum_iso = sprintf('%04d-%02d-%02d', $d[2], $d[1], $d[0]);
erzeugt einen String nach dem Muster: YYYY-MM-DD
|
11.01.2006, 15:00:29
|
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!';
|
Ich habe nur folgendes in einer Zeile geändert:
PHP-Code:
explode('.', trim($_POST['feldname_der_datum_enthält']));
danach getestet indem ich $_POST ausgeben habe.
Ergebnis: Das deutsche Datum wurde als solches ausgegeben und beim DB-Format gabs die Fehlermeldung. Soweit wohl richtig. Doch wenn die $_POST ein deutsches Datum vorhält kann ich es nicht mit dem in der DB vergleichen, oder verstehe ich da was nicht?
An welcher Stelle wird denn das Datum umformatiert?
|
11.01.2006, 20:43:17
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Datensätze zeitliche Eingrenzung
echo $datum_iso;
|
12.01.2006, 07:55:55
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
moin, moin!
Erst einmal vielen Dank für die Geduld.
Ich versteh es nicht, die Abläufe??
Ich habe ein Formular in dem ein deutsches Datum eingegeben werden soll - mit dem Datumsformat aus der DB, yyyy-mm-dd, funktioniert dieses Formular und die DB_Abfrage.
Per $_POST['feld.deutsches.datumsformat'] wird das Feld übergeben an SELECT um $row['feld-DB-datumsformat'] zu vergleichen ob es <, = oder > ist. Dies geht natürlich nicht, da die Formate nicht übereinstimmen.
Der Ausgangspunkt ist klar, nun nehme ich folgenden Code:
PHP-Code:
$d = explode('.', trim($_POST['feld.deutsches.datumsformat']));
if ($d[2] < 100)
$d[2] += 2000;
if (checkdate($d[1], $d[0], $d[2]))
$feld.deutsches.datumsformat = sprintf('%04d-%02d-%02d', $d[2], $d[1], $d[0]);
Es passiert nichts, mal abgesehen davon, dass das Datum geprüft wird.
PHP-Code:
$_POST['feld.deutsches.datumsformat']
hat sich nicht geändert und der Vergleich kann natürlich nicht funktionieren.
Was übersehe ich?
|
12.01.2006, 09:13:38
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Datensätze zeitliche Eingrenzung
Zitat:
Zitat von Franzx
Es passiert nichts, mal abgesehen davon, dass das Datum geprüft wird.
Was übersehe ich?
|
1. das $_POST['feld.deutsches.datumsformat'] geht ja noch, weil ein String ein String ist.
2. das $feld.deutsches.datumsformat ist ein falscher Variablenbezeichner. Sowas ginge mit einigen Warnungen noch als Argument durch aber nicht als Ziel einer Zuweisung.
Hier ein funktionierendes Onlinebeispiel (Quelltext wird angezeigt):
http://test.php-help.info/date2iso/index.php
|
12.01.2006, 11:38:23
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
Ja, vielen Dank. Das ändern des Datumformats funktioniert nun.
Allerdings wirds nun seltsam.
Mit dem yyyy-mm-dd format habe ich folgendes
PHP-Code:
SELECT ... From .. WHERE tbl.datum_feld >= '".$_REQUEST['von_datum']."' AND WHERE tbl.datum_feld <= '".$_REQUEST['bis_datum']."'
verwendet. Funktionierte problemlos .
Nachdem ich die Datumsformatierung verwende
PHP-Code:
$d = explode('.', trim($_REQUEST['von_datum']));
if ($d[2] < 100)
$d[2] += 2000;
if (@checkdate($d[1], $d[0], $d[2]))
{
$von_datum = sprintf('%04d-%02d-%02d', $d[2], $d[1], $d[0]);
}
$d2 = explode('.', trim($_REQUEST['bis_datum']));
if ($d2[2] < 100) $d2[2] += 2000;
if (@checkdate($d2[1], $d2[0], $d2[2]))
{
$bis_datum = sprintf('%04d-%02d-%02d', $d2[2], $d2[1], $d2[0]);
}
kann ich zwar die Var: $von_datum, $bis_datum richtig ausgeben, mit dem yyyy-mm-dd Format, doch auch wenn ich die SELECT ändere
PHP-Code:
SELECT ... From .. WHERE tbl.datum_feld >= $von_datum AND WHERE tbl.datum_feld <= $bis_datum
funktioniert die Abfrage nicht. Verwende ich
PHP-Code:
SELECT ... From .. WHERE tbl.datum_feld >= $von_datum
läuft das Script wieder. Also kann ich keine Zeitspanne abfragen.
Die Variablen haben beide einen yyyy.mm.dd Inhalt, ein Vergleich sollte also machbar sein.
Setzte ich die SQL-Abfrage falsch ein? Aber dann hätte es mit dem unformatiertem Datumsformat auch nicht laufen dürfen.
Rätsel!
|
12.01.2006, 13:00:01
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Datensätze zeitliche Eingrenzung
Zitat:
Zitat von Franzx
Mit dem yyyy-mm-dd format habe ich folgendes
Zitat:
SELECT ... From .. WHERE tbl.datum_feld >= '".$_REQUEST['von_datum']."'
AND WHERE tbl.datum_feld <= '".$_REQUEST['bis_datum']."'
|
verwendet. Funktionierte problemlos.
|
Wirklich? Ich hätte schwören können, daß sich MySQL über das doppelte WHERE aufregen würde.
Habe das Beispiel geändert und zwei Funktionen gebildet.
http://test.php-help.info/date2iso/index.php
|
12.01.2006, 13:29:49
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
Zitat:
Zitat von meikel
Wirklich? Ich hätte schwören können, daß sich MySQL über das doppelte WHERE aufregen würde.
|
Oh ja, sorry, war ein DRAG & DROP Fehler :-).
Werde mich gleich mal an die neuen Funktionen machen.
cu,
Franzx
|
12.01.2006, 14:13:58
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
... es macht mich schön langsam kirre. Muss mal mit dieser Datumsgeschichte aussetzen, ein bischen Abstand gewinnen um neue Gedanken aufnehmen zu können.
Selbst mit dem fertigen Script von meikel hackt es noch.
cu,
Franzx
|
13.01.2006, 09:07:59
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: Datensätze zeitliche Eingrenzung
PHP-Code:
SELECT spalte FROM tabelle WHERE datum1 >= '%s' AND datum2 <= %s
PHP-Code:
<input type="text" name="datum1" value="%s">
datum1 ist doch identisch mit '%s' und auch datum2
Das kann doch nicht zum Erfolg führen???
Außerdem wird doch hier die Abfrage umgedreht, oder? Ich versteh es nicht.
Schade, aber vielen Dank, mit diesem Aufbau kann ich nichts anfangen. Es mag innerhalb dieses Formulars alles laufen, doch bei mir sind das Formular und die Ergebnisseite zwei unterschiedliche Dateien und die SQL-Abfragen sind noch wieder in einer eigenen Datei. Ich muss die Werte übergeben und auch noch auf weitere Seiten mitnehmen können. Bislang habe ich die Seiten so aufgebaut dass selbst externe Aufrufe über $_Request möglich sind.
Mal sehen ob ich in Java-Script die Datumseingabe entsprechend drehen kann, direkt bei der Eingabe und in ein hidden-Feld schreibe zur Übergabe an die SELECT.
cu,
Franzx
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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 12:06:33 Uhr.
|