Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Nach Datum gruppieren [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Nach Datum gruppieren


 
Schoppy
16-07-2002, 23:59 
 
Hallo...

ich bin noch ein ziemlicher Newbie auf diesem Gebiet und würde gerne wissen, wie die Daten meiner Newstabelle nach Monaten gruppieren kann. In der Tabelle gibt es ein Feld in dem das Datum im Format "0000-00-00" gespeichert ist.

Danke für eure Hilfe

 
goth
17-07-2002, 00:04 
 
Gruppieren ... oder Sortieren ... ??

Gruppieren: GROUP BY datumsfeld

Sortieren: ORDER BY datumsfeld

Gruppieren aggregiert verschiedene Tupel einer Tabelle zu Einem ... dabei können dann Aggregat-Funktionen SUM(), MAX(), MIN() ... verwendet werden und die Daten zusammenzufassen ... .

 
Titus
17-07-2002, 00:10 
 
0000-00-00 entspricht der Null im ISO-Format für Datums- und Zeitangaben (ISO 8601 (http://home.t-online.de/home/PeterJHaas/ISO8601.htm#Datum)).
Dies Format hat den Vorteil, dass der Vergleich und das Sortieren verschiedener Angaben im gleichen Sub-Format auf einen einfachen String-Vergleich reduziert wird - wenn man mal von den Möglichkeiten absieht, Angaben aus verschiedenen Zeitzonen codieren zu können.

Übrigens ist auch die Darstellung von Timestamps in mySQL konform zu ISO 8601. :teach:

 
Schoppy
17-07-2002, 00:40 
 
Danke...

aber vielleicht habe ich mich ja auch falsch ausgedrückt, ich möchte z.B alle Meldungen aus dem Monat '07' heraus filtern und ausgeben...danach alles aus dem Monat '08' usw...wäre nett, wenn iihr mir ein Quellcodebeispiel posten könntet.

 
goth
17-07-2002, 00:46 
 
$stat="
SELECT MONTH(`date`) AS monat, meldung
FROM ids_news
WHERE YEAR(`date`)=2002
ORDER BY monat
";


Du solltest Dann in Deinem Script auf den Monatswechsel prüfen


if ( $res=mysql_query($stat) ) {
$curmonth=0;
while ( $obj=mysql_query_object($res) ) {
if ( $obj->monat!=$curmonth ) {
echo "JETZT NEUER MONAT<br />\n";
$curmonth=$obj->monat;
}
echo nl2br(htmlspecialchars($obj->meldung))."<br />\n";
}
mysql_free_result($res);
} else die(mysql_error());

 
Schoppy
17-07-2002, 01:06 
 
Hmm...

ich bekomme ich immer einen Parse-Error...

Hier sind noch mal meine genauen Daten:

Tabellenname: 'ids_news'

Spaltenname in der das Datum steht: 'date'


Ich sehe mich schon kurz vor dem Ziel ;)

 
goth
17-07-2002, 01:21 
 
Hab's oben entsprechende geändert ... parse error ist allerdings dann ein php-Problem ... hinter mysql_free_result($res) fehlte ein Semikolon

 
Schoppy
17-07-2002, 09:15 
 
So...

ich habe das jetzt mal so realisiert$daten = MySQL_QUERY("select * from $newstable where month(datum) = 7");

Und nun möchte ich eine Ausgabe nach folgendem Stil:

Januar

1.Meldung
2.Meldung
3.usw

Februar

1.Meldung
2.Meldung
3.usw

Ich habe das ganze jetzt mal so versucht:

$daten = MySQL_QUERY("select headline,month(datum) as monat from $newstable GROUP by monat DESC");

while ($ausgabe = mysql_fetch_array($daten)) {


echo $ausgabe[1]."<br>";}


Aber dann bekomme ich ja nur die Monate ja nicht als ausgeschriebenes Wort, sondern als Zahl. Wie wandle ich das jetzt wieder um ?...könnte da nochmals eure Hilfe gebrauchen (Auch wenn ich bestimmt nerve und gar nix kapiere


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:04 Uhr.