Avatar billede tjensen Nybegynder
15. december 2004 - 17:44 Der er 6 kommentarer og
1 løsning

While løkke løkke ændre ikk værdi

Hey Guru'er

Jeg har skrevet følgende:

<?php
include "funktion/db.php";
$sql = mysql_query("SELECT fornavn, efternavn, fdag FROM personer ORDER BY fdag ASC LIMIT 5");
include "funktion/luk_db.php";
?>
<table id="fdag_main">
  <tr>
    <td colspan="3" align="center"><p id="p_fdag"><b>5 næste fødselsdage:</b></p></td></tr>
<?php
while($row = mysql_fetch_array($sql)) {
  $fdag = date('d.M', $row['fdag']);
  $alder = date('Y')-date('Y', $row['fdag'])+1;
?>
  <tr>
    <td><p id="p_fdag"><?php echo "{$row['fornavn']} {$row['efternavn']}"?></p></td>
    <td><p id="p_fdag"><?php print $fdag?></p></td>
    <td><p id="p_fdag"><?php echo "{$alder} år"?></p></td></tr>
<?php
}
?>
</table>

Hvilket giver dette, hvorfor får jeg den samme dato og alder?

navn1 01.Jan 35 år
navn2 01.Jan 35 år
navn3 01.Jan 35 år
navn4 01.Jan 35 år

Fdag i MySQL er opbygget således:
  `fdag` date NOT NULL default '0000-00-00'

Eksempel på en værdi i db'en 1954-05-13, hvilket også er den første der bliver hentet igennem løkken.
Avatar billede jakoba Nybegynder
15. december 2004 - 18:03 #1
De tegnformater der bruges i MySQL er ikke umiddelbart kompatible med dem der bruge is php.

i dette tilfælde er løsningen no at gøre det hele i MySQL:

<?php
include "funktion/db.php";
$sql = mysql_query("SELECT fornavn, efternavn, fdag, Year(NOW())-YEAR(fdag) AS fodselsdag FROM personer ORDER BY fdag ASC LIMIT 5");
include "funktion/luk_db.php";
?>
<table id="fdag_main">
  <tr>
    <td colspan="3" align="center"><p id="p_fdag"><b>5 næste fødselsdage:</b></p></td></tr>
<?php
while($row = mysql_fetch_array($sql)) {
  $fdag = $row['fdag'];
  $alder = $row['alder'] +1;
?>
  <tr>
    <td><p id="p_fdag"><?php echo "{$row['fornavn']} {$row['efternavn']}"?></p></td>
    <td><p id="p_fdag"><?php print $fdag?></p></td>
    <td><p id="p_fdag"><?php echo "{$alder} år"?></p></td></tr>
<?php
}
?>

mvh JakobA
Avatar billede jakoba Nybegynder
15. december 2004 - 18:05 #2
UPS.  AS fodslesdag  skulle naturligvis være  AS alder  (i SQL kommandoen)
Avatar billede tjensen Nybegynder
15. december 2004 - 18:25 #3
Ja, okay det giver endlig lidt mening! Har satme kigget meget igennem uden lige at kunne tråde det sammen.

Hvordan ændre man så lettest på opstillingen af yyyy-mm-dd?
Altså så man via php kan udskrive det f.eks dd/mm - yyyy
Avatar billede tjensen Nybegynder
15. december 2004 - 18:31 #4
Argh, date_format!

Ellers tak!

jakoba smid lige et svar, så du kan få nogle hurtige points!
Tak for hjælpen!
Avatar billede jakoba Nybegynder
15. december 2004 - 18:32 #5
Igen en SQL funktion  DATE_FORMAT(date,format)
    DATE_FORMAT( fdag, '%e/%c %Y') AS fdag_formatteret

  http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
( det er i det hele taget en god side :-))

mvh JakobA
Avatar billede jakoba Nybegynder
15. december 2004 - 18:32 #6
nå du fandt den :)
Avatar billede tjensen Nybegynder
15. december 2004 - 18:35 #7
Ja, prøver at vende mig af med bare spørge og spørge... Er vel gammel nok til at læse lidt engelsk selv :)
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