Ik heb al verschillende tabellen geprobeerd maar ik kom er maar niet uit.
Ik zoek een tabelstructuur waar dit mogelijk is:

Ik heb een form met verschillende checkboxes. Als ik op verzend druk moeten al hun value's (1 of 0) opgeslagen worden in de database. Maar ik moet die apart kunnen aanroepen. bv. if $row['functie'] = 1 then ....
Met 1 lukt dit alles maar met meerdere niet.

Voor de verduidelijking dit is mijn pagina:

<?php session_start();

$server = "";
$gebruiker = "";
$wachtwoord = "";
$db = "";

$connectie = mysql_connect($server,$gebruiker,$wachtwoord)
or die ("Kon niet connecteren met de server");
mysql_select_db($db,$connectie)
or die ("Kon de database niet selecteren");

define('BR',"\r\n");
$paginaid = 1;
$referentieid = 1;
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>

<?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);
?>
</head>
<body>
<div id="container">

<div align="right"><br>
<a href="logout.php"> </a><a href="admin.php">Editor</a> - <a href="logout.php">Log uit</a>&nbsp;
</div>

<div id="content">
<br>
<br>
<br>
<br>
<form name="form" method="post" action="opties.php">
<p>Laatst aangepast weergeven:
<input type="checkbox" name="checkbox" value="checkbox"<?php if($row['value'] == "1") { echo 'checked=""';} ?>>
</p>
<p>
<input type="submit" name="send" value="Opslaan">
<br>
</p>
</form></div>

<?php
}else{
echo "<BR>U moet eerst inloggen!&nbsp;";
}
?>

</div>
</body>
</html>

Ik zie nergens een insert query? En ook je UPDATE query klopt niet helemaal, je mist de benodigde WHERE clause.

Je moet zorgen dat je in je tabel een kolom hebt waarin unieke waarden staan zodat elk record in die tabel uniek is. Over het algemeen wordt daarvoor een kolom 'id' voor gebruikt met een auto_increment op die kolom.

Updaten van een record doe je dan dus met:

UPDATE tabel
SET value = 1
WHERE id = 12

In plaats van 1 en 12 kun je natuurlijk ook een variabele gebruiken.

Je zegt tevens dat je een formulier hebt met meerdere checkboxen. Ik zie er maar 1 in je formulier?
Ik zie je ook maar 1 checkbox invoegen...
Ja, sorry, maar dat was de test. Eingelijk zijn het er meer.
Maar ik kan toch niet elke query opnieuw maken voor elke functie, want dan klopt de row variable niet meer.

Edit: O ja die insert query had ik manueel uitgevoerd, want anders snap ik het helemaal niet meer :S Tenzij jullie mij kunnen helpen?
Als je meerdere checkboxen hebt, zou je een array als naam van die checkboxen kunnen gebruiken.

Op de pagina waar je de gegevens uit het formulier verwerkt kun je die array vervolgens met een foreach loop uitlezen en de benodigde queries uitvoeren.

Kijk voor een voorbeeldje van het gebruik van arrays als input namen eens hier.
@cedric..
dat stukje dat ik je gaf moet niet zo:
<?php if($row['value'] == "1") { echo 'checked=""';} ?>

maar zo:

<?php if($row['opties'] == "1") { echo 'Ik ben aangevinkt';} ?>
Marvin, waar maak je dat uit op? Het plaatsen van de tekst 'Ik ben aangevinkt' in een input tag lijkt me hoogst ongebruikelijk...
Laten we met alles verdergaan in de post "In database???" Het gaat namelijk over het zelfde
dat komt omdat ik uit zijn andere topic eruit begreep dat er een 0 of 1 weggeschreven moest worden.. dit heeft niet te maken met de database
invoer.. dit is zoals hij in zijn andere topic vroeg:

'op een andere speciale pagina moet ik kunnen zien of de checkbox is aangevinkt' dmv:

<?php if($row['opties'] == "1") { echo 'Ik ben aangevinkt';} ?>

word gewoon bij de ingelogde user (mits hij sessies gebruikt, maar zo te zien wel...) gekeken of dat betreffende veld 'opties' Wel of niet is aangevinkt.. en dan echoot hij ' ik ben aangevinkt' en anders echoot die niets..
Toch wat beter lezen volgende keer:

Ten eerste is dat if-statement onderdeel van een <input> tag. Daar ga je dus nooit zomaar tekst in gooien. Daarnaast is $row['value'] wel degelijk een uitkomst uit de database waarbij dit de juiste variabele is. Aangezien 'opties' de tabelnaam is, zal de variabele $row['opties'] dus al nooit bestaat.

En tenslotte nog een kleinigheidje: integers plaats je niet tussen quotes. Het zijn immers geen strings.

Reageren