Gå til innhold

script som oppdaterer alder


Anbefalte innlegg

Jeg har en side der folk kan registrere seg. Der må de blant annet skrive inn alder, problemet med dette er at alderen ikke oppdateres...hvordan kan jeg lage et script som oppdaterer alderen slik som her på forumet? Jeg vil også lage en sånn liste der de velger dato, dag, år fra en liste, men jeg har aldri laget noe sånt. Hvordan går jeg frem for å få til dette?

Lenke til kommentar
Videoannonse
Annonse

tror jeg har funnet et greit script som regner ut alder i alle fall:

 

<?php
function alder($y,$m,$d) {
  list($now_d,$now_m,$now_y) = explode('.',date('d.m.Y'));

  if(($m > $now_m) || ($m == $now_m && $now_d < $d))
        $age = $now_y - $y  - 1;
   else
       $age = $now_y - $y;

    return $age;
}

$alder = alder($dato,$maned,$aar)

?>

 

Er det mullig å bruke dette på en fornuftig måte til dette mon tro?

 

 

EDIT: Tror jeg har en idé: brukeren velger fødselsdag fra en <select> meny (dd.mm.åå ). Hvis dagen i dag er lik dd.mm i databasen (finner ut ved hjelp av date()), sett i gang skriptet over og UPDATE row 'en alder med den nye infoen etterpå.

 

Jeg er ikke sikker på hvordan jeg skal skrive denne koden i praksis, men virker dette logisk?

Endret av Tha_Zaynt
Lenke til kommentar

Du må ha et felt i databasen som er DATETIME, hvor du legger inn fødselsdatoen...

 

På registreringssiden, ha du tre dropdownbokser, med dato, måned og år for når de er født (Se kontrollpanel->endre profil på dette forumet).

Legg dette inn i en variabel, på formatet År-Måned-dato, og legg det inn i databasen...

 

Når du skal ha alderen til en bruker, splitter du denne strengen, og sender det inn i funksjonen.

Evt. kan du lage tre felt i databesen, som hver inneholder, dag, måned og år, men dette er unødvendig.

Lenke til kommentar
gjør curdate() at datoen i mysql-databasen er oppdatert hele tidden, eller trenger jeg ikke å ha den verdien lagret?

Ja.

 

Jmf. den lenken du fikk, kan du bruke:

 

MySQL provides several functions that you can use to perform calculations on dates, for example, to calculate ages or extract parts of dates. 

To determine how many years old each of your pets is, compute the difference in the year part of the current date and the birth date, then subtract one if the current date occurs earlier in the calendar year than the birth date. The following query shows, for each pet, the birth date, the current date, and the age in years. 

mysql> SELECT name, birth, CURDATE(),
   -> (YEAR(CURDATE())-YEAR(birth))
   -> - (RIGHT(CURDATE(),5)<RIGHT(birth,5))
   -> AS age
   -> FROM pet;
+----------+------------+------------+------+
| name     | birth      | CURDATE()  | age  |
+----------+------------+------------+------+
| Fluffy   | 1993-02-04 | 2003-08-19 |   10 |
| Claws    | 1994-03-17 | 2003-08-19 |    9 |
| Buffy    | 1989-05-13 | 2003-08-19 |   14 |
| Fang     | 1990-08-27 | 2003-08-19 |   12 |
| Bowser   | 1989-08-31 | 2003-08-19 |   13 |
| Chirpy   | 1998-09-11 | 2003-08-19 |    4 |
| Whistler | 1997-12-09 | 2003-08-19 |    5 |
| Slim     | 1996-04-29 | 2003-08-19 |    7 |
| Puffball | 1999-03-30 | 2003-08-19 |    4 |
+----------+------------+------------+------+

 

Så bare se på denne, og tilpass den til din tabell. Du trenger bare kolonnene name og birth, CURDATE() og age legges til automatisk av mySQL i resultatet av spørringen. (De blir ikke lagt til i tabellen, og det er heller ingen vits, fordi de forandrer seg). Dermed får du alltid oppdatert alder når du kjører denne spørringen.

 

MVH Audun

Lenke til kommentar

Ta å lagre brukers fødselsdato i år, måned og dag, deretter setter du inn disse som parametere i denne funksjonen:

<?php
function AgebyDayMonthYear($day, $month, $year)
{

//By dabear

   $currentYear = date('Y');
   $currentMonth = date('m');
   $currentDayofMonth = date('d');


   if($currentMonth > $month)
   {
   
   
       return ($currentYear - $year);
   
   
   }
   elseif($currentMonth < $month)
   {
 
           return($currentYear - $year -1);
   
   }
   else // ev. elseif($currentMonth == $month)
   {
     return($currentDayofMonth >= $day) ? ($currentYear - $year) : ($currentYear - $year -1);

   }
   
   


}


//bruk::
//finn $day, $month og $year
echo 'brukeren er ' . AgebyDayMonthYear($day, $month, $year) . 'år gammel';

?>

Lenke til kommentar

Jeg har fødselsdatoen lagret i en row som heter dato og prøvde med denne spørringen uten at det funka:

 

<?php
include("config.php");

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
       or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$q = mysql_query("SELECT dato, CURDATE(),(YEAR(CURDATE())-YEAR(dato))
   (RIGHT(CURDATE(),5)<RIGHT(dato,5))
AS age
   FROM users WHERE brukernavn = 'zaynt' ");

$row = mysql_fetch_array(mysql_query($q));

echo $row['dato'];

?>

 

feilmelding:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/sjurvaag/nisselink.sjurvaage.com/age.php on line 13

 

Mulig jeg er på bærtur nå, men er det noen som kan være så snill å hjelpe meg å finne hvor feilen ligger?

Lenke til kommentar

prøvde spørringen nedenfor, men ingenting skjer...må den ikke skrives ut på noen måte?

 

<?php
include ("config.php");

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$q = mysql_query("SELECT dato,CURDATE(),(YEAR(CURDATE()) - YEAR(dato))-(RIGHT(CURDATE(),5)<RIGHT(dato,5)) AS age FROM users WHERE brukernavn = 'zaynt' ")  or die("Error: " . mysql_error());
?>

Lenke til kommentar

fikk ikke ut noe av dette heller..:

 

<?php
include ("config.php");

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$q = mysql_query("SELECT dato,CURDATE(),(YEAR(CURDATE()) - YEAR(dato))-(RIGHT(CURDATE(),5)<RIGHT(dato,5)) AS age FROM users WHERE brukernavn = 'zaynt' ")  or die("Error: " . mysql_error());

echo $row['age'];
?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...