Alter berechnen

proloser

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem:

Ich trage Geburtsdatums in eine Datenbank und möchte diese wie bei Singelbörsen filtern.

zB zwischen 18 und 30 Jahren

Wie man vom Geburtsdatum zum Alter kommt ist mir klar, nur hier läuft das etwas anderst und weiss nicht wie ich das am besten mache!

MfG proloser
 
Code:
// $min = 18;
// $max = 31;

SELECT
 *
FROM
 Tabelle
WHERE
 Datum BETWEEN DATE_SUB(CURDATE(), ".$max." YEARS) AND DATE_SUB(CURDATE(), ".$min." YEARS)

Könnte gehen, ungetestet und nur grad so eingefallen :)
 
Das ganze sieht bei mir jetzt so aus:

PHP:
$res=mysql_query("SELECT * FROM `user` WHERE `geburtsdatum` BETWEEN DATE_SUB(CURDATE(), ".$_POST["submit_min"]." YEARS) AND DATE_SUB(CURDATE(), ".$_POST["submit_max"]." YEARS)"); 
while($row=mysql_fetch_array($res)) {
....
....
}

und bekomme folgende Fehlermeldung:

Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Localhost\xampp\htdocs\site\suchen.php on line 10
 
Das liegt daran, dass der Query ugültig ist. Schreib mal
PHP:
mysql_query(...) OR die(mysql_error());
und gib die Fehlermeldung aus.
 
Zudem solltest du die Eingabewerte filtern und beispielsweise in ein Integer-Datentyp konvertieren:
PHP:
"SELECT * FROM `user` WHERE `geburtsdatum` BETWEEN DATE_SUB(CURDATE(), ".(int)$_POST["submit_min"]." YEARS) AND DATE_SUB(CURDATE(), ".(int)$_POST["submit_max"]." YEARS)"
 
Hab ein paar sachen ausprobiert aber mit dieser Fehlermeldung komm ich ehlich gesagt auch nicht wirklich weiter.

Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Localhost\xampp\htdocs\site\suchen.php on line 10
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 '18 YEARS) AND DATE_SUB(CURDATE(), 30 YEARS)' at line 1
 
Zuletzt bearbeitet:
Ich hab nochmals im Forum nach solchen Problem gesucht und auch etwas gefunden das scheinbar funktionieren sollte, bei mir aber nicht! :confused:


PHP:
$res=mysql_query("SELECT `geburtsdatum`, DATEDIFF(`geburtsdatum` + INTERVAL (YEAR(CURRENT_DATE) - YEAR(`geburtsdatum`) + IF(DATE_FORMAT(CURRENT_DATE, "%m%d") > DATE_FORMAT(`geburtsdatum`, "%m%d"), 1, 0)) YEAR, CURRENT_DATE) AS `age` FROM `accounts` BETWEEN '".$_POST["min"]."' AND '".$_POST["max"]."'");                                                                                      
while($row=mysql_fetch_array($res) OR die(mysql_error())) {  
....
....
}

MfG proloser
 
Zuletzt bearbeitet:
Also der Code aus dem letzten Post kann und wird nicht funktionieren. Du hast den Fehler eh schon richtig ausgegeben,
jetzt musst du ihn nur noch beheben :)
Schau dir mal das Manual zu den verwendeten Funktionen an, ich kenne mich da nicht wirklich aus.
 
Danke, aber wenn ich wüsste wo der Fehler ist und nicht schon stundenlang beschäftigt wäre das hin zu bekommen, würd ich nicht fragen! ;)
 

Neue Beiträge

Zurück