DB Abfrage mit Alter zwischen 20 und 30

J

joky_joky

Hallo ich habe ein Problem das ich irgendwie nicht hinbekomme
ich muss aus eine Datenbank alle Datensätze heraussuchen bei denen
das Alter der User zwischen 20 und 30 Jahren liegt.
Dazu mache ich es momentan so das wenn ich eine Datensatz will wo der
User zwischen sagen wir mal 18 und 20 Jahre alt ist das ich das Geburtsdatum
des users umdrehe also so 19860805 wäre dann der 05.08.1986 und das selbe
bei den 20 Jahren und nun zu meiner Abfrage
die so aussieht.
PHP:
$tag = date("d");
$monat = date("m");
$jahr = date("Y");

$altermin = $jahr - $altermin;  //$altermin ist die Variable die per post übergebe
$altermax = $jahr - $altermax; //$altermax ist die Variable die per post übergebe
$alter_min = "$altermin$monat$tag";
$alter_max = "$altermax$monat$tag";

$sqlab = "SELECT * FROM $table WHERE";
$sqlab .= " Geb >= $alter_min AND Geb <= $alter_max";

$res = mysql_db_query("$database", "$sqlab");
$num = mysql_num_rows($res);

 	 for ($i=0; $i<$num; $i++)
  	 {
	 $nachname = mysql_result($res, $i, "Nachname");
	 $vorname = mysql_result($res, $i, "Vorname");
          $blablaundsoweiter = mysql_result($res, $i, "blablaundsoweiter");

	 echo "$nickname, $nachname";
          }
mysql_close($db);

so nun es geht das er diese Abfrage ausführt aber nur wenn ich will das er mir alle
zeigt die z.B. älter als 25 Jahre sind oder das er mir alle zeigt die jünger als 70 Jahre sind.
wenn ich jetzt aber eine bereich haben will z.B. alle von 20 bis 30 Jahren dann macht er mit das nicht mehr.

Kann mir jemand sagen warum ich dreh noch durch :confused:

MfG Joky_Joky
 
Hi,
auf die Lösung deines Problems lässt sich relativ leicht schließen, wenn man "zwischen" ist Englische übersetzt, und dann in der MySQL-Dokumentation sucht.. ;)

PHP:
$sqlab .= " Geb BETWEEN $alter_min AND $alter_max";

Ich bin mir aber nicht sicher, ob dabei auch die Datensätze erfasst werden, bei denen Geb = $alter_min / $alter_max ist. Das müsstest du nochmal testen.

Related Links:
MySQL-Vergleichoperatoren

Gruß
Marvin
 
Ok Marvin das mit dem Between ist loisch aber er macht es leider trotzdem so nicht.

Aber ich habe meinen Fehler jetzt gefunden.

Neue Abfrage
PHP:
Geb >= $alter_max AND Geb <= $alter_min
So geht es.
1. Ich habe die Variablen geändert.
2. Ich habe meine Abfrage verdreht.

Die alte Abfrage
PHP:
Geb >= $alter_min AND Geb <= $alter_max

Denn mit der alten Abfrage also wenn jetzt mein das alter_min z.B. 19860604 wäre
und das alter_max z.B. 19800604 wäre, dann kann das doch gar nicht gehen denn.
die DB sucht ja dann nach einem alter das Größer oder Gleich 19860604 ist und nach einem das Kleiner oder Gleich 19800604 ist. Und somit bekam ich die Falschen Wert.

Aber jetzt funktioniert es ja :)
Kommt Zeit kommt Rat.

MfG Joky_Joky
 
Zurück