Avatar billede vind Nybegynder
22. februar 2004 - 16:03 Der er 6 kommentarer og
2 løsninger

PHP-script fungerer ikke - fødselsdagsliste

Hej Eksperter.
Jeg har et PHP-problem, som jeg ikke selv kan løse.
Jeg har en database med felterne: navn, efternavn, birthday. "birthday" er i dato-format (yyyy-mm-dd).
Den vil jeg gerne have ud i ren listeform, men sådan:
_________________________________
|Fødselsdag:  | Navn/efternavn  |
|              |                |
|5. januar    | Enelleranden    |
|23. januar    | Enheltfjerde    |
|________________________________| 

Altså sådan at scriptet ser 1980-01-05 skriver den bare 5. januar. Er dette mon muligt??
Vil gerne af med flere points hvis det er... :)

På forhånd tak.
Mvh.
Andreas Vind
Avatar billede vind Nybegynder
22. februar 2004 - 16:04 #1
hov det blev vist ikke helt som jeg havde forestillet mig med den lille "tabel", men håber I alligevel kan se hvad jeg mener... :)

/Vind
Avatar billede thedeathart Nybegynder
22. februar 2004 - 16:12 #2
hmm, ville gerne se koden, og vide om du bruger MySQL..
Avatar billede 7th Praktikant
22. februar 2004 - 16:15 #3
Avatar billede limemedia Nybegynder
22. februar 2004 - 16:22 #4
utestet, ORDER BY TO_DAYS(CONCAT('2000-',bm,'-',bd)) er lavet for at sortere datoer uden at tage højde for alderen på den pågældende person

jeg tester lokalt


<?php
    $months = array('januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');

    $sql = mysql_query("
        SELECT navn, efternavn, DATE_FORMAT(birthday, '%d') AS bd, DATE_FORMAT(birthday, '%c') AS bm
        FROM table
        ORDER BY TO_DAYS(CONCAT('2000-',bm,'-',bd))
    ") or die(mysql_error);

    $res = array();
    if (mysql_num_rows($sql)) {
        while ($foo = mysql_fetch_assoc($sql)) $res = $foo;
    }
?>

<table border="1">
<tr>
<td>Dato</td>
<td>Navn</td>
</tr>

<?php
    for ($i=0; $i<sizeof($res); $i++) {
?>
<tr>
<td><?php echo $res[$i]['bd'];?>. <?php echo $months[$res[$i]['bm']]; ?></td>
<td><?php echo $res[$i]['navn']; ?> <?php echo $res[$i]['efternavn']; ?></td>
</tr>

<?php
    }
?>
</table>

---
Se også : http://www.mysql.com/doc/en/Date_and_time_functions.html
Avatar billede 7th Praktikant
22. februar 2004 - 16:30 #5
$res = mysql_query ("SELECT * , DATE_FORMAT(birthday , \"%d %M %Y\") AS dansk_dato FROM din_tabel ORDER BY birthday") or die (mysql_error ());
$row = mysql_fetch_array ($res);

$months = array ("januar" , "februar" , "marts" , "april" , "maj" , "juni" , "juli" , "august" , "september" , "oktober" , "november" , "december");

echo "Dato: ".str_replace (date("F") , $months[date("n") - 1] , $row['dansk_dato']);
Avatar billede limemedia Nybegynder
22. februar 2004 - 16:39 #6
testede og fandt nogle bugs - her en testet kode

<?php
    $months = array('januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');

    $sql = mysql_query("
        SELECT navn, efternavn, DATE_FORMAT(birthday, '%d') AS bd, DATE_FORMAT(birthday, '%c') AS bm
        FROM birthday
        ORDER BY TO_DAYS(CONCAT('2000-',DATE_FORMAT(birthday, '%c'),'-',DATE_FORMAT(birthday, '%d')))
    ") or die(mysql_error());

    $res = array();
    if (mysql_num_rows($sql)) {
        while ($foo = mysql_fetch_assoc($sql)) $res[] = $foo;
    }
?>

<table border="1">
<tr>
<td>Dato</td>
<td>Navn</td>
</tr>

<?php
    for ($i=0; $i<sizeof($res); $i++) {
?>
<tr>
<td><?php echo $res[$i]['bd'];?>. <?php echo $months[$res[$i]['bm']-1]; ?></td>
<td><?php echo $res[$i]['navn']; ?> <?php echo $res[$i]['efternavn']; ?></td>
</tr>

<?php
    }
?>
</table>
Avatar billede vind Nybegynder
22. februar 2004 - 17:00 #7
WAUW! Det virker bare perfekt!
Jeg siger mange, mange tak og du skal selvfølgelig have dine helt fortjente points!

Mvh.
Andreas.
Avatar billede limemedia Nybegynder
22. februar 2004 - 17:03 #8
;)
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