Ik sla de datum van mijn nieuwsberichten op als date type in mijn database. Zo kan ik met select where month() de huidige maand eruit filteren, maar ik wil de datum omnoemen....

toen raadde iemand aan hem om te slaan als int van 13 lang, alleen kan ik dan niet meer month() gebruiken. Noem ik bovenstaand date type niet om krijg ik een probleem want dat is net unix... dus wordt het erges in 1970

dit zijn de scripts in kwestie:
1
<?php

//Eerst connecten we met de database
mysql_connect ("localhost","***", "***"); //host, username, password
mysql_select_db("vak429_nl_-_news"); //database

$sql = "SELECT * FROM nieuws WHERE MONTH(datum) = MONTH(NOW()) ORDER BY id DESC";
$res = mysql_query($sql);

// bekijk of er rijen als resultaat zijn
if (mysql_num_rows($res) >= 1)
{
// zet de resultaten in een 'array'
$row = mysql_fetch_array($res);

// url maken zodat laatste bericht geopend wordt //
$url="view_month.php?id=$row[id]";
header ("Location: $url");

}
else
{
echo "Er zijn geen resultaten gevonden";
}
?>



2
<?php
//Database connect //
mysql_connect ("localhost","***", "***");
mysql_select_db("vak429_nl_-_news");

// Maak query om titel en bericht behorend bij de juiste id op te halen//
$query = "SELECT * FROM nieuws WHERE id = '$id'";

// Voer query uit //
$resultaat = mysql_query($query) or die ("query mislukt");


// Maak een loop

while( // zolang er resultaten zijn//
$obj = mysql_fetch_object($resultaat)){

// haal het onderwerp uit de array
$onderwerp = $obj->onderwerp;

// haal het bericht uit de array en haal de//
//overbodige slashes eruit en begin een nieuwe//
// lijn als dit in het bericht ook gebeurd//
$bericht = stripslashes($obj->bericht);
$bericht = nl2br($bericht);

// Definieer een maanden-array
$maand_array = array(
"januari", "februari", "maart", "april",
"mei", "juni", "juli", "augustus", "september",
"oktober", "november", "december");
$datum = date("d ", $row[datum]) . $maand_array[date("m", $row[datum]) - 1] . date(" y", $row[datum]);
?>
<table width="540" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="C31E1E">
<div align="left"> <font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>
<?php echo"$datum"; ?> - <?php echo"$onderwerp"; ?></b></font>
</div> </td></tr><tr>
<td valign="top" height="43">
<table width="540" border="0" cellspacing="0" cellpadding="3" height="35">
<tr>
<td height="19" valign="top" bgcolor="#CCCCCC">
<div align="left"> <font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">
<?php echo"$bericht"; ?>
</font></div> </td></tr><tr>
<td valign="top" height="8">
<div align="right"></div></td></tr></table></td></tr>
</table>
<br>

<table width="540" border="0" align="center" cellpadding="0" cellspacing="0">
<?

// qry uitvoeren om alles van de huidige maand uit de database te toveren //
$qry = mysql_query("SELECT * FROM nieuws WHERE MONTH(datum) = MONTH(NOW()) ORDER BY id DESC") or die (MySQL_Error());

// zolang er resultaat... //
while ($regel = mysql_fetch_array($qry)){

// $ uit array halen //
$onderwerp = $regel["onderwerp"];
$datum1 = date("d ", $regel[datum]) . $maand_array[date("m", $regel[datum]) - 1] . date(" y", $regel[datum]);
$id = $regel["id"];
?>
<tr>
<td width="166"><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FF0000"><? PRINT"$datum1";?></font> </div></td>
<td width="374"><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><? PRINT"<a href='view_month.php?id=$id'>$onderwerp</a>";?></font></div></td>
</tr>
<? }
?>
</table> <? } ?>


en de weergave wordt hierdoor dus:
01 januari 70
jup jan dat klopt in het formaat:
23 september 2005
Want in dat geval zou ik twee velden in de database maken. Eentje waarin je een DATE waarde bewaart en een veld van het type INT waarin je een UNIX timestamp bewaart die met de DATE waarde correspondeert.

Dan kun je de goede records selecteren met MONTH en via de timestamp kun je de Nederlandse notatie er uit laten rollen.
Sander schreef op 23.09.2005 17:22
jup jan dat klopt in het formaat:
23 september 2005


Okee, dan zijn dit de stappen die je kunt doen.

1) de goede records selecteren via MONTH
2) het veld met de DATE waarde omzetten naar een UNIX timestamp met strtotime
3) de notatie op Nederlands zetten met setlocale ()
4) de datum er uit laten rollen met strftime

Geef even een seintje als het je niet zelf lukt, dan maak ik een code voorbeeld.
ehmmm ff denken

dus in de invoer qry??

en de select??

heb nu dit als invoer:
$query = "INSERT INTO nieuws (datum,bericht,onderwerp) VALUES (NOW(),'$bericht','$onderwerp')";
Okee, dan zijn dit de stappen die je kunt doen.

1) de goede records selecteren via MONTH
2) het veld met de DATE waarde omzetten naar een UNIX timestamp met strtotime
3) de notatie op Nederlands zetten met setlocale ()
4) de datum er uit laten rollen met strftime


Geef even een seintje als het je niet zelf lukt, dan maak ik een code voorbeeld.


als je zou willen graag...:$
Okee, zoiets:

<?php
// Nederlandse notatie inschakelen
setlocale (LC_ALL, 'nl_NL');
$qry = mysql_query("SELECT * FROM nieuws WHERE MONTH(datum) = MONTH(NOW()) ORDER BY id DESC") or die (MySQL_Error());

while ($regel = mysql_fetch_array ($qry)) {
$datum = $regel['datum'];

//omzetten naar timestamp
$timestamp = strtotime ($datum);
$datum_nederlands = strftime ("%d %B %Y", $timestamp);
echo $datum_nederlands;
}
?>

(code niet getest)
Top! je bent een held. Nu ga ik het ff uitpluizen die functies zodat ik weet wat ik doe, want ik moet het ook in de titelbalk aanpassen, nu heb ik alleen de lijst nog.

Hmmm en daarna wil ik uitzoeken hoe ik:
bij aanvang van een nieuwe maand een extra pagina met alles van de voorgaande maand aan de archiefindex toe schrijf
hmm nog 1 probleem heb nu dit script:
<?php
//Database connect //
mysql_connect ("localhost","xxx", "xxx");
mysql_select_db("vak429_nl_-_news");

// Maak query om titel en bericht behorend bij de juiste id op te halen//
$query = "SELECT * FROM nieuws WHERE id = '$id'";

// Voer query uit //
$resultaat = mysql_query($query) or die ("query mislukt");


// Maak een loop
setlocale (LC_ALL, 'nl_NL');
while( // zolang er resultaten zijn//
$obj = mysql_fetch_object($resultaat)){

// haal het onderwerp uit de array
$onderwerp = $obj->onderwerp;

// haal het bericht uit de array en haal de//
//overbodige slashes eruit en begin een nieuwe//
// lijn als dit in het bericht ook gebeurd//
$bericht = stripslashes($obj->bericht);
$bericht = nl2br($bericht);

$datum = $obj['datum'];
$timestamp = strtotime ($datum);
$datum_nederlands = strftime ("%d %B %Y", $timestamp);
?>
<table width="540" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="C31E1E">
<div align="left"> <font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>
<?php echo"$datum_nederlands"; ?> - <?php echo"$onderwerp"; ?></b></font>
</div> </td></tr><tr>
<td valign="top" height="43">
<table width="540" border="0" cellspacing="0" cellpadding="3" height="35">
<tr>
<td height="19" valign="top" bgcolor="#CCCCCC">
<div align="left"> <font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">
<?php echo"$bericht"; ?>
</font></div> </td></tr><tr>
<td valign="top" height="8">
<div align="right"></div></td></tr></table></td></tr>
</table>
<br>

<table width="540" border="0" align="center" cellpadding="0" cellspacing="0">
<?
setlocale (LC_ALL, 'nl_NL');

// qry uitvoeren om alles van de huidige maand uit de database te toveren //
$qry = mysql_query("SELECT * FROM nieuws WHERE MONTH(datum) = MONTH(NOW()) ORDER BY id DESC") or die (MySQL_Error());

// zolang er resultaat... //
while ($regel = mysql_fetch_array($qry)){

// $ uit array halen //
$onderwerp = $regel["onderwerp"];
$datum1 = $regel['datum'];
$timestamp1 = strtotime ($datum1);
$datum_nederlands1 = strftime ("%d %B %Y", $timestamp1);
$id = $regel["id"];
?>
<tr>
<td width="166"><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FF0000"><? PRINT"$datum_nederlands1";?></font> </div></td>
<td width="374"><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><? PRINT"<a href='view_month.php?id=$id'>$onderwerp</a>";?></font></div></td>
</tr>
<? }
?>
</table> <? } ?>

maar check:
www.vak429.nl/HTM/select_month.php

De datums van hetzelfde ericht komen niet overeen, bovenaan staat vandaag dat is fout, in de berichtenlijst staat de 15e dat klopt
zie em al
kwam door obj->
Okee, dat gaat dan de goeie kant op ;-)

Als je trouwens een hyperlink in je post plakt, kun je dan zorgen dat hij aanklikbaar wordt? Dat werkt zo:

[ url=http://www.mijnsite.nl/mijnpagina.php]voorbeeldpagina[ /url]


Dan kunnen we je nog wat sneller helpen hier :-)

p.s. Na dat eerste blokhaakje moet je geen spatie zetten. Ik doe dat hier wel, omdat je anders een link te zien krijgt ipv de code waarmee je een link maakt.

Reageren