Laat ik voorop stellen : ik ben geen programmeur, slechts een amateur.
Momenteel ben ik bezig met een aanwezigheids registratie voor een sport club.
De leden zitten in een database , en een van de gegevens in die database is de trainings groep waarin ze behoren.
Ik heb een php script gemaakt waarin afhankelijk van de keuze van de groep, een lijst wordt getoond van mensen die in die groep horen. Met een foreach loop heb ik al deze mensen in een tabel gezet met achter elk lid een checkbox.
De lijst word prima weer gegeven en ook de checkboxes staan netjes achter elk lid, en ik kan ze aan en uit zetten. Maar hoe kan ik nu met een submit knop de waarden van de checkboxes updaten naar de database.
Ik heb zitten denken en proberen, maar krijg het gevoel dat dat helemaal niet gaat omdat je geen "unieke" waardes meer hebt zodra ze zijn neergezet in de tabel. Elke keer dat de loop een waarde neerzet heeft de variabele immers dezelfde naam.
Wie kan me een duwtje in de juiste richting geven.
Jerry
Je kunt een dubbele sleutel gebruiken van lid + training. Als je twee trainingen hebt (volgnummer 1 en 2), twee leden (lidnummers 234 en 235) en twee toestanden (1 voor present en 0 voor afwezig), dan krijg je bijvoorbeeld:
Ik denk niet dat we over hetzelfde praten ik zal het verduidelijken met het deel van het script waar het over gaat :
<?php //Toon de leden
echo "<tr align=center>";
// Toon alle namen en achternamen
foreach ( $presentie_leden_lijst AS $key=>$value )
{
// Student_nummer is onnodig in de tabel maar wel om de presentielijst bij te werken
if ($key !== 'Student_nummer')
echo '<td>'.$value.'</td>';
}
// Toon de checkbox voor de aanwezigheid selectie
?>
<td><INPUT TYPE='CHECKBOX' name='aanwezig' value='<?php echo "$value";?>'></td>
<?php
echo "</tr>"; ?>
ieder lid word dus weergegeven in de tabel op de pagina. Maar welke waarde kan ik nu gegebruiken om per lid de aanwezigheids status te updaten in de database?
Iedere regel heeft immers dezelfde vaiabelen ($value) om de gegevens van het lid weer te geven in de tabel.
hmm door het openen en sluiten van de php tags gaat de weergave niet helemaal fris...
Als je in de checkbox name="afwezig[1234]" met unieke studentnummers gebruikt, retourneert het formulier $_POST['afwezig'] als een array met meerdere studenten.
Ik krijg er maar geen array uit. Ik heb het volgende gedaan :
<?php //Toon de leden
echo "<tr align=center>";
// Toon alle namen en achternamen
foreach ( $presentie_leden_lijst AS $key=>$value )
{
// Student_nummer is onnodig in de tabel maar wel om de presentielijst bij te werken
if ($key !== 'Student_nummer')
echo '<td>'.$value.'</td>';
}
// Toon de checkbox voor de aanwezigheid selectie
?>
<td><INPUT TYPE='CHECKBOX' name='aanwezig[<?php echo $value ?>]' value="<?php echo $present_status[$value][$datum_db] ?>" <?php if ($present_status[$value][$datum_db]=='1') { echo 'checked'; } ?>></td>
<?php
echo "</tr>"; ?>
maar op het formulier komt er geen array uit als ik $present op vraag :
Geen idee wat je aan het doen bent.
isset() geeft true of false => stel true
$present = array(mysqli_real_escape_string($connection, true));
en dat ga je beveiligen => geeft
$present = array(true);
Dus $present bevat een array met daarin 1 element en dat element is een boolean.
Ik heb begrepen dat dat de zaak veiliger zou maken, ivm sql injectie.
En bent op een vrij exotische wijze een array aan het samenstellen, en dat is geen sql-query, dus kijk eens goed wat je aan het doen bent, en hoe je de functies moet gebruiken: