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!
- Ariën - op 10/08/2017 07:15:41

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.



Interessant dan. Als ik deze text intype in de MySQL console geeft hij wel de resultaten in de vorm van een getal.

En dus? De MySQL console is heel wat anders dan het gebruik in een script.
Je moet nu nog in php de MySQL resultaten verwerken.
Goedemiddag mensen, op dit moment zijn mijn radio buttons per standaard niet 'aangeklikt'.
Ik zou graag willen zien dat een radio button aanstaat op het moment dat de kolom 'Presentie' een bepaalde waarde bevat.
Hoe doe ik dat?
Als je een radio-button standaard wilt selecteren, dan gebruik je checked in je HTML.
Bijvoorbeeld:

  <input type="radio" name="geslacht" value="female" checked>Vrouw<br>


Je zult dus aan de hand van je data die je gefetched hebt moeten controleren of de waarde gelijk is met 'female'. En dan toon je dus checked
Hier een deel van de code om een vinkje te zetten bij het tonen van een record :

<?php
$checked = ( $row->present == 1 ? 'checked' : '' );
$checked_color = ( $row->present == 1 ? 'navy' : 'green' );
?>
<input name="present[]" type="checkbox" id="present_<?php echo $row->id; ?>" <?php echo $checked; ?> value="<?php echo $row->id; ?>" />
<label for="present_<?php echo $row->id; ?>" style="color: <?php echo $checked_color; ?>;"><?php echo ( $checked <> '' ? 'Aanwezig' : 'Afwezig' ); ?></label>
Ik dacht op deze manier;

<input type="radio" name="Aanwezig['.$i.']" id="Aanwezig'.$i.'" <?php if($_POST['Presentie']=="Afwezig") echo "checked";?> value="Afwezig">
En ter informatie:
Hier wordt de ternary operator gebruikt. Dit is een verkorte if-else statement:


<?php
$checked = ( $row->present == 1 ? 'checked' : '' );
?>

De waarde $checked wordt bepaald aan de hand van de voorwaarde $row->present == 1. Als deze waar is, dan is $checked de waarde 'checked', en anders is het gewoon een lege string zonder inhoud, dus ''.

Dus als opbouw is het dit:

$var = (voorwaarde ? true : false);


En waarom gebruik jij $_POST['Presentie']?
Je wilt toch in je database kijken wat je waarde is, en niet in de formulierdata.
Thomas Bakker op 13/08/2017 17:33:37
Ik dacht op deze manier;

<input type="radio" name="Aanwezig['.$i.']" id="Aanwezig'.$i.'" <?php if($_POST['Presentie']=="Afwezig") echo "checked";?> value="Afwezig">


Persoonlijk zou ik eerst het formulier in een aparte stap verwerken en opslaan, waarna je eventueel weer terug wordt gestuurd naar het overzicht. Ik zou nooit rechtstreeks na/tijdens verwerken het formulier meteen weer tonen op grond van wat er in $_POST zit, je code wordt dan al snel één grote rommel...

Reageren