Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL, PHP ja ikä

Marbo [01.08.2008 10:13:11]

#

Eli nämä kolme asiaa pitäisi yhdistää keskenään. Iän kyllä saan laskettua mysql taulukosta, mutta, miten saisin yhdistettyä sitten tuon iän laskun hakukoneeseeni?

Eli esimerkiksi kun haetaan 17-20 v ihmistä tietokannasta, niin se laskee tällä hetkellä ihan vain miinuslaskulla ja täten ei tulosta ihan oikeita tietoja.

if(!empty($_POST['ika1']) && !empty($_POST['ika2']))
{
$ika1 = "".$_POST['ika1']."";
$ika2 = "".$_POST['ika2']."";

$date1 = date("Y", time());
$date2 = date("m-d", time());

$lasku1 = ($date1 - $ika1);
$lasku2 = ($date1 - $ika2);

$tulos1 = "$lasku1-01-01";
$tulos2 = "$lasku2-$date2";

   if($maara > 0)
   {
       $hakuehto .= " AND BETWEEN '$tulos2' AND '$tulos1'";
   } else {
      $hakuehto .= "ika BETWEEN '$tulos2' AND '$tulos1'";
       $maara++;

   	   }
}

olis kiva saada jotenki, että se laskisi oikein tuon iän. Meinaan kun nyt laittaa hakusanaksi vaikka 15 - 25 niin se ei ymmärrä sitä, että vielä 25v ihminen voi olla syntynyt 1982 vaan se laittaa sen, että olis 1983 syntynyt.

Lebe80 [01.08.2008 11:00:31]

#

Miksi tietokannassa on edes ikä -kenttä? miksei se ole syntymäaika? Tällöin haettava ikähaarukka muutettaisiin ensiksi "syntymäaika"-muotoon ja haravoitaisiin syntymäaikojen perusteella tulokset

edit:
oma moka, luin väärin, näyttäisikin koodin perusteella olevan juuri syntymäaika muodossa, vaikkakin kentän nimi "ika" viittaisi ikään eikä syntymäaikaan.

Antti Laaksonen [01.08.2008 11:01:30]

#

Tänään nuorin 15-vuotias on syntynyt 1.8.1993 ja vanhin 25-vuotias on syntynyt 2.8.1982. Koodisi näyttää muuten oikealta, mutta miksi muuttujassa $tulos1 on päivänä 01-01 eikä $date2?

Marbo [01.08.2008 11:47:15]

#

Antti Laaksonen kirjoitti:

Tänään nuorin 15-vuotias on syntynyt 1.8.1993 ja vanhin 25-vuotias on syntynyt 2.8.1982. Koodisi näyttää muuten oikealta, mutta miksi muuttujassa $tulos1 on päivänä 01-01 eikä $date2?

Hyvä kysymys, no mutta nyt se on korjattu. Mutta silti se näyttää että 25v ihmiset olis syntyny 1983, miten tämän korjaan?

Lebe80 [01.08.2008 13:06:02]

#

Mikähän sulla nyt on tuolla koodissa?

Tulosta php:lla itsellesi näkyviin nuo '$tulos1' ja '$tulos2' -muuttujat.

Tulosta myös sql:n query ( $hakuehto ). Nopesti ajateltuna tuosta AND sanan perästä puuttuu kentän nimi.

Antti Laaksonen [01.08.2008 13:16:56]

#

Tänään 25-vuotias voi olla syntynyt 2.8.1982 - 1.8.1983. Vuosi 1982 saadaan laskulla 2008 - 25 - 1, eli pitää vielä vähentää yksi. Tänään 15-vuotias voi olla syntynyt 2.8.1992 - 1.8.1993. Vuosi 1993 saadaan suoraan laskulla 2008 - 15.

Tarkka hakuehto voisi olla tällainen: ika > '1982-08-01' AND ika <= '1993-08-01'

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta