Beste,

Ik zit met een probleem en ik kom er zelf niet uit, dus vandaar dat ik graag vraag om hulp.
Even kort uitgelegd, ik ben een web-based systeem aan het maken om gegevens van mensen bij te houden van een techniek-ploeg op een middelbare school.
Ik heb het grotendeels al wel weten uit te werken, maar een bepaald stukje script loop ik nu al dagen mee te worstelen en ik kom er niet uit.

Het komt erop neer dat ik een formulier heb, dat er zo uit ziet:

http://i1081.photobucket.com/albums/j358/anwir/ScreenShot2012-01-19at30644PM.png

Het gaat hier om nieuwelingen waarvan bijgehouden moet worden wat ze allemaal al hebben gedaan, bijvoorbeeld; Rondleiding, podium meekijken, enz.

Mijn uiteindelijke bedoeling is dat je bij personen de checkbox aan kunt vinken en dit kunt opslaan, zodat het "checked" verschijnt als je de pagina later laad.

De data uit het formulier wordt opgeslagen in een .php bestand, dat er zo uit komt te zien na opslaan:

http://i1081.photobucket.com/albums/j358/anwir/ScreenShot2012-01-19at31347PM.png

- Een 1 staat ervoor als de checkbox "checked" was en een 0 voor als dat niet zo was.

In het bestand van het formulier wordt dit bestand met de 0'tjes en 1'tjes uitgelezen en wordt dit alles in een array gezet, waardoor je dus de array krijgt, als voorbeeld:
echo $checkboxes[0]; // geeft 1
echo $checkboxes[1]; // geeft 0
echo $checkboxes[2]; // geeft 1
echo $checkboxes[3]; // geeft 0
enz.

Verder is dit dan het script dat de checkboxen e.d. aanmaakt:

// Ook het aantal nieuwelingen en hun namen worden op een manier zoals hierboven benoemd uitgelezen uit een
// bestand en zo in een array gezet.

// Het aantal taken wordt eerder in het script gegenereerd. (a.k.a. Hoeveel checkboxen er moeten komen te staan)

<?php
foreach ($newcomers as $key => $names) {
echo "
<td>$names</td>
<td></td><td></td><td></td><td></td><td></td>
";
$number = 1;
$aantal_keer = 1;
$aantal_taken_voor_while = $aantal_taken -1;
while ($aantal_keer <= $aantal_taken_voor_while) {
echo "<td><input type='checkbox' name='$number' ";
// HIER ZIT DE FOUT IN
if ($checkboxes['$number_f_c;'] = "1") {
echo "checked='yes'>";
}
// TOT HIER
echo "</td><td></td><td></td><td></td><td></td><td></td>";
$number++;
$aantal_keer++;
$number_f_c++;
}
}
?>

Met het script hierboven heb ik geprobeerd de uitgelezen data (de 0'tjes en 1'tjes) zo te gebruiken dat je de checkboxen kunt opslaan, zeg maar. Maar dit lijkt niet te werken. Ik heb van alles geprobeerd en kom er niet meer uit.

Alle hulp is welkom! Bedankt alvast!

(PS. Als het te onduidelijk is, meld het alsjeblieft, dan ga ik proberen het te verduidelijken.)

Groetjes, Coen

<?php
 $array[$var]; //goed

 $array['$var;']; //fout
?>


Dat is het eerste puntje, tweede is dat je geen vergelijking in die if doet (= ipv ==).

Edit:

Het lijkt me sowieso wel beter om af te leren variabelen tussen quotes te gebruiken:


<?php
 $var = "test";
 echo "Dit doen we niet: $var";

 echo 'Dit doen we wel: ' . $var;
?>


Overigens gebruik je " en geen ' in html tags.
Ok, wat je dus probeert is om de checkboxen uit te lezen, en dit lukt niet?

Het namen geven van de checkboxen had ik anders gedaan. Had namelijk de naam de van de persoon erin gezet. Zo kan je makkelijk met de $_POST['checkbox-nick'][] alle checkboxes van hem uitlezen.

Verders snap ik niet veel van het verhaal, maar kan ook aan mij liggen :$
@Jelle, @Rick - Dank jullie wel voor de snelle reacties.

@Jelle; Ik heb het aangepast, dankjewel. Alleen lijkt het nog steeds niet goed te werken.

Het script ziet er nu zo uit:

<?php
foreach ($newcomers as $key => $names) {
echo "
<td>$names</td>
<td></td><td></td><td></td><td></td><td></td>
";
$aantal_keer = 1;
$aantal_taken_voor_while = $aantal_taken -1;

while ($aantal_keer <= $aantal_taken_voor_while) {
echo "<td><input type='checkbox' name='" . $number . "' ";
// HIER ZIT DE FOUT
if ($checkboxes[$number_f_c] == "1") {
echo "checked='yes'>";
}
// TOT HIER
echo "</td><td></td><td></td><td></td><td></td><td></td>";
$number++;
$aantal_keer++;
$number_f_c++;
}
?>

Het formulier laat nu de eerste checkbox "checked" zien, alleen als ik er een bij wil opslaan, geeft die na refreshen die niet meer "checked" weer. Hij slaat ze wel op in het .php bestand dat wordt uitgelezen, maar blijkbaar zit er toch nog iets fout.

@Rick; Het is inderdaad misschien een beetje vaag, sorry hiervoor. Maar ik heb meerdere (automatisch aangemaakte) checkboxen per persoon en ik vond het wel makkelijk werken ermee als ze stomweg genummerd waren.

Als ik er niet verder uitkom, zal ik nog even mijn ideeën erachter verduidelijken.

@Jelle @Rick - Nogmaals bedankt voor de snelle reacties.

[size=xsmall]Toevoeging op 19/01/2012 16:36:23:[/size]

Misschien dat dit helpt:

Hier even het hele script.. (Sorry voor de lengte).

<?php
<?php
session_start();

if (!isset($_SESSION['logged'])) {
header("Location: index.php?message=Please%20try%20again!");
die();
}
?>

<html>
<head>
<title>Techniek System 1.0.0</title>
<style type="text/css">
a.menu {
text-decoration:none;
text-transform: uppercase;
color:#000000;
}
a.menu:hover {
text-decoration:underline;
text-transform: uppercase;
color:#000000;
}
a.menu:visited {
text-decoration:none;
text-transform: uppercase;
color:#000000;
}
a.menu:visited:hover {
text-decoration:underline;
text-transform: uppercase;
color:#000000;
}

a.log {
text-decoration:none;
color:#a60000;
}
a.log:hover {
text-decoration:underline;
color:#a60000;
}
a.log:visited {
text-decoration:none;
color:#a60000;
}
a.log:visited:hover {
text-decoration:underline;
color:#a60000;
}
</style>
</head>
<body>
<center>
<br>
<table>
<tr>
<td>
<a href="welcome.php" class="menu">home</a>
</td>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>
<a href="members.php" class="menu">members</a>
</td>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>
<a href="newcomers.php" class="menu">newcomers</a>
</td>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>
<a href="level.php" class="menu">level</a>
</td>
</tr>
</table>
<br><br>
<?php

// defineer het bestand met berichten
$file = "checkboxes.php";

// open het bestand
$fopenr = fopen ($file, "r");

// sla de inhoud op om de eerder toegevoegde berichten
// te onthouden en te herschrijven onder het nieuwe bericht
$chkbx = fread ($fopenr, filesize ($file));

// Maak van $msgs, door middel van explode, van alle door / gescheiden informatie een array
$checkboxes = explode("/", $chkbx);

$size = sizeof($checkboxes);

$number_f_c = 0;

// while ($number_f_c < $size) {
// echo $checkboxes[$number_f_c];
// $number_f_c++;
// }

?>

<?php
// defineer het bestand met berichten
$file = "newcomer.php";

// open het bestand
$fopenr = fopen ($file, "r");

// sla de inhoud op om de eerder toegevoegde berichten
// te onthouden en te herschrijven onder het nieuwe bericht
$msgs = fread ($fopenr, filesize ($file));



// Maak van $msgs, door middel van explode, van alle door / gescheiden informatie een array
$newcomers = explode("/", $msgs);

// tel het aantal array's van $newcomers
$number_of_newcomers = sizeof($newcomers);

?>

<form action="newcomer_save.php" name="newcomers" method="post">
<table>
<tr>
<td>
<table>
<tr>
<td>Naam:</td>
<td></td><td></td><td></td><td></td><td></td>
<td>Rondleiding:</td>
<td></td><td></td><td></td><td></td><td></td>
<td>Podium meekijken:</td>
<td></td><td></td><td></td><td></td><td></td>
<td>Podium meedraaien:</td>
<td></td><td></td><td></td><td></td><td></td>
<?php
// Dit nummer aanpassen aan het aantal taken voor Newcomers
$aantal_taken = 3;
?>
</tr>
<tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr>
<tr>
<?php
$number_of_checkboxes = $number_of_newcomers * $aantal_taken;

$number_for_check = $number_of_checkboxes -1;

$number = 1;
$number_f_c = $number -1;

// while ($number <= $number_of_checkboxes) {

foreach ($newcomers as $key => $names) {
echo "
<td>$names</td>
<td></td><td></td><td></td><td></td><td></td>
";
$aantal_keer = 1;
$aantal_taken_voor_while = $aantal_taken -1;
while ($aantal_keer <= $aantal_taken_voor_while) {
echo "<td><input type='checkbox' name='" . $number . "' ";
// HIER ZIT DE FOUT
if ($checkboxes[$number_f_c] == "1") {
echo "checked='yes'>";
}
// TOT HIER
echo "</td><td></td><td></td><td></td><td></td><td></td>";
$number++;
$aantal_keer++;
$number_f_c++;
}
$aantal_keer = $aantal_keer +1;
if ($aantal_keer = $aantal_taken) {
echo "<td><input type='checkbox' name='$number' ";
// Script van hierboven herhalen
echo "</td><td></td><td></td><td></td><td></td><td></td></tr><tr>";
$number++;
$number_f_c++;
}
}


// foreach ($newcomers as $key => $nummers) {

// $number_of_checkboxes = $number_of_newcomers * 2;

// $number = 1;

// while ($number <= $number_of_checkboxes) {
// echo "
// <td><input type='checkbox' name='$number'></td>
// <td></td><td></td><td></td><td></td><td></td>
// ";
//}
?>
</tr>
<tr></tr><tr></tr><tr></tr><tr></tr>
<tr></tr><tr></tr><tr></tr><tr></tr>
<tr>
<td></td><td></td><td></td><td></td><td></td>
<td></td><td></td><td></td><td></td><td></td>
<td></td><td></td>
<td>
<input type="submit" value="Save!">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
<center>
<br>
<a href="log.php" class="log">Log out!</a>
</center>
</body>
</html>
Dit is GEEN vergelijking maar een toekenning:
if ($aantal_keer = $aantal_taken) {

Een vergelijking heeft ==
@ - SanThe - ; Die had ik inmiddels door, ja. Maar het gaat even om het stuk script waar bij staat dat daar de fout in zit. Als ik die goed heb, kan ik de rest van het script nog eens helemaal nakijken (op bijvoorbeeld dat soort dingen).
Maar als ik deze fout eruit heb kan ik dus weer verder.

Reageren