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?
Als het formulier gepost is controleer je of de checkbox al dan niet aangevinkt is. Met andere woorden, je controleert of $_POST['naam_van_checkbox'] bestaat.

Afhankellijk daarvan voer je een INSERT query uit die de betreffende waarde in de database weg schrijft. Als je het zelfde script wilt gebruiken voor het updaten (waar het wel op lijkt) zou ik een INSERT ... ON DUPLICATE KEY UPDATE query gebruiken. Dus iets als:

INSERT INTO tabel (id, checkbox)
VALUES (1, 0)
ON DUPLICATE KEY UPDATE checkbox = 0


Waar ik nu een 1 en 0 ingevuld hebt, kun je die natuurlijk zelf vervangen met variabelen uit je script. Dus bijvoorbeeld $_POST['id'].

Om ervoor te zorgen dat een checkbox aangevinkt is in het formulier als er een 1 in de database staat, zul je die gegevens eerst uit de database op moeten halen met een SELECT query. Vervolgens controleer je de waarde die in het veld 'checkbox' staat en afhankelijk daarvan laat je de checkbox 'checked' of niet zijn.

Ditzelfde kun je gebruiken voor je tweede probleem. Je query zou dan zoiets worden als:

SELECT id, checkbox
FROM tabel
WHERE id = 1

Ook hier kun je de 1 weer vervangen door een variabele.
Straks zal ik eens proberen, dat eerste zal waarschijnlijk wel lukken maar dat tweede niet. :S

Het moet iets zijn van: if die value is nul dan een actie doen, jij haalt iets op.
<?php
//dit stukje zorgt ervoor dat de uitvoer
//OF 1 OF 0 wordt, ligt er dus aan of die
//aangevinkt is ja of nee
if (!isset($_POST['checkbox']))
{
$_POST['checkbox="0"'];
}else
{
$_POST['checkbox="1"'];
}
?>

je moet je query aanpassen en deze waardes erbij voegen.. met uiteraard
de naam van het veld die jij gebruikt voor die checkbox...

$query = "INSERT INTO tabel (checkbox1) VALUES ($_POST['checkbox']);";


hiermee maak je het stukje formulier die die checkbox weergeeft

<form name="form" method="post" action="dezepagina.php">
<input type="checkbox" name="checkbox" value="checkbox">
</form>



en dit stukje plaats je op de pagina waar je wilt laten zien of het een 0 of 1 is...
uiteraard wel weer de naam van het veld veranderen

<tr>
<td>jouwnaam:</td>
<td><input <?php if ($row['checkbox']=="1") { print "1"; } ?> type="checkbox" name="jouwnaam" /></td>
</tr>
Dat ziet er zeker bruikbaar uit, bedankt! Ik moet nu nog even wat werken voor school en dan ga ik het meteen uittesten. Ik post het wel als ik problemen heb.
Het is goed aan het lukken.
@Marvin: er zitten nog wel wat fouten in de scripts die jij geeft...

Zo klopt dit bijvoorbeeld niet:
<?php
$_POST['checkbox="0"'];
?>

En ook het weergeven van een aangevinkte checkbox doe je niet op de manier die jij gebruikt. Een checkbox die aangevinkt is heeft deze code:

<input type="checkbox" name="naam" value="iets" checked="checked">


Daarnaast horen integers niet tussen quotes. Het zijn integers en geen strings.

@Cedric: ja klopt, ik haal alleen iets op. Dit in de veronderstelling dat je zelf wel snapte hoe je dan kunt controleren of een opgehaalde waarde overeenkomt met een andere waarde.
dus alles samengevat:

<?php
if (!isset($_POST['checkbox'])) {
$query = "INSERT INTO tabel (checkbox) VALUES (1)";
} else {
$query = "INSERT INTO tabel (checkbox) VALUES (0)";
}
if(mysql_query($query)) {
echo "Done!";
} else {
echo mysql_error();
}
?>
///////
je form:
<input type="checkbox" naam="checkbox" <?php if($DitMagJeZelfDoen == '1'){ echo "checked";} ?> />


zo iets..
Ik geraak er helemaal geen wijs meer uit xD :'(
Waar loop je nu vast dan? Zo'n opmerking kunnen wij verder ook weinig mee...
Ik snap het helemaal niet met die array enzo. (ik weet wat het is, maar ik kan niet begrijpen waarom ik dit nodig heb.) Ik moet gewoon elke checkbox een value geven en in de tabel zetten. En doe ook apart kunnen aanspreken.

Reageren