Archiv verlassen und diese Seite im Standarddesign anzeigen : Anzeige der User die im Jhar 2002 Mitglied geworden sind
Sven4972 07-01-2007, 21:07 Hallo,
ich lasse mir per folgendem Code die User nach dem Eintrittsdatum anzeigen:
<?php
include ('config.php');
$abfrage = "SELECT eintritt, nickname FROM mitglieder
ORDER BY eintritt DESC";
$ergebnis = mysql_query($abfrage);
echo "<table id='anmeldetabelle'><tr>";
echo "<th class='links'>Nickname</th>";
echo "<th class='rechts'>Eintrittsdatum</th>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td class='links'>";
echo $row ->nickname;
echo "</td><td class='rechts'>";
echo $row ->eintritt;
}
echo "</td></tr></table>";
?>
Was muss geändert werden, damit nur die User ausgegeben werden,
die im Jahr 2002 Mitglied geworden sind?
Die Spalte Eintritt hat den Spaltentyp DATE in der MySQL Datenbank.
Grüße von Sven
WHERE eintritt LIKE '%2002%'
Statt dem 2002 eine Variable wenn es auch für ein anderes Datum gelten soll.
Sven4972 07-01-2007, 21:53 Hallo,
danke für Deine Antwort.
Aber es funktioniert nicht, ich erhalte folgende Fehlermeldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in J:\xampp\mitglieder\5jahre.php on line 26
<?php
include ('config.php');
$abfrage = "SELECT eintritt, nickname FROM mitglieder
ORDER BY eintritt WHERE eintritt LIKE '%2002%'";
$ergebnis = mysql_query($abfrage);
echo "<table id='anmeldetabelle'><tr>";
echo "<th class='links'>Nickname</th>";
echo "<th class='rechts'>Eintrittsdatum</th>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td class='links'>";
echo $row ->nickname;
echo "</td><td class='rechts'>";
echo $row ->eintritt;
}
echo "</td></tr></table>";
?>
Zeile 26 ist diese:
while($row = mysql_fetch_object($ergebnis))
Was läuft da denn falsch?
Grüße von Sven
ist eigentlich WHERE eintritt BETWEEN 2003 AND 2001 performanter?
das lässt sich dann ja auch bei timestamps oder ähnlichem benutzen
@Sven
schau Dir mal ein MySql Manual an, die Reihenfolge stimmt bei Dir nicht. :)
@zerni
Da es ein Datumsfeld ist müsste er das Format genau angeben. Weiss nicht ob es nur so einfach geht mit der Angabe der Jahreszahl. Aber wenn es sich nicht um 100000 User oder mehr handelt kann man das auch vernachlässigen. :)
onemorenerd 07-01-2007, 22:16 DATE-Spalten mit LIKE zu vergleichen kann ja wohl kaum die beste Lösung sein. Wie wärs mit WHERE YEAR(eintritt) = 2002?
Ach Sven, nochwas....
dem Namen Deiner php-Datei entnehme ich, dass die Page alle Jahre neu aufbaut wird, sind ja immer 5 Jahre.
Mach:
$datum = getdate();
$vergleich = $datum[year]-5;
und statt dem fixen Wert 2002 setzt die Variable $vergleich ein.
Original geschrieben von onemorenerd
DATE-Spalten mit LIKE zu vergleichen kann ja wohl kaum die beste Lösung sein. Wie wärs mit WHERE YEAR(eintritt) = 2002?
Stimmt, daran hab ich gar nicht gedacht. :)
Sven4972 08-01-2007, 08:30 Hallo,
dankeschön für Eure Hilfe.
Jetzt läuft es.
<?php
include ('config.php');
$datum = getdate();
$vergleich = $datum[year]-5;
$abfrage = "SELECT nickname, date_format(eintritt, '%d.%m.%Y')
AS datum FROM mitglieder WHERE YEAR(eintritt) = $vergleich
ORDER BY eintritt";
$ergebnis = mysql_query($abfrage);
echo "<table id='anmeldetabelle'><tr>";
echo "<th class='links'>Nickname</th>";
echo "<th class='rechts'>Eintrittsdatum</th>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td class='links'>";
echo $row ->nickname;
echo "</td><td class='rechts'>";
echo $row ->datum;
}
echo "</td></tr></table>";
?>
Grüße von Sven
Original geschrieben von onemorenerd
DATE-Spalten mit LIKE zu vergleichen kann ja wohl kaum die beste Lösung sein. Wie wärs mit WHERE YEAR(eintritt) = 2002?
ah genau das YEAR() hatte ich gesucht, aber da ich mir nicht sicher war ob es das gibt, hab ich es lieber nicht gepostet :)
Original geschrieben von Godfrey
Ach Sven, nochwas....
dem Namen Deiner php-Datei entnehme ich, dass die Page alle Jahre neu aufbaut wird, sind ja immer 5 Jahre.
Mach:
$datum = getdate();
$vergleich = $datum[year]-5;
und statt dem fixen Wert 2002 setzt die Variable $vergleich ein. ähm,
$vergleich = date('Y');
oder direkt
WHERE YEAR(eintritt) = ' . date('Y') . '...
aber naja...
onemorenerd 08-01-2007, 21:53 die -5 aber nicht vergessen ;)
|