Skip to main content

Ongeldig veld: Gemaakt door

Je opent een bestaand artikel in Joomla, past een kleinigheid aan, klikt op Opslaan en krijgt de melding "Ongeldig veld: Gemaakt door". Het artikel laat zich niet meer bewaren. In de Engelstalige interface heet exact dezelfde fout "Invalid field: Created By", vaak aangevuld met een regel als "Cannot find user with ID: 67".

De oorzaak is bijna altijd hetzelfde: de gebruiker die ooit als auteur aan het artikel gekoppeld was, bestaat niet meer. Joomla controleert bij het opslaan of het veld "Gemaakt door" naar een geldige gebruiker verwijst, kan die gebruiker niet vinden en weigert daarom op te slaan. Hieronder staat hoe je het per artikel oplost, hoe je het in bulk aanpakt via de database, en hoe je voorkomt dat het opnieuw gebeurt.

Waarom deze fout ontstaat

Elk artikel bewaart in de kolom `created_by` het ID van de gebruiker die het heeft aangemaakt. Verwijder je die gebruiker later (bijvoorbeeld een oud-medewerker of een opgeruimd testaccount), dan blijft dat ID gewoon aan het artikel hangen. De gebruiker is weg, de verwijzing niet.

Zolang je het artikel niet aanraakt, merk je er niets van. Pas op het moment dat je het opent en opslaat, valideert Joomla het auteursveld. De koppeling wijst naar een ID dat niet meer in de gebruikerstabel staat, en je krijgt "Ongeldig veld: Gemaakt door".

Dit was een tijdlang een erkende bug in Joomla 4 ([issue #41008](https://issues.joomla.org/tracker/joomla-cms/41008)), waardoor je het artikel letterlijk niet meer kon bewaren. In recentere Joomla-versies is dat verbeterd, maar het onderliggende dataprobleem (een auteur die niet meer bestaat) los je daar niet automatisch mee op. Onderstaande oplossingen werken op alle versies.

Oplossing 1: auteur wijzigen per artikel

Voor één of een handvol artikelen is dit de snelste en veiligste route. Je hebt geen database-toegang nodig.
  1. Ga in de beheeromgeving naar Inhoud en open het betreffende artikel.
  2. Klik op het tabblad Publicatie.
  3. Bij het veld "Gemaakt door" staat de verwijzing naar de verwijderde gebruiker. Klik op het gebruikers-icoon en selecteer een bestaande gebruiker, bijvoorbeeld je eigen beheeraccount of een algemeen redactie-account.
  4. Sla het artikel op. De foutmelding is weg.

Let op: via Batch kan dit niet

Je zou verwachten dat je dit voor meerdere artikelen tegelijk regelt via de Batch-functie in de artikelenlijst. Dat kan niet. Joomla 5 en 6 hebben geen optie om de auteur via Batch te wijzigen. Heb je honderden artikelen van een verwijderde gebruiker, dan is de database de enige efficiënte weg.

Oplossing 2: in bulk via de database

Heb je veel artikelen met dezelfde verdwenen auteur, dan vervang je het oude user-ID in één keer via phpMyAdmin of Adminer.

Maak eerst een backup van je database. Een verkeerd uitgevoerde UPDATE zonder WHERE raakt al je artikelen tegelijk, en dat draai je zonder backup niet terug.

Zoek eerst op welke artikelen een niet-bestaande auteur hebben:
SELECT id, title, created_by
FROM `#__content`
WHERE `created_by` NOT IN (SELECT id FROM `#__users`);
 
Vervang vervolgens het oude ID door dat van een bestaande gebruiker:
UPDATE `#__content`
SET `created_by` = 42
WHERE `created_by` = 67;
 
Hierin is `67` het ID van de verwijderde gebruiker (dat zie je in de foutmelding, "Cannot find user with ID: 67") en `42` het ID van de bestaande gebruiker waaraan je de artikelen toewijst. Het ID van die nieuwe gebruiker vind je in de beheeromgeving onder Gebruikers, in de kolom ID.

Vervang `#__` door de echte tabelprefix van je installatie. Die staat in je configuratie en is iets als `jos_` of een willekeurige reeks zoals `xy7k2_`.

Komt het auteursprobleem ook voor in het veld "Laatst gewijzigd door", dan los je dat op dezelfde manier op via de kolom `modified_by`. Een `modified_by` van `0` is normaal en betekent simpelweg dat het artikel nooit is gewijzigd. Laat die met rust.

Hetzelfde probleem in andere onderdelen

Het auteursveld zit niet alleen op artikelen. Een verwijderde gebruiker kan dezelfde melding veroorzaken bij contacten, categorieën, nieuwsfeeds en banners. De aanpak is identiek, alleen de tabel en kolomnaam verschillen.

Let goed op dat verschil. Artikelen, contacten, nieuwsfeeds en banners gebruiken `created_by` en `modified_by`. Categorieën en tags gebruiken `created_user_id` en `modified_user_id`. Pak je de verkeerde kolomnaam, dan stopt de query met een "Unknown column"-fout.
 
OnderdeelTabelAuteurskolommen
Artikelen #__content created_by, modified_by
Contacten #__contact_details created_by, modified_by
Nieuwsfeeds #__newsfeeds created_by, modified_by
Banners #__banners created_by, modified_by
Categorieën #__categories created_user_id, modified_user_id
Tags #__tags created_user_id, modified_user_id

Voor categorieën ziet de query er dus zo uit:
UPDATE `#__categories`
SET `created_user_id` = 42
WHERE `created_user_id` = 67;

Hoe je dit voortaan voorkomt

De fout is geen Joomla-zwakte, maar een gevolg van het verwijderen van een gebruiker die nog aan content gekoppeld is. Twee gewoontes houden je hier weg.

Blokkeer een account in plaats van het te verwijderen wanneer iemand vertrekt maar zijn content moet blijven bestaan. Een geblokkeerde gebruiker kan niet meer inloggen, maar de auteurskoppeling blijft geldig en je krijgt nooit een ongeldig veld.

Moet een account écht weg, wijs dan eerst de content toe aan iemand anders. Verander de auteur op de betreffende artikelen (of voer de UPDATE-query uit) voordat je de gebruiker verwijdert, niet erna. Dan is er geen moment waarop een artikel naar een niet-bestaand ID wijst.

Houd Joomla daarnaast actueel. De oude blokkerende bug is in nieuwere versies aangepakt, dus op een bijgewerkte site loop je in het ergste geval tegen een cosmetisch onjuiste auteur aan in plaats van een artikel dat zich niet laat opslaan.

Veelgestelde vragen

Welke gebruiker kies ik als vervanger?
Een bestaand account dat blijft bestaan, bij voorkeur een algemeen redactie- of beheeraccount in plaats van een persoonlijke gebruiker die later ook weer weg kan.

Is de UPDATE-query veilig om uit te voeren?
Ja, mits je vooraf een backup maakt, de juiste ID's invult en de juiste kolomnaam voor die tabel gebruikt. De WHERE-voorwaarde zorgt dat alleen de artikelen van de verwijderde gebruiker worden aangepast.

Ik durf niet in de database. Wat dan?
Voor een paar artikelen blijf je in de beheeromgeving en wijzig je de auteur per artikel via het tabblad Publicatie. Gaat het om honderden items en voel je je niet zeker bij phpMyAdmin, laat de bulk-correctie dan uitvoeren door iemand die Joomla-databases beheert.

Krijg ik de oorspronkelijke auteur terug?
Nee. De gebruiker is verwijderd, dus die naam is weg. Je kunt de artikelen alleen aan een bestaande gebruiker toewijzen. Wil je toch een naam tonen zonder echt account, dan kun je in de backend het veld "Auteursalias" gebruiken.
Jeroen Moolenschot

Over Jeroen

Sinds 2006 werk ik met Joomla! Ik bouw en onderhoud Joomla-websites en webshops. Daarnaast heb ik veel kennis van zoekmachine-optimalisatie (SEO), hosting en het ontwikkelen van templates en extensies.

Ik bezoek regelmatig JoomlaDagen en gebruikersgroepen, waar ik soms ook als spreker optreed.

Daarnaast zet ik me actief in voor de Joomla-community. Ik ben lid van het Joomla Extensions Directory-team en organiseer de Joomla-gebruikersgroep Breda en JoomlaDagen Nederland.

Ben je op zoek naar een Joomla-specialist? Neem gerust contact met me op!

Populaire artikelen

We hebben gedetecteerd dat uw server gebruik maakt van PHP welke verouderd is

Wanneer je inlogt op Joomla zie je mogelijk een gele of rode waarschuwing over de PHP versie die je…

Sorry, your PHP version is not supported

Vanaf Joomla 4 kun je geen gebruik meer maken van PHP-versies lager dan 7.2 . In Joomla 5 is de min…

Could not connect to MySQL

Wanneer je een wit scherm te zien krijgt met de tekst "Error displaying the error page: Application…

Uitchecken mislukt door de volgende fout

Wanneer een artikel is uitgecheckt, zie je een slotje bij het artikel staan en kun je deze niet mee…

You are a spammer, hacker or an otherwise bad person

De melding "You are a spammer, hacker or an otherwise bad person" is niet afkomstig van Joomla zelf…

Joomla geeft een wit scherm

Een wit / leeg scherm is de meest vervelende fout die je kunt hebben, omdat je de oorzaak van het p…