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.
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.
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?
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?
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.
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'
Aihe on jo aika vanha, joten et voi enää vastata siihen.