In database???
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?
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:
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:
Ook hier kun je de 1 weer vervangen door een variabele.
Het moet iets zijn van: if die value is nul dan een actie doen, jij haalt iets op.
Code (php)
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 type="checkbox" name="jouwnaam" /></td>
</tr>
Gewijzigd op 01/01/1970 01:00:00 door Marvin S
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.
Gewijzigd op 01/01/1970 01:00:00 door Cedric
Zo klopt dit bijvoorbeeld niet:
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:
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?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();
}
?>
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:
Code (php)
zo iets..
Gewijzigd op 01/01/1970 01:00:00 door Cake Masher
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.
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.
`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">
<br>
Funtie 2:
<input type="checkbox" name="checkbox2" value="checkbox">
<br>
Functie 3:
<input type="checkbox" name="checkbox3" value="checkbox">
</p>
<p>
<input type="submit" name="send" value="Opslaan">
<br>
</p>
</form>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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);
?>
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);
?>
Gewijzigd op 01/01/1970 01:00:00 door Cedric
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.
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.
Database is in orde, maar hoe moet ik het doen voor het php gedeelte?
Gewijzigd op 01/01/1970 01:00:00 door Cedric
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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>';
}
?>
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...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
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...
if functie1 = 1 dan echo