Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

1 Zum Seitenanfang

Freitag, 24. Juni 2011, 19:01

Nach Jahr und Monat suchen im date Format

Wie lasse ich alle Datensätze anzeigen von einem bestimmten Jahr und einem bestimmten Monat?
Das Datum ist so gepeichert: 2011-06-23

Nun will ich zb. alle Datensätze die von Juni 2011 sind. Gibt es auch ein Möglichkeit den Monat der mit dem Namen Juni übergeben wird bei der Abrage in eine 06 umzuwandeln ohne vorher mit php zb. ein switch zu machen und aud dem Namen wieder eine Zahl zu machen?

Thx for help
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Treml

Tripel-As

Dabei seit: 19.03.2003

Beiträge: 237

 

2 Zum Seitenanfang

Freitag, 24. Juni 2011, 22:42

Soweit ich das nach einer kurzen Recherche gesehen habe, stehen in MySQL direkt die Funktionen YEAR() und MONTH() zur Verfügung, mit denen man Jahr und Monat extrahieren kann und das switch aus PHP lässt sich in MySQL in ein CASE übersetzen.

Letzteres macht in der Handhabung wahrscheinlich nur wenig Unterschied, aber ich glaube nicht, dass es eine direkte Methode zur Eingabe von Monatsnamen gibt.
i u t w w f c b - u y a s t m w m
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

3 Zum Seitenanfang

Montag, 27. Juni 2011, 22:47

Danke dir für dein Mühe :) genau das hab ich gesucht :thumbup:

PHP-Quelltext

1
2
3
4
5
$sql "SELECT date, shop
                FROM shopping 
                WHERE user_id = '$user_id'
                AND WHERE date LIKE MONTHNAME('$month')
                AND WHERE date LIKE YEAR('$year')";


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE date LIKE MONTHNAME('June') AND WHERE date LIKE YEAR('2011' at line 4

Was mach ich falsch?
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Moee

Routinier

Dabei seit: 25.01.2009

Beiträge: 341

 

4 Zum Seitenanfang

Montag, 27. Juni 2011, 23:13

Meines Wissens nach gibt dir monthname den Monatsnamen zurück wenn du vorerst ein Datum rein schmeißt.

z.B. so:

MySQL-Abfrage(n)

1
SELECT monthname('2007-09-12') /*FROM DUAL*/;


Tipp:
Baue dir mit MYSQL bzw. PHP ein Datum zusammen, die Funktionen sind die DATE(), YEAR(), MOINTH() usw. Funktionen, von denen MySQL schon sehr viel mitbringt, eigentlich musst du dir keine php abhilfe schaffen denn auch MySQL kann dir PRoblemlos Name und Zahl ausgeben.

EDIT:
Folgende Funktionen könnten dir weiterhelfen:

MySQL-Abfrage(n)

1
2
3
STR_TO_DATE
LAST_DAY
DATE_ADD


Ich würde nur den Monat und das Jahr nehmen und dann zwei Daten basteln, einmal den 1. des Monats und den letzten (01.01.2011 und 31.01.2011) des Monats und dann mit einem einfachen between arbeiten.
Ich weiß nur nicht genau ob das ganze dann noch wirklich performant ist :)
Mfg
Moee

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Moee« (27. Juni 2011, 23:13)

 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

5 Zum Seitenanfang

Dienstag, 28. Juni 2011, 12:46

Vielleicht habe ich meine Frage falsch Formuliert. Ich bekomme den Monat als Monatsnamen (zb. Jule) und das Jahr (zb. 2011) von einem Formular. Nun sollen nur Datensätze angezeigt werden die von 2011 sind und vom Monat Jule. In der Datenbank ist das Datum mit Jahr-Monat-Tag hinterlegt.
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Tsx

Eroberer

Dabei seit: 10.05.2011

Beiträge: 51

 

6 Zum Seitenanfang

Dienstag, 28. Juni 2011, 15:39

SELECT * FROM tablename tn
WHERE YEAR(tn.datumsfeldname) = "2011" AND MONTH(tn.datumsfeldname) = "11"

Wenn du das Formular selber gemacht hast würde ich anstatt den Monatsnamen die dementsprechende Zahl übergeben. Sollte das nicht möglich sein, solltest du eine logik vorwegschalten die Januar in 1 , Februar in 2 usw. umschreibt. Hoffe ich konnte helfen.
 

eMKay

Eroberer

Dabei seit: 19.07.2009

Beiträge: 52

 

7 Zum Seitenanfang

Dienstag, 28. Juni 2011, 21:13

Moin!

Habe etwas ähnliches für unseren Posteingang umgesetzt.
Wenn Das Formular auch von Dir ist, könntest Du für die Datums-Eingabe Dropdown-Listen benutzen, hier kannst Du für Anzeige und Übergabe verschiedene Werte angeben.
Ich habe in meinem Formular 3 Dropdowns pro Datum. Das für den Monat zeigt zwar Monatsnamen an, übermittelt aber die Monats-Nummer.
Aus den 3 Übermittelten Werten lässt sich dann einfach ein MySQL-Datum basteln.
Ist ein wenig Fleißarbeit;) mit dem Formular, funktioniert aber prima.
(Funktioniert dann sogar rein mit HTML&PHP, ohne Javascript...)

Für die Anzeige nach dem Auslesen aus der Datenbank benutze ich das Formular auch, setze dann per Schleife das selected-Attribut des jeweiligen Eintrags.

MfG, Marcus

PS: ist natürlich 'select', 'option', 'value'...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »eMKay« (28. Juni 2011, 21:13)

 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

8 Zum Seitenanfang

Mittwoch, 29. Juni 2011, 17:33

SELECT * FROM tablename tn
WHERE YEAR(tn.datumsfeldname) = "2011" AND MONTH(tn.datumsfeldname) = "11"

Wenn du das Formular selber gemacht hast würde ich anstatt den Monatsnamen die dementsprechende Zahl übergeben. Sollte das nicht möglich sein, solltest du eine logik vorwegschalten die Januar in 1 , Februar in 2 usw. umschreibt. Hoffe ich konnte helfen.


Danke so funktioniert es :)
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

9 Zum Seitenanfang

Dienstag, 5. Juli 2011, 00:38

nur der Vollständigkeit halber ....

PHP-Quelltext

1
2
3
4
5
$sql "SELECT date, shop
                FROM shopping 
                WHERE user_id = '$user_id'
                AND WHERE date LIKE MONTHNAME('$month')
                AND WHERE date LIKE YEAR('$year')";

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE date LIKE MONTHNAME('June') AND WHERE date LIKE YEAR('2011' at line 4

Was mach ich falsch?
Auch wenn Du das Hauptproblem schon gelöst hast so möchte ich das nicht unkommentiert lassen.
hier meine drei Anmerkungen:
  • Im Querry Reicht es wenn du das WHERE nur einmal verwendest. (daher das - check the right syntax near ...)
  • die Fehlermeldung lässt auch darauf schließen das du den Funktionen MONTHNAME() & YEAR() kein Datum übergeben hast.
    • zur Verdeutlichung:
      • MONTHNAME('2011-06-23') --> wäre richtig und ergibt 'June'
      • MONTHNAME('June') --> ist falsch, weil 'June' nicht wie ein Datumstring aussieht

    • im gleichen Sinn bei YEAR()
      • YEAR('2011-06-23') --> ist richtig und ergibt '2011'
      • YEAR('2011') --> ist falsch, weil ein Datumsstring erwartet wird

    • HIER sind die entsprechenden Datumsfunktionen alphabetisch aufgelistet und es wird erklärt welchen wert sie erwarten und was zurückgegeben wird.

  • Dein Querry hätte so Funktionieren müssen:

    PHP-Quelltext

    1
    2
    3
    4
    5
    
    $sql "SELECT date, shop
            FROM shopping 
            WHERE user_id = '$user_id' AND 
                  MONTHNAME(date) LIKE '$month' AND 
                  YEAR(date) LIKE '$year'";
    aber ich finde die Variante wo Zahlen miteinander verglichen werden logischer als wenn man Monatsnamen miteinander vergleicht ;)
    und dem Computer fällt im allgemeinen das Zahlen vergleichen auch leichter :D

Gruß
Ego
 

Ähnliche Themen