Goedemiddag,

Ik ben retenieuw met PHP en ik heb een vraag.
Het is niet dat ik er niet uit kom, maar meer dat ik niet weet waar ik moet zoeken.

Ik heb een PHP pagina gemaakt die gelinkt is aan een database in MySQL.
De database in MySQL bestaat uit 3 kolommen, namelijk;

- Groep
- Naam
- Aanwezig

Ik heb nu een query opgesteld die, afhankelijk in welke groep je je bevind, iedereen toont in de groep.
Hij toont dus Groep, Naam en Aanwezig die nu nog leeg is.

Ik wil het zo kunnen maken dat de 'leiding' van een groep aanwezigheid kan registreren door middel van een checkbox.
Zodra de checkbox is aangevinkt, krijgt de kolom 'Aanwezig' de waarde 'Present' in de database.
Zo een checkbox wil ik dus voor iedereen aan kunnen vinken.
Zodra iedereen op de lijst is gecontroleerd, moet het resultaat naar de database worden verzonden en opgeslagen.
Zodra ik dan wil zien wie er allemaal zijn, moet hij de lijst tonen met de zojuist aangevinkte checkboxen.

Kolom 1 en kolom 2 moeten dus 'read only' worden en kolom 3 moet 'editable' worden.
Hoe kan ik dit het beste doen? Als het nodig is, wil ik hier wel mijn code plaatsen.
Er hoeft niet een hele code voor mij geschreven te worden, maar ik wil weten hoe ik dit aanpak.

Alvast bedankt!
Ik heb in mijn script een hidden field gemaakt. Door het hidden field te gebruiken, post hij automatisch een waarde in het veld waar de checkbox komt te staan. Vervolgens staat er dat, als de checkbox een waarde krijgt dus 1, de waarde van de checkbox de waarde van het hidden field overschrijft. Dus als de checkbox leeg is en dus niet ingevuld, wordt de database wel nog steeds geschreven.
Dat is op zijn minst onverstandig, want er zijn geen garanties dat de velden daadwerkelijk worden doorgestuurd in de volgorde zoals ze in je pagina staan. Als je niet weet hoe je dit op een correcte manier moet oplossen, waarom gebruik je dan checkboxes en niet gewoon radio buttons?

Je kan gewoon een query draaien na het posten die opvraagt welke id's beschikbaar zijn. Daarna vergelijk je wat er beschikbaar is met wat gepost is op de pagina. Wat niet gepost is maar wel beschikbaar in de database zet je op afwezig, de rest op aanwezig. Simpel en snel. Vooral omdat je die query al draait bij het opbouwen van je formulier.
Daar ben ik het niet mee eens... De velden worden weldegelijk goed doorgestuurd. Het is heel simpel, je hebt twee opties, een kind is aanwezig of afwezig. Vink je een kind aan, dan krijgt de kolom de waarde Present voor dat kind. Vink je niets aan, dan zorgt de loop ervoor dat automatisch bij het goede kind gewoon een waarde Afwezig komt.
Ik vraag me dan toch af, waarom doe je moeilijk met checkboxes, terwijl er al een aantal keer radio-buttons is geroepen? Dan heb je altijd de juiste keuze zonder fratsen te hoeven maken met hidden fields.
Thomas, je kunt het ermee eens zijn of niet, het FEIT is dat je er niet vanuit kan gaan dat de velden altijd in dezelfde volgorde worden doorgestuurd. Wanneer het gebeurt dat je hidden field later wordt doorgestuurd dan je checkbox zal je checkbox geen effect hebben.

Heb je daar al aan gedacht? Of ben je het daar ook "niet mee eens"?
Nou, op dit moment werkt het perfect met de checkboxen.
Bovendien wordt eerst de hidden feature gepost en dan pas de checkbox.
De checkbox zal dus altijd later worden gepost en de hidden feature overschrijven.
Is het dan mogelijk dat het hidden field later wordt doorgestuurd terwijl die eerder in het script wordt verzonden?
Misschien leuk leesvoer:
https://www.nngroup.com/articles/checkboxes-vs-radio-buttons/

Ik maak hierop uit dat een radio-button het beste is, omdat deze 'aanwezig' of 'afwezig' kunnen tonen. En daarbij beide de verplichtte waarde meesturen. Checkboxxes zijn eigenlijk bedoeld voor als je meerdere waardes hebt. Maar gelukkig kan iemand niet 'aanwezig' EN 'afwezig' zijn.

Het is eigenlijk ook niet voor niets dat ze bij uitgeschakeld zijn, geen waarde meegeven.

Dus: Radio-buttons is the way, it is.



>> De checkbox zal dus altijd later worden gepost en de hidden feature overschrijven.
Nee, dit wordt bepaald door de browser, wat eerder of later verzonden wordt. En dit kan per keer verschillen. Dat iets eerder in HTML staat heeft weinig tot niets te maken met de volgorde waarin zaken verzonden worden.

>> Is het dan mogelijk dat het hidden field later wordt doorgestuurd terwijl die eerder in het script wordt verzonden?
Hij wordt niet "in het script" verzonden, hij wordt verzonden wanneer de browser er zin in heeft. Zo zijn er browsers die alles gegroepeerd versturen (bijvoorbeeld eerst alle text inputs, daarna alle checkboxes, daarna radiobuttons, daarna hidden fields en zo verder. Het hangt af van de maker van de browser wat de regels voor verzending zijn. Daar heb je zelf geen invloed op. Dat is een van de redenen dat je nooit twee keer dezelfde naam hoort te gebruiken in HTML.
Oke, die zekerheid wil ik wel hebben. Dan ga ik toch switchen naar radio buttons.
Ik dacht dat dat namelijk wel zo was, hetgeen wat eerder werd gepost altijd eerder werd verzonden.
Maar dan ga ik inderdaad toch switchen naar de radiobuttons, dat was namelijk mijn reden om checkboxen te gebruiken.
Checkboxen vond ik beter en met de hidden functie kwam er dan toch altijd een resultaat, maar nu is het duidelijk, dan ga ik dat aanpassen.
>> Checkboxen vond ik beter

Had je dan zowel een checkbox voor aanwezig als afwezig? (sorry, ik heb de discussie niet gevolgd)

Reageren