Avatar billede fredd Nybegynder
02. august 2004 - 16:13 Der er 12 kommentarer og
1 løsning

Omformulering af dato fra MySQL db

Hej eksperter...

Jeg har en MySQL db, hvori jeg har et dato felt. Når jeg udskriver resultatet af dato-feltet ser der således ud: år-måned-dag, f.eks. 2004-08-02. Mit spørgsmål er nu hvordan jeg får den til at omformulere datoen en så der i stædet ville stå: 2. august 2004 -hvordan får jeg den til det? I min kode står der iøjeblikket <?php echo $aa[dato] ?>.

/Frederik
På forhånd tak!
Avatar billede detox Nybegynder
02. august 2004 - 16:26 #1
Det gøres nemmest i mysql forespørgslen:

SELECT DATE_FORMAT(dato, '%d. %M %Y') as dato FROM .....
Avatar billede fredd Nybegynder
02. august 2004 - 16:32 #2
Ja, men virker det, hvis den også skal udskrive andet end datoer...
Avatar billede detox Nybegynder
02. august 2004 - 16:37 #3
Ja:

SELECT DATE_FORMAT(dato, '%d. %M %Y') AS dato, anden_data, tredie_data FROM .....

eller hvis du skal bruge alt (så skal du nok ændre navnet til fx 'mindato'):

SELECT *, DATE_FORMAT(dato, '%d. %M %Y') AS mindato FROM .....
Avatar billede fredd Nybegynder
02. august 2004 - 21:43 #4
Okay det virker, men jeg ville gerne have den at skrive danske månedsnavne i stedet for engelske.
Avatar billede fredd Nybegynder
02. august 2004 - 21:48 #5
- og uden 0 foran datoen.. [fx. 01. March 2004]..
Avatar billede detox Nybegynder
02. august 2004 - 22:25 #6
Ja, så vil jeg nok foretrække at trække datoen ud som unix time og formatere til vha. strftime(). Fx:

select unix_timestamp(dato) as unixtid from tabel

og så formatere med:

setlocale(LC_TIME, 'danish');
$dansk = (int)strftime("%d", $row['unixtid']) . strftime(". %B %Y", $row['unixtid']);

Ps: Jeg blev nød til at lave denne lille omgåelse, da %e ikke virker her på min windows. Hvis det virker hos dig kan du jo nøjes med:

strftime("%e. %B %Y", $row['unixtid'])
Avatar billede fredd Nybegynder
02. august 2004 - 22:38 #7
Mit php script ser sådan ud, vil du venligst rette det til, så det virker...

<?php

$conn = mysql_connect("localhost","brugernavn","kodeord");  // Åben en forbindelse til MySQL

$sql = "select date_format(dato, '%e. %B %Y') as dato, filtype, navn, beskrivelse, kb, frigivelse, link from ft_skole order by id desc";

$res = mysql_db_query("database",$sql);

for ($a = 0; $a < @mysql_numrows($res); $a++ ) {
    $aa = mysql_fetch_array($res);
?>
<tr>
<td class="icon">&nbsp;<br /><a href="<?php echo $aa[link] ?>"><img src="images/<?php echo $aa[filtype] ?>-icon.png" alt="<?php echo $aa[filtype] ?>" /></a></td>
<td><i><?php echo $aa[dato] ?></i><br /><a href="<?php echo $aa[link] ?>"><?php echo $aa[navn] ?></a>, <?php echo $aa[kb]; ?> kb<br /><?php echo $aa[beskrivelse] ?><br />&nbsp;</td>
</tr>
<?php
    }
mysql_close($conn);  // Luk forbindelsen
?>

/Frederik
Avatar billede detox Nybegynder
02. august 2004 - 22:50 #8
<?php
setlocale(LC_TIME, 'danish');
$conn = mysql_connect("localhost","brugernavn","kodeord");  // Åben en forbindelse til MySQL

$sql = "select unix_timestamp(dato) as unixtid , filtype, navn, beskrivelse, kb, frigivelse, link from ft_skole order by id desc";

$res = mysql_db_query("database",$sql);

for ($a = 0; $a < @mysql_numrows($res); $a++ ) {
    $aa = mysql_fetch_array($res);
    $dansk = (int)strftime("%d", $aa['unixtid']) . strftime(". %B %Y", $aa['unixtid']);
?>
<tr>
<td class="icon">&nbsp;<br /><a href="<?php echo $aa[link] ?>"><img src="images/<?php echo $aa[filtype] ?>-icon.png" alt="<?php echo $aa[filtype] ?>" /></a></td>
<td><i><?php echo $dansk ?></i><br /><a href="<?php echo $aa[link] ?>"><?php echo $aa[navn] ?></a>, <?php echo $aa[kb]; ?> kb<br /><?php echo $aa[beskrivelse] ?><br />&nbsp;</td>
</tr>
<?php
    }
mysql_close($conn);  // Luk forbindelsen
?>
Avatar billede detox Nybegynder
02. august 2004 - 22:54 #9
mysql_db_query() og mysql_numrows() er forældede funktioner, så med mindre du bruger en meget gammel version af php, bør du rette dem.

mysql_db_query() // mysql_select_db() og mysql_query()
mysql_numrows() // mysql_num_rows()

I øvrigt behøver du ikke: mysql_close(), da php automatisk lukker forbindelsen for dig.
Avatar billede fredd Nybegynder
04. august 2004 - 13:59 #10
Vil du så ikke lige rette php-koden til så den bliver lidt mere moderne. Jeg har nemlig min side hostet hos B-One -og kører vidst nok PHP4. Og læg iøvrigt lige at svar, så jeg kan give din pointene...
Avatar billede detox Nybegynder
04. august 2004 - 14:19 #11
<?php
setlocale(LC_TIME, 'danish');
$conn = mysql_connect("localhost","brugernavn","kodeord");  // Åben en forbindelse til MySQL
$db = mysql_select_db("database"); // Vælg database
$sql = "select unix_timestamp(dato) as unixtid , filtype, navn, beskrivelse, kb, frigivelse, link from ft_skole order by id desc";

$res = mysql_query($sql);
while ($aa = mysql_fetch_array($res)) {
    $dansk = (int)strftime("%d", $aa['unixtid']) . strftime(". %B %Y", $aa['unixtid']);
    ?>
    <tr>
    <td class="icon">&nbsp;<br /><a href="<?php echo $aa[link] ?>"><img src="images/<?php echo $aa[filtype] ?>-icon.png" alt="<?php echo $aa[filtype] ?>" /></a></td>
    <td><i><?php echo $dansk ?></i><br /><a href="<?php echo $aa[link] ?>"><?php echo $aa[navn] ?></a>, <?php echo $aa[kb]; ?> kb<br /><?php echo $aa[beskrivelse] ?><br />&nbsp;</td>
    </tr>
    <?php
}
?>
Avatar billede detox Nybegynder
04. august 2004 - 14:21 #12
Og får du nogensinde problemer med forespørgsler, så brug: or die(mysql_error()); efter forespørgslen, så får du nemlig en mere udførlig fejlmeddelelse. Fx:

$res = mysql_query($sql) or die(mysql_error());
Avatar billede detox Nybegynder
04. august 2004 - 14:34 #13
Forresten, skal det være helt korrekt, skal du bruge apostroffer om indexerne:

$aa[link] // $aa['link']
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