Hallo, ik heb een systeempje met een adminpagina.

Probleem 1:
Op die pagina zou ik een checkbox willen plaatsen. Als ik dan op OK druk dan zou er een "0" moeten in de database geschreven worden en als het gecheckt is dan een "1". Als ik dan die pagina opnieuw bezoek zou die checkbox ook al juist moeten ingevuld zijn met de string uit de database (gecheckt bij 1).

Probleem 2:
Op een andere pagina zou ik dan moeten kijken of in de database een 1 of een nul zit (die checkbox).Zoiets:

if in de database een nul{
actie
}

Kan iemand helpen?
En hoe herken je de checkboxen onderling dan? Je kunt namelijk in de database wel een lijst met nullen en enen proppen, maar dat heeft geen nut als je ze niet onderling kunt herkennen.
Het gaat ons dus om dat form, de mysql tabel, en die kleine stukjes php, ik zal ze even posten en we kunnen ze bespreken.
CREATE TABLE `opties` (
`value` varchar(255) NOT NULL default '',
PRIMARY KEY (`value`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;



<form name="form" method="post" action="opties.php">
<p>Laatst aangepast weergeven:
<input type="checkbox" name="checkbox" value="checkbox"<?php if($row['functie1'] == "1") { echo 'checked=""';} ?>>
<br>
Funtie 2:
<input type="checkbox" name="checkbox2" value="checkbox"<?php if($row['functie2'] == "1") { echo 'checked=""';} ?>>
<br>
Functie 3:
<input type="checkbox" name="checkbox3" value="checkbox"<?php if($row['functie3'] == "1") { echo 'checked=""';} ?>>
</p>
<p>
<input type="submit" name="send" value="Opslaan">
<br>
</p>
</form>




<?php if($_SESSION["ingelogd"] == "TRUE"){

if (!isset($_POST['checkbox']))
{
$_POST['checkbox'] = "0";
}else
{
$_POST['checkbox'] = "1";
}

if (isset($_POST['send']))
{
$query = "UPDATE `opties` SET `value` = '".$_POST['checkbox']."'";
$sql = mysql_query($query);
}
$query = "SELECT * FROM `opties`";
$sql = mysql_query($query);
$row = mysql_fetch_array($sql);
?>
Ja, maar kijk het gaat dus al fout bij je database. Jij hebt nu een tabel met maar 1 kolom, 'value'. Hoe wil je nu ooit alle nullen en enen die je in de database wilt schrijven uit elkaar gaan houden?

Je zult dus minimaal een tabel met twee kolommen moeten hebben:

opties
-------
id (int, primary key, auto_increment)
value (int)

Daarnaast werk je in php met $row['functiex']. Als $row het resultaat is van een mysql_fetch_array() verwijst 'functiex' naar de kolomnaam uit een tabel. Maar aangezien die helemaal naam helemaal niet bestaat in je tabel, gaat dit dus niet werken.

Maar misschien dat het ook even handig is als je uitlegt wat je precies met dit script wilt bereiken. Dan is het mogelijk je ook wat tips te geven met betrekking tot je datamodel en hoe je het php gedeelte zou kunnen aanpakken.
Het datamodel was eerst met een id, maar het leek dat ik het niet nodig had :P. Ik die functiex enzo heb ik erbij geflapt zodat ik vlug meerdere checkboxes heb. Ik zal nu even alles uitleggen zodat je het beter begrijpt:

Ik heb een cms systeem met sessies. Dus als ik inlog wordt er een sessie aangemaakt en ga je naar het control panel. Daar heb ik ook een pagina opties gemaakt. De eerste functie die ik ga maken is als een dat speciale vinkje is aangevinkt dan zal op de output van het cms de datum en door wie het gepost is weergegeven worden, is het niet aangevinkt dan gebeurt er niks. Maar ik moet zo ook meerdere functies kunnen maken.

Hoop dat je het beter begrijpt.
Dus wat zou ik nu moeten doen om het een beetje werkend te krijgen?

Database is in orde, maar hoe moet ik het doen voor het php gedeelte?
Tja, dan zul je toch eens moeten beginnen met je datamodel.

Je zult dus een tabel met opties moeten hebben waarbij je minimaal de volgende velden hebt:

opties
-------
id
omschrijving
active

Naamgeving maakt natuurlijk niet uit, maar zo is het duidelijk:
id - Het unieke veld waardoor je verschillende opties kunt herkennen.
omschrijving - De omschrijving van de optie.
active - Het veld dat aangeeft of de optie geactiveerd is of niet.

Als we vervolgens eerst kijken naar het uitlezen van deze gegevens en het maken van een lijstje met checkboxes:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$sql = "
SELECT
id,
omschrijving,
active
FROM
opties
";

if(!$res = mysql_query($sql))
{
trigger_error(mysql_error());
}
else
{
echo '<form action="" method="">';

while($row = mysql_fetch_assoc($res))
{
if($row['active'] == 0)
{
echo $row['omschrijving'].': <input type="checkbox" name="opties[]" value="'.$row['id'].'"><br>';
}
else
{
echo $row['omschrijving'].': <input type="checkbox" name="opties[]" value="'.$row['id'].'" checked="checked" /><br>';
}
}

echo '<input type="submit" />';
echo '</form>';
}
?>
Dit is een minimale opzet voor een formuliertje zoals jij wilt gegenereerd aan de hand van gegevens uit de database. Nu kun je zelf verder met het voorbeeldscript dat ik al eerder gaf hoe je dit formulier kunt gaan verwerken.

ps. Niet bumpen! Is nergens voor nodig en mag pas na 24 uur...
Hiermee kan ik de active rij niet aanpassen... En als ik bv doe

if($row['active'] == 1)
{ iets doen
}

Dat kan niet lukken want hij weet niet welke optie het is...
Sorry als ik wat dom lijk :S Maar dit is moeilijk voor mij xD
Bij welk gegeven een checkbox hoort is meegegeven in de value van de checkbox, namelijk het id van een optie. Als je dit formulier dus verstuurt krijg je van alle aangevinkte checkboxen een record te zien. Van die weet je dus dat active op 1 gezet moet worden. Van de rest weet je dat die op 0 moet staan...
Euhh, sorry maar dit toont of deze functie active staat in de database of niet... Ik moet namelijk de active stand kunnen aanpassen. En zoals daarnet hoe kan ik dit dan doen?

if functie1 = 1 dan echo

Reageren