brauche hilfe bei einem select

brauche hilfe bei einem select

am 28.10.2005 15:17:30 von docdave

hallo zusammen,
ich bräuchte mal hilfe bei einem select von euch.

ich habe in einer tabelle news gespeichert, die mit einem datum
abgespeichert sind. die spalte ist vom typ date. (2005-10-28).

so soll mein ergebnis aussehen:

OKTOBER
>> 2005-10-28 Erste Nachricht
>> 2005-10-27 Andere Nachricht
>> 2005-10-26 Noch eine Nachricht

September
>> 2005-09-28 Erste Nachricht
>> 2005-09-27 Andere Nachricht
>> 2005-09-26 Noch eine Nachricht

August
>> 2005-08-28 Erste Nachricht
>> 2005-08-27 Andere Nachricht
>> 2005-08-26 Noch eine Nachricht

Schwierig wäre dabei auch wenn der aktuelle Monat Januar, oder Februar
wäre. Denn dann muss ich ja vom Vorjahr noch einen bzw. zwei Monate
haben.

Wäre wirklich sehr nett, wenn mir jemand bei meinem Problem helfen
könnte.=20

Vielen Dank im voraus.=20
Dave

Re: brauche hilfe bei einem select

am 28.10.2005 15:29:05 von Joerg Behrens

schrieb im Newsbeitrag
news:1130505450.510337.217340@z14g2000cwz.googlegroups.com.. .
> hallo zusammen,
> ich bräuchte mal hilfe bei einem select von euch.

> ich habe in einer tabelle news gespeichert, die mit einem datum
> abgespeichert sind. die spalte ist vom typ date. (2005-10-28).

Hallo,
bitte frage das in einer SQL oder MySQL NG da ja der PHP Bezug
zufehlen scheint. Nein es reicht nicht das du das Statement aus PHP
heraus abschickst. Was stoerte dich dann an einem simplen ORDER BY ?

Gruss
Joerg

Re: brauche hilfe bei einem select

am 28.10.2005 15:33:23 von docdave

hallo jörg,

tut mir leid, ich dachte es wäre ein php.datenbank problem, da ich ja
schließlich mit beidem zusammarbeite.
wenn ich es mit order by mache, dann stehen ja alle untereinander. aber
es soll ja wie oben aussehen. also der monatsname jeweils als
überschrift.

also, sorry nochmal. ist das erste mal das ich in einer newsgroup was
poste.

Re: brauche hilfe bei einem select

am 28.10.2005 15:46:39 von Joerg Behrens

schrieb im Newsbeitrag
news:1130506403.540470.261770@g44g2000cwa.googlegroups.com.. .
> hallo jörg,

> tut mir leid, ich dachte es wäre ein php.datenbank problem, da ich
> ja
> schließlich mit beidem zusammarbeite.
> wenn ich es mit order by mache, dann stehen ja alle untereinander.
> aber
> es soll ja wie oben aussehen. also der monatsname jeweils als
> überschrift.

> also, sorry nochmal. ist das erste mal das ich in einer newsgroup
> was
> poste.

Die Ausgabe aus der DB hat doch nichts mit Anzeige zutun. Desweiteren
wuesste ich nicht wie man auf einfache Weise deutsche Monate aus der
DB bekommt ausser du hast eine 2 Tabelle wo die Monatsnamen drin
stehen.

Ergo lass dir von der DB das Datum sowie den Monat , als Zahl, geben
und sortieren als nach Datum.

Fuer die passende Ausgabe dann einfach den Monat merken und bei jeder
Ausgabe pruefen ob er sich aendert. Wenn er sich aendert weist du das
du nun nen Monatsnamen anzeigen musst und merkst die den neuen Monat.
Die deut. Monatsnamen koenntest du dir in einem Array merken oder aber
mit setlocale(), strtime() ermitteln.

Gruss
Joerg

--
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025

Re: brauche hilfe bei einem select

am 28.10.2005 15:52:47 von Niels Braczek

docdave@hotmail.de schrieb:
^^^^^^^^^^^^^^^^^^
Hier ist der Realname erwünscht.

> ich habe in einer tabelle news gespeichert, die mit einem datum
> abgespeichert sind. die spalte ist vom typ date. (2005-10-28).
> [...]
> Schwierig wäre dabei auch wenn der aktuelle Monat Januar, oder Februar
> wäre. Denn dann muss ich ja vom Vorjahr noch einen bzw. zwei Monate
> haben.

Ich rate mal, dass du MySQL einsetzen willst. Dann hilft dir
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functio ns.html

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´

Re: brauche hilfe bei einem select

am 28.10.2005 23:46:51 von Dirk Michel

> Schwierig wäre dabei auch wenn der aktuelle Monat Januar, oder Februar
> wäre. Denn dann muss ich ja vom Vorjahr noch einen bzw. zwei Monate
> haben.
>
> Wäre wirklich sehr nett, wenn mir jemand bei meinem Problem helfen
> könnte.

Hallo Dave, ohne groß mit SQL um mich zu schmeissen, kann ich Dir
folgenden Tip geben, um die News der letzten drei Monate auszugeben:

1. Konvertiere Monat&Jahr in eine laufende Nummer, beginnend mit einem
Startmonat:

$current_month_counter=($current_year-$start_year)*12+$curre nt_month

Für den aktuellen Monat 2005.10 erhältst Du bei einem Startjahr 2004 den
Monats-Counter (2005-2004)*12+10=22.

2. Vergleiche das Datum der News mit dem ermittelten Counter in Deinem
SQL-Statement:

"SELECT something FROM dingleberries WHERE
((news_year-2004)*12+news_month)>=" . ($current_month_counter-3) . " AND
..... ORDER BY .... "


Schritt 1&2 kann man natürlich auch zusammenfassen, ich habe es der
Übersichtlichkeit halber getrennt. Die subtrahierte 3 würde den
aktuellen Monat und die drei (!) vorangegangenen auswerfen.

In der Order Clause kannst Du den Timestamp des News-Eintrags nutzen.

Grüße,
Dirk.

Re: brauche hilfe bei einem select

am 29.10.2005 11:40:52 von Johannes Vogel

Hi Dave

docdave@hotmail.de wrote:
> ich habe in einer tabelle news gespeichert, die mit einem datum
> abgespeichert sind. die spalte ist vom typ date. (2005-10-28).
> so soll mein ergebnis aussehen:
> OKTOBER
>>>2005-10-28 Erste Nachricht
>>>2005-10-27 Andere Nachricht
>>>2005-10-26 Noch eine Nachricht
> September
>>>2005-09-28 Erste Nachricht
>>>2005-09-27 Andere Nachricht
>>>2005-09-26 Noch eine Nachricht
> August
>>>2005-08-28 Erste Nachricht
>>>2005-08-27 Andere Nachricht
>>>2005-08-26 Noch eine Nachricht
> Schwierig wäre dabei auch wenn der aktuelle Monat Januar, oder Februar
> wäre. Denn dann muss ich ja vom Vorjahr noch einen bzw. zwei Monate
> haben.
> Wäre wirklich sehr nett, wenn mir jemand bei meinem Problem helfen
> könnte.

Ich rate, dass du MySQL verwendest.

1. Problem: 3 Monate zurück ab erstem des jetzigen Monats:
-> reine MySQL-Problematik, wäre also in d.c.d.mysql besser aufgehoben.

$sql = "select datum, title from News";
$sql.= " where datum >= date_sub(concat(left(now(),7),'-01'), interval 3
month)";
$sql.= " order by datum desc";
$result = mysql_query($sql);

Ich nehme Jahr + Monat von heute, hänge den ersten dran und subtrahiere
davon 3 Monate. Jahresumbrüche und dergleichen überlasse ich getrost
MySQL zur Bewältigung. :-)


2. Problem: Auflistung gruppiert, gelöst in PHP:

$olddatum=null;
while (list($dbdatum,$dbtitle) = mysql_fetch_array($result)) {
if ($olddatum != substr($dbdatum,0,7))
print "

".convertMonth(substr($dbdatum,5,2))."

";
$olddatum = substr($dbdatum,0,7);
print "$dbdatum $dbtitle
\n";
}

function convertMonth($datum) {
switch ($month) {
case 1: return 'Januar';
case 2: return 'Februar';
:
case 12: return 'Dezember';
default: return 'unknown Month';
}
}

HTH, Johannes