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!
?
Onbekende gebruiker
07-08-2017 23:43
gewijzigd op 07-08-2017 23:45
Ik heb die underscore overgenomen van de tekst van SanThe, ik dacht zodat je dan Aanwezig_1 o.i.d. krijgt..
Edit: het gaat ergens in de Query mis, snap alleen niet waar.
Je weet wat $_POST['id'] doet? Het maakt in ieder geval geen waarde aan ;-)
Zo niet, dan vraag ik me toch af of je niet beter bij een tutorial kan beginnen.
Ik heb net de oplossing gepost, dus nu moet je toch wel de ID kunnen pakken uit je POST-request. Vergeet hem niet te escapen met mysqli_real_escape_string voordat iemand je hackt.
?
Onbekende gebruiker
08-08-2017 00:18
Dan snap ik hem inderdaad niet.. De ID wordt toch verkregen door een verzoek vanuit mijn query?
Vervolgens wordt door middel van de result query de aanwezigheid (0 of 1) gepost daar waar het id overeenkomt met de query waarmee ik de data heb opgevraagd?
Je doet hier een UPDATE-query, en die vindt plaats NADAT je formulier verstuurd is via de POST methode.
En om de absentie bij de juiste persoon te zetten moet je het ID weten, en die staat in de POST-array, omdat die in je checkbox staat.
In de array staat de key tussen blokhaken en daarachter staat de value "present". Het met aanroepen van de variabele alleen kan je normaal alleen de waarde oproepen, maar als je de key wilt oproepen gebruik je dus key().
?
Onbekende gebruiker
08-08-2017 00:39
Oke, dus wat zou ik dan aan moeten passen om het voor elkaar te krijgen?
Ik heb in de checkbox.php, want daar ligt de fout, nu het volgende gedaan;
- Ik heb de ID een variabele gegeven
- Ik heb de query aangepast zodat deze variabele wordt opgevraagd
Als ik de check weer run, blijft hij 'WHERE id=""' geven.
<?php
//Alle variabelen instellen
$servername = "nee";
$username = "ja";
$password = "nee;
$dbname = "ja";
//Verbinden met de database
$conn = mysqli_connect($servername, $username, $password, $dbname);
$id = key($_POST['Aanwezig_'][1]);
//Query opstellen door middel van variabele
$result = "UPDATE Aanwezigheid SET Maandag='$_POST[Aanwezig]' WHERE id='$id'";
//Query draaien
if(mysqli_query($conn,$result))
echo "$result";
else
echo "Not updated";
?>
Je mist een dubbele quote op lijn 7, maar dat zal wel een foutje in je bericht zijn.
Los daarvan heb ik het idee dat je POST niet mee wordt gestuurd? Wat meldt de genoemde print_r en houd die er eens bij als leidraad.
Enne:
- $_POST[Aanwezig] bevat een array, waar je niks mee kan in een query
- Gebruik quotes tussen je blokhaken bij strings
- Zorg voor escaping met mysqli_real_escape_string($conn,.....)