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!
Ozzie PHP op 08/08/2017 22:02:02

>> Checkboxen vond ik beter

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


Nee, het ging eerst om een single checkbox voor aanwezig.
Ja, het ging inderdaad zoals Ariën zei om 1 checkbox. Deze postte alleen een waarde als die aangevinkt werd, dus had er een hidden field aan toegevoegd zodat er uberhaupt een waarde werd gepost, maar dat is naar ik nu lees niet betrouwbaar, dus switchen naar radio buttons.
Ah, oke ...

Vanuit gebruiksvriendelijkheid lijkt me dat (checkboxen) wel wenselijker/overzichtelijker ... dan hoef je alleen aan te vinken wie er aanwezig is.

Technisch gezien ... alvorens het formulier te tonen een array met alle id's (als key) opslaan met waarde 0. Na het posten de array aanpassen op basis van de checkboxen die zijn geset.

Zou kunnen toch? Of mis ik iets?

Die oplossing had ik inderdaad ook al voor ogen.
Hmm dat zou ik zelf wel prettiger vinden.
Dan moet ik dus gewoon even een array opstellen die alles naar waarde afwezig zet.
Wanneer een checkbox dan is aangevinkt, wordt die verzonden naar de bijbehorende kolom.
Je kan de radiobuttons setten met de inhoud uit de database en na het posten heel simpel weer updaten in de database.
Herhaal:

Technisch gezien ... alvorens het formulier te tonen een array met alle id's (als key) opslaan * in sessie met waarde 0. Na het posten de array aanpassen op basis van de checkboxen die zijn geset.

Die sessie was ik vergeten erbij te zetten. Dus op de pagina waar je het formulier toont, haal je eerst alle id's op uit de database. Die id's sla je in een array op waarbij iedere key een id is. Iedere value zet je op 0. Na het posten van het formulier doorloop je alle checkboxes die geset zijn (die geven dus een id terug), en dat id gebruik je om de array die in de sessie staat te updaten. Je hebt dan dus een array met id's die nulletjes (afwezig) en eentjes (aanwezig) bevatten. Die array kun je dan gebruiken om de database te updaten.
Goedenavond,

Ik ben reeds geswitched naar de radio buttons en geen seconde spijt van.
Nu wil ik een extra feature implementeren, namelijk het tellen van de kinderen in groep X die aanwezig zijn.
Ik had dit opgesteld, maar het levert niets op. Let niet op de code voor en achteraan, hier staat nog tekst normaliter.

 <?php

$tellen = mysqli_query($conn,"SELECT Maandag, SUM( Maandag =  'Afwezig' ) AS `Present` FROM Aanwezigheid WHERE  `Groep` =  'A'");
        
?>

<table width="325">


<tr><td colspan="2">Aantal aangemelde kinderen:</td><td><?php echo "$tellen"; ?></td></tr></table>

SELECT 
	COUNT(Maandag) AS `Present` 
FROM 
	Aanwezigheid 
WHERE  
	`Groep` =  'A' AND 
	`Maandag` =  'Afwezig'


Alleen nu haal je alle afwezige mensen op volgens mij?
Logisch, een query telt ook niks.
Het voert enkel een opdracht uit naar MySQL/MariaDB.

De functie geeft normaal een resource die je verder kan gebruiken met bijv. mysqli_num_rows of mysqli_fetch_* functies.

Lees anders eens een MySQLi-tutorial.

Reageren