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 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.
Vraag het eens aan MySQL met: mysqli_error($conn);
Je string $result echo'en helpt ook.

UPDATE Aanwezigheid SET Maandag='Array' WHERE id='..'


Als ik mijn $result echo krijg ik deze, dus bij het ID gaat iets mis..
Edit: de Mysqli error geeft geen resultaat.
Klopt, want ik zie geen [id] de POST-array.
Wel is dit de key in je array. Dus kijk eens naar [php]key[/php]


<?php
$id = key($_POST['Aanwezig_'][1]);
?>
De ID wordt hier gepost toch?

$result = "UPDATE Aanwezigheid SET Maandag='$_POST[Aanwezig]' WHERE id='$_POST[id]'";


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.
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().
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,.....)

Reageren