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!
Je overschrijft steeds je hidden-field. Als je Thomas v/d Heuvel zijn post nog eens leest, dan zie je dat je de unieke nummers/namen tussen blokhaken in de name kan zetten.
Ik doe echt mijn best om het te begrijpen, maar die loop index, geen idee.
Als ik het goed begrijp zal ik dan mijn script moeten wijzigen zodat ik een foreach krijg?
Of kan ik binnen mijn while ook een loop toepassen?
Die hidden fields heb je niet nodig.
En waarom gebruik je geen radio-buttons zoals eerder geopperd is? Dan wordt er altijd een waarde meegestuurd.
Stel dat je personen Henk, Piet en Klaas hebt die respectievelijk worden geïdentificeerd met user-id's 1, 2 en 3.

Het formulier voor aanwezigheid ziet er dan bijvoorbeeld als volgt uit:
<form action="..." method="post">
<p>
    <input type="checkbox" name="present[1]" id="present_1" value="1">
    <label for="present_1">Henk</label>
</p>
<p>
    <input type="checkbox" name="present[2]" id="present_2" value="1">
    <label for="present_2">Piet</label>
</p>
<p>
    <input type="checkbox" name="present[3]" id="present_3" value="1">
    <label for="present_3">Klaas</label>
</p>
<p>
    <button type="submit">opslaan</button>
</p>
</form>

$_POST bevat vervolgens enkel die namen die aangevinkt zijn.

Als het handiger is om alle namen te POSTen kun je op een soortgelijke wijze radio-buttons gebruiken, bijvoorbeeld als volgt (voor Piet):
<p>
    <input type="radio" name="present[2]" id="present_2_1" value="1"><label for="present_2_1">aanwezig</label>
    <input type="radio" name="present[2]" id="present_2_0" value="0"><label for="present_2_0">afwezig</label>
</p>

Hierbij kun je er ook voor kiezen om standaard "afwezig" te selecteren.
Thomas Bakker op 05/08/2017 13:02:19

[quote="Thomas van den Heuvel op 04/08/2017 14:44:59"]
[quote="Peter K op 03/08/2017 07:42:54"]

Een handigere aanpak zou bijvoorbeeld zijn (voor gebruiker met id 5):
<input type="checkbox" name="aanwezig[]" value="5">

Of
<input type="checkbox" name="aanwezig[5]" value="whatever">



Betekend dit dan dat ik per rij een waarde in zal moeten vullen?
Dus iedereen een 'id' zal moeten geven? Dus waar nu aanwezig[5] staat, dat zal moeten doen van aanwezig[1] tot en met aanwezig[650]?
[/quote]

Dat is dus hetgeen wat ik vroeg.
Ik moet dus voor iedereen, dus alle 650, apart optie maken met de juiste id's?
Klopt, voor zoveel keuzes zou ik liever wel aan pagination (paginaverdeling) denken. Maximaal 25 per pagina bijvoorbeeld, voor het goede overzicht.

En bij voorkeur met een radiobuttons.
Of een andere indeling die mogelijk zinniger is, zoals een indeling in groepen of klassen?

Je moet je database wel een beetje structureren uiteraard, alleen dan kun je daar ook echt van profiteren. In de tabel met namen zul je dus ook aan moeten geven tot welke groep deze personen behoren. En de groepen identificeer je bij voorkeur ook met een (intern) uniek nummer.

Databases vormen het fundament van applicaties. Als het fundament niet goed is dan wordt het lastig om hier iets moois bovenop te bouwen.
Jemig.. Is er niet een makkelijkere oplossing dat gewoon alle wijzigingen op 1 pagina in 1 keer worden doorgevoerd?
Vreemd dat PHP zoiets niet ondersteund.. En pagination wil ik juist niet aan beginnen, er worden maximaal 100 kinderen in 1 keer getoond afhankelijk van de query die ik per groep opstel. De grootste groep is 100 en ik wil dus juist alles in 1 keer kunnen aanvinken..

Mocht dat het enige antwoord zijn om 650 opties te maken, dan begin ik daar niet aan en dan is helaas al mijn en jullie moeite voor niets geweest..
Het mooiste is als je op je lijst een filter kan toepassen, zoals bijvoorbeeld:
Aanmelddatum, Geslacht, Klas/Groep, Presentie.

Verder kan je prima in PHP en loop draaien met alle namen en radiobuttons voor de presentie. Als ze maar per groep dezelfde name met het ID-nummer hebben.
- Ariën - op 07/08/2017 14:53:21

Het mooiste is als je op je lijst een filter kan toepassen, zoals bijvoorbeeld:
Aanmelddatum, Geslacht, Klas/Groep, Presentie.

Verder kan je prima in PHP en loop drasien met alle namen en radiobuttons voor de presentie. Als ze maar per groep dezelfde name met het ID-nummer hebben.


Doe ik dit niet al d.m.v. een query?

Reageren