Antworten auf deine Fragen:
Neues Thema erstellen

php mysql mit datum aus datenbank rechnen und so datenbank filtern

buyas

Nicht mehr ganz neu hier

Hi !
seit 3 tagen bin ich am suchen und probieren und bekomm es einfach nicht hin und finde nichts :uhm:.
es geht um folgendes:
habe in meiner datenbank ein bestimmtes filterkriterium gespeichert und zwar die regelmäßigkeit eines ereignisses / veranstaltung / fahrgemeinschaften was auch immer als "wöchentlich". bei der suche bzw abfrage der datenbank nach einem bestimmten datum möcht ich, dass nicht nur ereignisse mit dem datum gefiltert und ausgegeben werden, sondern auch eintragungen, die schon früher eingetragen wurden und wöchentlich stattfinden, sprich wenn am 01.07.2013 ein ereignis stattfindet, was wöchentlich stattfindet, dass es auch gefunden wird, wenn man nach dem 15.07.2013 sucht.
es wäre super, wenn jmd nen groben lösungsansatz bzw. vorschlag für mich hätte wie man sowas grundsätzlich umsetzen kann.
 
Zuletzt bearbeitet:

mwxx

Nicht mehr ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

Du holst Dir alle id und Datum aller vorhandenen Einträge in ein Array und durchläufst dieses in einer Schleife. Bei jedem Schleifendurchlauf wandelst Du mittels der PHP-Funktion strtotime() das Datum über den Ausdruck strtotime($date)."000000" das Datum in einen Timestamp um und prüfst, ob die Differenz des Timestamps des Prüfdatums und des Timestamps des aktuell durchlaufenen Schleifendatums durch die Anzahl der Microsekunden einer Woche (=604.800.000) glatt teilbar ist (Modulo-Funktion).
Ist dies der Fall, gehört das Datum zum Suchbereich.
 

Duddle

Posting-Frequenz: 14µHz

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

Wie sieht die Tabellenstruktur aus? Ist jedes Ereignis mit Datum eingetragen oder nur Ereignis + Frequenz + Startdatum? Vielleicht kannst du auch ein paar Beispieldatensätze + Suchanfrage + Wunschergebnis geben.


Duddle
 

hub

nicht ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

Moin moin,
so was kannst du mit Modulo ( in mysql: mod() ) machen ...

Gruß Ulli
 

buyas

Nicht mehr ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

vielen dank schonmal für die denkanreize !
habe bisher noch keine zeit gehabt sie mir genauer anzuschauen, war viel los auf arbeit gestern. werde es aber heute machen.
@duddle:
im moment arbeite ich am fahrgemeinschaftsbereich.
die tabellenstruktur sieht so aus, dass es mehrere spalten mit verschiedenen infos gibt, wie name, email, von, nach, ueber, uhrzeiten ( verschiedene: auch für zwischenhalte ) usw.
in der mysql - datenbank abfrage mit SELECT schränk ich die suche über WHERE ein ( von, ueber, nach, datum haupstächlich ) und möchte jetzt halt, dass nicht nur ergebnisse angezeigt werden, die an genau dem gesuchten datum eingetragen sind, sondern die meinetwegen schon 2wo früher eignetragen wurden mit dem hinweis "wöchentlich" ( in einer spalte der tabelle )
jedes ereignis ist mit dem datum des ersten stattfindens und ggf. mit dem hinweis wöchentlich eingetragen.
wie meinst du das mit ein paar Beispieldatensätze + Suchanfrage + Wunschergebnis geben ?
 

buyas

Nicht mehr ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

@mwxx: das mit der schleife, strtotime, differenzberechnung usw. bekomm ich, denk ich mal hin, frage mich aber gerade wie ich das mit der datenbankabfrage verknüpfen soll.
erstmal ne datenbankabfrage, wo ich id und datum hole, dann rechnen und selektieren ob wöchentlich und dann noch ne datenbank-abfrage ? oder wie meinst du das ?
 

buyas

Nicht mehr ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

aaah ich glaub, ich habs verstanden, ich probiers gleichmal aus :)
 

Duddle

Posting-Frequenz: 14µHz

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

Bitte benutze in Zukunft den Bearbeiten-Knopf, anstatt 3 einzelne Antworten direkt hinterander zu schreiben.

wie meinst du das mit ein paar Beispieldatensätze + Suchanfrage + Wunschergebnis geben ?
Beispiel:
Tabelle "MeineTabelle"
Code:
id | name | datum      | notiz
------------------------------
1  | foo  | 02.12.2013 | 
2  | bar  | 07.09.2012 | wöchentlich
Wenn ich dort nach Ereignissen vom 14.09.2012 suche, will ich auch "bar" angezeigt bekommen, weil es wöchentlich ist und auf den gleichen Wochentag fällt.


Duddle
 

hub

nicht ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

Moin,
ich bin noch mal über dein Problem gestolpert. Das hier wäre mein Lösungsansatz (funktioniert eigentlich wie MOD() , aber weniger Tipperei). Damit vergleichst du "nur" die Wochentage und die WHERE Klausel müsste jetzt noch um die Einschränkung deines Ereignistyps erweitert werden.
Code:
 ... WHERE WEEKDAY(Ereignis_datum) = WEEKDAY(such_datum) AND ...
Für konkrete Vorschläge oder Lösungsansatz bitte den Wunsch von Duddle erfüllen

Gruß Ulli
 

buyas

Nicht mehr ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

@duddle:
sorry, die gepflogenheiten eines forums muss ich mir in zukunft noch bewusster machen.

die datensätze sehen so aus:

Code:
id | von   | nach       | datum         | häufigkeit
----------------------------------
1 | berlin | münchen | 2014-01-21
2 | berlin | münchen | 2014-01-28 | wöchentlich
@hub:
habe jetzt erstmal versucht den wochentag des suchdatums mit WEEKDAY rauszufinden und auszugeben um den umgang mit weekday erstmal kennenzulernen, allerdings kommt die fehlermeldung " call to undefined function " usw.

habe es u.a. so probiert:

PHP:
$wochentag = WEEKDAY('2014-01-28');
echo $wochentag;
:(
 

buyas

Nicht mehr ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

das habe ich auch schon ausprobiert, allerdings ohne tabellenangabe in der klammer.
du hast da (dein_tabelle.ereignis_datum) stehen, muss in klammern der tabellenname vorkommen ? also so: tabellenname.spaltenname ( spaltenname-> "datum" ) ?
falls ja, dann habe ich das glaub ich richtig gemacht, aber richtig selektieren tut er trotzdem nicht.. die ausgabe der datenabfrage enthält nur ergebnisse mti dem suchdatum ..
bin seeeehr verwirrt, kann doch nicht sein, dass son feature son akt wird :s ..

edit:
okay, kein wunder, hab den fehler jetzt behoben - funktioniert jetzt.
vielen dank für den wunderbaren tip mit weekday hub :) !
ich hab leider noch ein kleines ( generelles ) problem mit der ausgabe der datensätze, welches vorher auch schon bestand, ich habe schon wie verrückt geschaut, wo da irgendwie was stören könnte, finde aber nix im code, sodass ich gar nicht weiß, was ich da als besipielcode euch zeigen sollte ..
egal wieviele datensätze selektiert werden, es wird immer der erste " verschluckt " bzw nicht angezeigt. is das zufällig n bekanntes oder typisches problem das man als anfänger erzeugt ?

ich geb euch mal trotzdem folgenden code:

PHP:
$sql = "SELECT * FROM fahrgemeinschaften WHERE WEEKDAY(fahrgemeinschaften.datum)=WEEKDAY('".$datumabfra."')";
$db_erg = mysql_query($sql);
$zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC);

ausgabe wie folgt über while in einer tabelle:

PHP:
  echo "<table style='width: 740px;'>";
 
$i=0;
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC)) {
.
.
.
 
        $bgfarbe = ( ++$i % 2 == 0 ) ? "dunkel" : "hell";
.
.
.
  echo "<tr style='position: relative; top: -6px; width:740px;' class='$bgfarbe'>";
.
.
.
  echo "</tr>";
 
}

edit:
okay, das problem hat sich auch erledigt - das erste "
$zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC);" musste raus :)
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

Noch eine kleine Anmerkung: wenn du das über DATEDIFF() löst, hast du ein bisschen feinere Kontrolle über die Perioden.
DATEDIFF() gibt den Unterschied in Tagen zwischen zwei Daten aus. Kombinierst du das mit Modulo (wie oben schon erwähnt), kannst du beispielsweise zweiwöchige Perioden erkennen:
PHP:
$sql = "SELECT * FROM fahrgemeinschaften WHERE DATEDIFF(fahrgemeinschaften.datum,'".$datumabfra."')%14 = 0";


Duddle
 

buyas

Nicht mehr ganz neu hier

AW: php mysql mit datum aus datenbank rechnen und so datenbank filtern

ah okay ! vielen dank für den hinweis, werde es mir unbedingt anschauen !

lg
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben