Avatar billede diablo925 Nybegynder
07. februar 2009 - 17:59 Der er 22 kommentarer og
1 løsning

Udregn alder hjælp

jeg har last en masse tråde her inde om hvordan man udregner en persons alder

men har læst dem og fatter hat

den skal hente den fra mysql da alderen skal vises på en anden side ene den hvor man skriver sin alder

1 hvordan skal mysql se ud
2 hvordan skal den hente det fra mysql
3 hvordan ser php koden ud

håber der en som vil hjælpe
og skrive så jeg forstå det :)

//Diablo925
Avatar billede kjeldsted Novice
07. februar 2009 - 18:01 #1
Jeg skal lige vide...

Har du lavet funktion til at forbinde til server og gemme?
Avatar billede diablo925 Nybegynder
07. februar 2009 - 18:09 #2
ja den er lavet og har også fået gemt data så den kan vise ddmmyyyy men mangler den udregner den persons alder som er min

det skal laves til en ansøgnings side 

19031985 alder 23år
Avatar billede kjeldsted Novice
07. februar 2009 - 18:34 #3
Det nemmeste ville være at gemme datoen som unix timestamp med mktime() (mktime(0,0,0,m,d,y)).

Så ville det blive noget nemmere at udregne forskellen...
Avatar billede diablo925 Nybegynder
07. februar 2009 - 18:42 #4
tager hvis i skriver som virker
Avatar billede psychopixi Nybegynder
07. februar 2009 - 18:55 #5
Jeg vil tro du kan bruge noget i stil med følgende:
<?php
$date = mktime(0,0,0,$month,$day,$year);
$alder = floor((time()-$date)/(60*60*24*365.24));
echo $alder;
?>

Note: der er gennemsnitligt 365,24 dage i et år.
Avatar billede diablo925 Nybegynder
07. februar 2009 - 20:31 #6
ok men skal den skrives der hvor man skriver sin ansøgning

eller skal den bruges til at omregne det data som kommer mysql ?
Avatar billede arne_v Ekspert
08. februar 2009 - 03:29 #7
SELECT name,YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS age FROM person;

henter alderen fra MySQL (sæt selv en WHERE på hvis nødvendigt)
Avatar billede arne_v Ekspert
08. februar 2009 - 03:33 #8
Det duer ikke at dividere sekund differencen med 365.24 dage, fordi 365 dage kan være 1 år eller 0 år afhængig af om der er skudår eller ej imellem.
Avatar billede psychopixi Nybegynder
08. februar 2009 - 11:46 #9
#6
Skal bruges til at omregne data der kommer fra MySQL.

#7
Udmærket løsning.

#8
Blot en note: Løsningen med at bruge sekund differencen giver en maksimal afvigelse på 17,46 timer i forhold til det korrekte.

#0
Så vidt jeg husker skal dato formatet enten være YYYY-MM-DD eller sekunder siden unix timestamp (evt. vha. mktime) for at MySQL kan opfatte datoen korrekt.

Med arne_v's forslag bliver den endelige løsning således noget i retningen af:
<?php
$username = "_BRUGERNAVN_";
$result = mysql_query("SELECT user,birthday,YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS age FROM users WHERE user = '$username'");
$r=mysql_fetch_array($result);
echo "User: $username<br/>Alder: " . $r["age"] . "<br/>Fødselsdag: " . $r["birthday"] . "<br/>";
?>
Avatar billede diablo925 Nybegynder
08. februar 2009 - 14:02 #10
<?php
include("config.php");
$query = mysql_query("SELECT * FROM ansog ORDER BY id");
?>
<?php
while($row = mysql_fetch_array($query))
{
?>
<TABLE class="high" width=40% border=1><TR><TD width=25%>Navn: <? echo $row['Navn']; ?> <? echo $row['Efternavn']; ?></TD><TD width=25%>F&oslash;dt: <? echo $row['Alder']; ?>(HER SKAL ALDER STÅ)</TD><TR><TD width=25%>Nick: <B><FONT COLOR=Red><? echo $row['Brugernavn']; ?></FONT></B></TD><TD width=25%>Email: <B><FONT COLOR=Red><? echo $row['Mail']; ?></FONT></B></TD></TR><TR><TD width=25%>IP:<? echo $row['Ip']; ?></TD><TD width=25%>Dato af ans&oslash;gningen:<? echo $row['Dato']; ?></TD></TR><TR>
<TD colspan=2><? echo $row['Tekst']; ?></td></TR>
</TABLE>
<?php
}
?>

har sådan en gang rodet kode

hvordan skal jeg skrive det ??
Avatar billede psychopixi Nybegynder
08. februar 2009 - 14:38 #11
Følgende virker. Følgende går ud fra at brugerens fødselsdag står i variablen "birthday" i database tabellen. Hvis den hedder noget andet i databasen må du selv ændre det i MySQL queryen nedenfor.
Jeg har samtidig rettet din kode til validerbar HTML.

<?php
include("config.php");
$query = mysql_query("SELECT *,birthday,YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS Alder FROM ansog ORDER BY id");
while($row = mysql_fetch_array($query))
{
    $navn = $row["Navn"];
    $alder = $row["Alder"];
    $brugernavn = $row["Brugernavn"];
    $mail = $row["Mail"];
    $ip = $row["Ip"];
    $dato = $row["Dato"];
    $tekst = $row["Tekst"];
    echo "
    <table class=\"high\" width=\"40%\" border=\"1\">
        <tr>
            <td style=\"width:25%;\">Navn: $navn $efternavn</td>
            <td style=\"width:25%;\">F&oslash;dt: $alder</td>
        </tr>
        <tr>
            <td style=\"width:25%;\">Nick: <strong><span style=\"font-color:red;\">$brugernavn</span></strong></td>
            <td style=\"width:25%;\">Email: <strong><span style=\"font-color:red;\">$mail</span></strong></td>
        </tr>
        <tr>
            <td style=\"width:25%;\">IP: $ip</td>
            <td style=\"width:25%;\">Dato af ans&oslash;gningen: $dato</td>
        </tr>
        <tr>
            <td colspan=\"2\">$tekst</td>
        </tr>
    </table>";
}
?>
Avatar billede arne_v Ekspert
08. februar 2009 - 15:18 #12
Jo mere jeg tænker over det så tror jeg heller ikke at:

SELECT name,YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS age FROM person

er god - dage må kunne få forskellige dagnumre alt efter skudaar.

SELECT name,YEAR(NOW())-YEAR(birthday)-IF(MONTH(NOW())*31+DAYOFMONTH(NOW())<MONTH(virthday)*31+DAYOFMONTH(birthday),1,0) AS age FROM person

må give samme dag nummer for samme dag og dermed virke (det er ligegyldigt at der er huller i rækkefølgen).
Avatar billede diablo925 Nybegynder
08. februar 2009 - 15:27 #13
tak psychopixi det virker

vær sød at smide et svar så du kan få dine point
Avatar billede psychopixi Nybegynder
08. februar 2009 - 16:29 #14
Velbekomme:)
Jeg kommer til at se at jeg har glemt "efternavn" i min kode, men det kan du jo selv lige tilføje:D
Avatar billede diablo925 Nybegynder
08. februar 2009 - 16:59 #15
har jeg gjort står med problem nr 2 nu

men det er bare at side og prøve

skal have lavet en comment del hvor man kan skrive og bedømme folk

og skal have lavet så det man skriver følger med til den ansøgning så noget med de 2 id skal kodes sammen vel
Avatar billede psychopixi Nybegynder
08. februar 2009 - 17:03 #16
#15
Hvis jeg forsår dig ret er det vel blot at generere et input felt, der indeholder ansøgningen ID-nr fra databasen, så inputtet kan identificeres til den rigtige ansøgning. Det burde være relativt simpelt:)
Avatar billede psychopixi Nybegynder
08. februar 2009 - 17:20 #17
Hvis jeg har forstået dig rigtigt, vil denne kode gøre det du beder om:
<?php
$query = mysql_query("SELECT *,birthday,YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS Alder FROM ansog ORDER BY id");
while($row = mysql_fetch_array($query))
{
    $id = $row["id"];
    $navn = $row["Navn"];
    $efternavn = $row["Efternavn"];
    $alder = $row["Alder"];
    $brugernavn = $row["Brugernavn"];
    $mail = $row["Mail"];
    $ip = $row["Ip"];
    $dato = $row["Dato"];
    $tekst = $row["Tekst"];
    echo "
    <form action=\"changes.php\" method=\"post\">
        <table class=\"high\" width=\"40%\" border=\"1\">
            <tr>
                <td style=\"width:25%;\">Navn: $navn $efternavn</td>
                <td style=\"width:25%;\">Alder: $alder</td>
            </tr>
            <tr>
                <td style=\"width:25%;\">Nick: <strong><span style=\"font-color:red;\">$brugernavn</span></strong></td>
                <td style=\"width:25%;\">Email: <strong><span style=\"font-color:red;\">$mail</span></strong></td>
            </tr>
            <tr>
                <td style=\"width:25%;\">IP: $ip</td>
                <td style=\"width:25%;\">Dato af ans&oslash;gningen: $dato</td>
            </tr>
            <tr>
                <td colspan=\"2\">$tekst </td>
            </tr>
            <tr>
                <td colspan=\"2\"><textarea rows=\"4\" cols=\"65\" name=\"note\">Skriv note her...</textarea></td>
            </tr>
            <tr>
                <td colspan=\"2\" style=\"text-align:right;\">
                    <input type=\"hidden\" name=\"id\" value=\"$id\"/>
                    <input type=\"submit\" name=\"submit\" value=\"Gem ændringer\"/>
                </td>
            </tr>
        </table>
    </form>";
}
?>

Herefter kan du i changes.php hente variablerne, således:
<?php
$database_id = $_POST["id"];
$ansog_note = $_POST["note"];

if($_POST["submit"]){
    // Der er trykket submit....
}
?>
Avatar billede diablo925 Nybegynder
08. februar 2009 - 18:35 #18
?

inde i den der
changes.php

hvad skal jeg skrive
Avatar billede psychopixi Nybegynder
08. februar 2009 - 18:42 #19
Du skal vel ligge noten i databasen. Men jeg har måske misforstået hvad du vil?
Avatar billede diablo925 Nybegynder
08. februar 2009 - 18:47 #20
ja har jeg også

og lavet en
include("config.php");
mysql_query("INSERT INTO ansog (id, Note) values ('$_POST[id]', '$_POST[note]')");
Avatar billede diablo925 Nybegynder
09. februar 2009 - 17:03 #21
hmm hvis jeg fjerner id i den der insert vil den godt skrive til mysql

men så bliver der lavet en ny ansøgning hvor det står

hvis jeg skriver den med id sker der ikke noget nogle ide hvorfor den gør det ?
Avatar billede psychopixi Nybegynder
09. februar 2009 - 17:20 #22
Du skal bruge UPDATE... altså noget i retningen af:

mysql_query("UPDATE ansog SET Note = '$note' WHERE id = '$id'");

For nærmere info, se:  http://dev.mysql.com/doc/refman/5.0/en/update.html
Avatar billede benjaboy Nybegynder
02. august 2009 - 22:16 #23
Hej.
Har lige prøvet med denne kode:

$result = mysql_query("SELECT brugernavn,alder,YEAR(NOW())-YEAR(alder)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(alder),1,0) AS age FROM brugere WHERE id = '".$_SESSION['brugerid']."'");
$r=mysql_fetch_array($result);
echo "User: " . $r["brugernavn"] . "<br/>Alder: " . $r["age"] . "<br/>Fødselsdag: " . $r["alder"] . "<br/>";

Men den giver dette:
User: BenjaBoy
Alder:
Fødselsdag: 20-11-1992

En der kan hjælpe? :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester