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)
Anzeige der User die im Jhar 2002 Mitglied geworden sind [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




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

 
Godfrey
07-01-2007, 21:31 
 
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

 
zerni
07-01-2007, 21:54 
 
ist eigentlich WHERE eintritt BETWEEN 2003 AND 2001 performanter?

das lässt sich dann ja auch bei timestamps oder ähnlichem benutzen

 
Godfrey
07-01-2007, 22:10 
 
@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?

 
Godfrey
07-01-2007, 22:20 
 
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.

 
Godfrey
07-01-2007, 22:37 
 
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

 
zerni
08-01-2007, 16:00 
 
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 :)

 
TobiaZ
08-01-2007, 20:08 
 
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 ;)

 
TobiaZ
08-01-2007, 21:56 
 
jupp. ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:10 Uhr.