Beste leden,

Graag zou ik de maand in tekst willen hebben in de URL.
Het is wel gelukt om de maanden in cijfers te krijgen, in de URL(Htaccess).
Ik weet dat F de volledige naam van een maand is.

$dt = new DateTime();
if(isset($_GET['y']) && isset($_GET['m'])) {
if(checkdate($_GET['m'], 1, $_GET['y'])) {
$dt = new DateTime($_GET['y'].'-'.$_GET['m'].'-1');
}
}
$intervalStart = $dt->format('Y-m-d'); // today
$intervalEnd = $dt->format('Y-m-t'); // end of month


echo '<a href="' . $dt->sub(new \DateInterval('P1M'))->format("m-Y") . '">Last month</a>

Htaccess -> ?m=$1&y=$2

Waar kan ik dit het beste allemaal aanpassen?

Met vriendelijke groet,

Levy

[size=xsmall]Toevoeging op 16/10/2019 15:30:38:[/size]

<?php
// PHP program to convert number to month name

// Declare month number and initialize it
$monthNum = 10;

// Create date object to store the DateTime format
$dateObj = DateTime::createFromFormat('!m', $monthNum);

// Store the month name to variable
$monthName = $dateObj->format('F');

// Display output
echo $monthName."\n";

?>
Met welke reden wil je dat? Er hoeft maar een instelling op de server scheef te staan en je krijgt 'August' in plaats van 'Augustus', en je pagina is onbereikbaar.
Je kan ook prima een datum als dd-mm-yyyy opgeven, afhankelijk van de context.
Voor de indexering van Google en het is overzichtelijker dan een nummer. De bedoeling is dat de maand in de URL in het Engels komt.
Als ik op internet rondkijk naar datums in URL, en de SEO, dan maakt het echt niet uit.
Oke, bedankt. Dan laat ik het zo.
Idealiter wil je ook niet voor elk stuk functionaliteit een (of zelfs meer) rewriterules creëren. Dit wordt al gauw een onoverzichtelijke brei.

Dit zou ook min of meer inhouden dat elke pagina achter de schermen een bijbehorend standalone script heeft. Dus elke pagina vormt dan in wezen een ingang naar je website of -applicatie.

Als je zoiets aan het bouwen bent dan zul je dit proces meer moeten stroomlijnen (uit gebruikersgemak, maar ook uit oogpunt van veiligheid). Heel kort door de bocht zorg je dat je hele applicate één poort heeft die je toegang verschaft tot de rest van de code. Deze zogenaamde single point of entry is vaak index.php.

Wat dit soort applicatie dan ook vaak hebben is één enkele rewriterule die alles (intern) doorstuurt naar index.php. In index.php wordt dan de oorspronkelijk aangeroepen URL ($_SERVER['REQUEST_URI']) geïnspecteerd en wordt uitgerekend welke pagina geserveerd moet worden, of als blijkt dat dit bij nader inzien toch een onbekende pagina was, dan wordt een 404 pagina geserveerd. Je rekent dus in feite handmatig de pagina uit die bij een URL hoort, maar daarbij heb je het werk dus gedelegeerd van .htaccess naar PHP.

Een bijkomend voordeel van deze aanpak is dat je het verder uitrekenen van een specifieke pagina op zijn beurt ook verder kunt delegeren naar specifieke functionaliteit. Zo zou je (vanuit index.php) kunnen besluiten dat alles van de vorm calendar/* verder verwerkt wordt door de kalender-functionaliteit zelf. Hiermee paas je in wezen alles door naar de "interne voordeur" van dit specifieke stuk functionaliteit. En dit beïnvloedt verder niet de standaard "flow" waarbij alles door index.php gaat.

Zo zou je dus ook alles van de vorm forum/* kunnen delegeren naar een "forum index.php". Net zoals bij een kalender kan dit zeer handig zijn, want de diversiteit aan (zoekmachinevriendelijke) URL's die deze pagina's allemaal hebben is waarschijnlijk (op den duur) nogal groot, hiervan wil je niet een lijst in index.php hebben die alles doormapt naar een forum-overzicht, -categorie of -berichtenpagina. Dat zou een beetje onbegonnen werk zijn.

Het moge duidelijk zijn dat deze aanpak (single point of entry) zeer behulpzaam kan zijn bij het opstellen van zoekmachinevriendelijke URLs, zonder dat je je hiermee op voorhand beperkt qua mogelijkheden of vrijheid in de naamgeving.
Bedankt voor je reactie! Ja, dan heb je nog een betere structuur.

$dt = date("F",strtotime($dt));
echo '<a href="www.yoursite.com/index.php/iets'.$dt.'">>Last month</a>;
Iedereen kan URL's breien. Het is ook zaak dat bij aanroep de juiste handelingen worden verricht bij het verwerken van het request.

Het bovenstaande is dus maar een half antwoord, en daarmee dus eigenlijk geen antwoord.

Je hebt nu al op (ten minste) drie topics gereageerd met vanuit-de-heup-geschoten antwoorden die nogal kort door de bocht zijn.

Het gaat er niet om dat je zoveel mogelijk antwoorden geeft, het gaat erom dat je antwoorden geeft waar iemand iets aan heeft, en waar men mogelijk/hopelijk wat van opsteekt.

Het is fijn dat je zo enthousiast aan het typen bent, maar zou je dit enthousiasme wat in kunnen dammen ten faveure van iets langere, en beter onderbouwde, antwoorden die ook wat uitleg geven? Het bovenstaande voegt namelijk niet zoveel toe.
Als $dt in PHPmyAdmin staat als een date type, dan je met de vorige reactie de hele datum veranderen in de volledige maand.

$dt = new DateTime(); //2019-11-27 06:00
$dt = date("F",strtotime($dt)); //November

Waarom voegt dit niks toe? En wat is dat voor achtelijke reactie, Thomas?
Ik sluit mij aan bij Thomas en ik vind dit ook een antwoord die weinig betrekking heeft op het vraagstuk. In een ander topic legt Thomas je precies uit wat er niet goed gaat.

Het is erg attent dat je iemand wilt helpen, maar let dan op of een topic actueel is, en let er op dat je goede concrete antwoorden geeft die aansluiten op het vraagstuk. Tot nu toe zijn de gegeven antwoorden nog niet echt zinvol te noemen, hoewel het vriendelijk bedoeld zal zijn. Ook is enige uitleg als je een stukje code plaatst zeker niet overbodig.

Reageren