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 |
23.02.2010, 09:05:42
|
Anfänger
|
|
Registriert seit: Feb 2010
Alter: 42
Beiträge: 9
|
|
Select zweier Datensätze um das heutige Datum
Hallo zusammen.
Kurze Erklärung:
In meiner Datenbank habe ich Einträge, die immer ein Startdatum (als Timestamp) und einen Text haben. Das könnten n Einträge sein.
Ich möchte nun die 2 Einträge Auswählen (SELECT über php) die das heutigen Datum (Timestamp) umklammern.
PHP-Code:
$jetzt = mktime();
Wie geht ein solches Select? Ich möchte ja nicht between a und b haben sondern eher sowas wie around date. Hat da jmd ne Idee?
PHP-Code:
SELECT text FROM datenbank WHERE startdatum AROUND $jetzt LIMIT 0,1;
So in der Art stelle ich es mir vor. Ich hoffe auf eure Hilfe.
Martin
|
23.02.2010, 09:14:34
|
Anfänger
|
|
Registriert seit: Feb 2010
Alter: 42
Beiträge: 9
|
|
AW: Select zweier Datensätze um das heutige Datum
Ich kam gerade selber auf die erfolglose Idee 2 Abfragen zu machen und diese zu verbinden aber...
PHP-Code:
$db_anfrage1 ="SELECT text FROM datenbank WHERE startdatum <= $jetzt LIMIT 0,1";
$db_anfrage2 = "SELECT text FROM datenbank WHERE startdatum > $jetzt LIMIT 0,1";
$db_ergebnis1 = mysql_query($db_anfrage1, $serververbindung);
$db_ergebnis2 = mysql_query($db_anfrage2, $serververbindung);
...leider ist $db_ergebnis2 leer... :-(
|
23.02.2010, 11:00:49
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Select zweier Datensätze um das heutige Datum
Hi
Zitat:
Ich möchte ja nicht between a und b haben sondern eher sowas wie around date. Hat da jmd ne Idee?
|
Du könntest eine range definieren mit DATE_ADD und DATE_DIFF und dann per BETWEEN
nach treffern fragen.
mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
23.02.2010, 12:32:48
|
Anfänger
|
|
Registriert seit: Feb 2010
Alter: 42
Beiträge: 9
|
|
AW: Select zweier Datensätze um das heutige Datum
Hallo CKaos,
leider kann ich keine Range definieren, da die Einträge in der Datenbank mal 1 Woche mal aber auch ein halbes Jahr auseinanderliegen können. Außerdem habe ich eben noch eine weitere Schwierigkeit entdeckt: Es kann ja sein, dass es keinen Eintrag gibt, der nach heute kommt. (also wo timestamp > jetzt ist).
Puuh, kniffelig.
Hoffe auf weitere Ideen.
MfG Martin
|
23.02.2010, 13:22:48
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Select zweier Datensätze um das heutige Datum
Hi
Zitat:
leider kann ich keine Range definieren
|
Warum nicht?
Zitat:
da die Einträge in der Datenbank mal 1 Woche mal aber auch ein halbes Jahr auseinanderliegen können.
|
Würde sich auch so lösen lassen.
Zitat:
Außerdem habe ich eben noch eine weitere Schwierigkeit entdeckt: Es kann ja sein, dass es keinen Eintrag gibt, der nach heute kommt. (also wo timestamp > jetzt ist).
|
Was ja bei der range keinen unterschied macht.
Ich merke mein vorgestellter Ansatz kommt nicht wie gewünscht an. ;)
Also hier mal ein Bsp. vielleicht hilft dir das diesen weiter zu denken.
PHP-Code:
function range($timestamp,$type){
$sql="SELECT * FROM TABELLE WHERE SPALTE BETWEEN DATE_SUB(".$timestamp.",INTERVAL 1 ".$type." AND DATE_SUB(".$timestamp.",INTERVAL 1 ".$type.")";
//Hier mysqlquery und verarbeitung des Ergebnisses
}
//Aufruf dann wie folgt
$ergebnis_woche=range($DATUM,"WEEK");
//Wenn kein Ergebnis dann weiter
$ergebnis_woche=range($DATUM,"MONTH");
//usw
mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
23.02.2010, 22:10:03
|
Anfänger
|
|
Registriert seit: Feb 2010
Alter: 42
Beiträge: 9
|
|
AW: Select zweier Datensätze um das heutige Datum
werds morgen im büro mal ausprobieren :)
|
24.02.2010, 07:02:18
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Select zweier Datensätze um das heutige Datum
Im Beispiel wurde 2x DATE_SUB genutzt. (Vermute mal Tipfehler) Einmal müsste meiner Meinung nach in DATE_ADD geändert werden. Das folgende AND wäre ja sonst identisch mit der Bedingung zuvor.
|
24.02.2010, 08:40:38
|
Anfänger
|
|
Registriert seit: Feb 2010
Alter: 42
Beiträge: 9
|
|
AW: Select zweier Datensätze um das heutige Datum
Guten morgen,
nachdem ich nun 1 Nacht darüber geschlafen habe, hab ich auch kapiert wohin diese funktion führen könnte. Der erste Between parameter wäre heute der zweite also meine range... (zum beispiel 2 quartele).
Leider habe ich noch ein problem in meiner abfrage. ich bekomme kein ergebnis von der DB geliefert. Hier mein query:
PHP-Code:
SELECT * FROM tabelle WHERE startdatum BETWEEN DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 2 WEEK) AND DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 QUARTER) ORDER BY startdatum ASC LIMIT 0, 6;
Wo ist denn da der fehler nu?
Meinem Verständnis nach sollte er also alles zwischen "jetzt" und "den letzten 6 Monaten" anzeigen. In der DB sind die startdatum felder als timestamp gespeichert... und wenn ich mal so von hand reinschaue siehe da... da gibt es mind. 1 Eintrag der in den letzten 6 Monaten vorlag.
EDIT: Wenn ich eine händische DB-Abfrage mache mit BETWEEN damals AND jetzt dann gibt er mir die richtigen Einträge aus
Geändert von Topper23 (24.02.2010 um 08:50:52 Uhr)
|
24.02.2010, 09:57:02
|
Anfänger
|
|
Registriert seit: Feb 2010
Alter: 42
Beiträge: 9
|
|
AW: Select zweier Datensätze um das heutige Datum
waaaah, ich verzweifle bald... bin auf halbem weg:
PHP-Code:
SELECT * FROM tabelle WHERE startdatum BETWEEN 1157001006 AND UNIX_TIMESTAMP(NOW()) ORDER BY startdatum ASC LIMIT 0, 6
Jetzt muss ich nur den ersten timestamp dazu umdüddeln, dass der UNIX_TIMESTAMP(NOW()) minus 6 Monate genommen wird und keine statische zeit. abre wie?!?! *fastheul*
|
24.02.2010, 10:35:18
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Select zweier Datensätze um das heutige Datum
Hi
sei mir nicht böse aber das is wie wenn du nach 1+1 fragst ;)
Steht doch alles in den vorherigen posts.
Aber ich schreibe dir gerne die fertige Lösung zum kopieren bereit.
Code:
// BETWEEN kleines_datum(Vergangenheit) AND großes_datum(Zukunft?)
SELECT * FROM tabelle WHERE startdatum
BETWEEN UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL 6 MONTH)) AND UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL 2 WEEK))
ORDER BY startdatum ASC LIMIT 0, 6
Und das ganze schreibst du nun in eine Funktion und kannst dann
diese immer wieder mal verwenden ;)
PS: Natürlich war das ein schreibfehler arbeite ja auch mit copy&paste *gg
mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
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 09:16:56 Uhr.
|