Checkboxen
Ik wil het volgende:
Ik heb een database waar ik uit haal via 1 of 0 of iemand admin is of niet. Dan wil ik dit in een checkbox echo'en. Dit lukt. Dan wil ik dat als ik die checkbox uit zet via een query dat laten veranderen in de database.
Het probleem:
Ik krijg niet in een variable of de checkbox gecheckt is of niet.
Ik heb hierop gegoogled en ben op een stukje code uitgekomen dat bij mij gewoon niet werkt, maar ik denk dat het wel zou moeten werken...
Wat is er mis met deze code:
$nieuwsbrief = 1;
echo '<input type="checkbox" name="nieuwsbrief"';
if($nieuwsbrief == 1) {
echo ' checked';
}
echo ' />';
if(isset($_POST['nieuwbrief'])) {
$nieuwsbrief = 1;
} else {
$nieuwsbrief = 0;
}
if ($nieuwsbrief == 1){
echo "hoi";
}
else {
echo "doei";
}
Dit is even voor mezelf om te kijken of die POST werkt, maar dat doet hij dus duidelijk niet. Hij echo'd gewoon domweg "doei". Als ik weet waarom dit niet werkt kan ik het in mijn eigen code toepassen.
Ik heb een database waar ik uit haal via 1 of 0 of iemand admin is of niet. Dan wil ik dit in een checkbox echo'en. Dit lukt. Dan wil ik dat als ik die checkbox uit zet via een query dat laten veranderen in de database.
Het probleem:
Ik krijg niet in een variable of de checkbox gecheckt is of niet.
Ik heb hierop gegoogled en ben op een stukje code uitgekomen dat bij mij gewoon niet werkt, maar ik denk dat het wel zou moeten werken...
Wat is er mis met deze code:
$nieuwsbrief = 1;
echo '<input type="checkbox" name="nieuwsbrief"';
if($nieuwsbrief == 1) {
echo ' checked';
}
echo ' />';
if(isset($_POST['nieuwbrief'])) {
$nieuwsbrief = 1;
} else {
$nieuwsbrief = 0;
}
if ($nieuwsbrief == 1){
echo "hoi";
}
else {
echo "doei";
}
Dit is even voor mezelf om te kijken of die POST werkt, maar dat doet hij dus duidelijk niet. Hij echo'd gewoon domweg "doei". Als ik weet waarom dit niet werkt kan ik het in mijn eigen code toepassen.
het is checked="checked"
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
Gewoon checked kan ook. Dat maakt niets uit heb ik gemerkt. De checkbox verschijnt ook wel gewoon goed en is gecheckt als ik de pagina laadt. Het probleem zit hem in de variable uit de checkbox halen om te kunnen gebruiken in bijvoorbeeld een echo, of wat ik eigelijk wil om te kunnen versturen als 1 of 0 naar mijn database.
De waarde van een checkbox wordt niet verzonden als hij niet aangevinkt is. Je moet dus met
checken.
Overigens is checked="checked" XHTML valid en iets anders niet.
Code (php)
checken.
Overigens is checked="checked" XHTML valid en iets anders niet.
Maar dat is tog precies wat ik gedaan heb? En nog doet hij het niet... Hij geeft nog steeds alleen "Doei" gedeelte, terwijl de checkbox tog gecheckt is.
Mijn code heb ik even aangepast en dit is het nu:
Wat klopt er dan nog niet?
Mijn code heb ik even aangepast en dit is het nu:
Code (php)
Wat klopt er dan nog niet?
Gewijzigd op 01/01/1970 01:00:00 door Menno Ridder
Dus weet iemand wat ik hier fout doe?
Wat Jan zegt klopt inderdaad.
De fout jouw code is dat je geen formulier hebt aangemaakt. In ieder geval: die is niet te zien in jouw code.
De fout jouw code is dat je geen formulier hebt aangemaakt. In ieder geval: die is niet te zien in jouw code.
Ok. Ik wist niet dat dit alleen werkte in formulieren. Mijn code heb ik nu aangepast, en nu werkt het raar genoeg nog steeds niet... Ik heb dus gemerkt dat het $_POST['nieuwsbrief'] gedeelte niet werkt. Wat doe ik dan nu nog fout?
Code (php)
$_POST['nieuwsbrief'] zal pas bestaan als je het formulier verzonden hebt. Maar ik zie in jouw scriptje nergens een submit knop staan die daarvoor kan zorgen?
Ah, nu begrijp ik het. Het werkt nu wel, en ik weet nu ook eindelijk wat ik aan mijn script moet veranderen om het werkend te maken:)
Bedankt iedereen!
Bedankt iedereen!
Ok, volgende probleem... Ik heb in mijn database bools staan of iemand Admin is (1 of 0) of Systeembeheerder is... Nu wil ik dat kunnen echo'en in een checkbox, maar ik heb geen idee hoe ik dat op deze manier moet combineren in een array. Ik zit misschien wel onnodig moeilijk te denken, maar kan iemand mij helpen?
Niet Bumpen.
SanThe.
'Bumpen:':
SanThe.
Dat zou je met zo'n constructie kunnen oplossing.
Je controleert dus eerst of iemand een admin is door te kijken of $row['Admin'] gelijk is aan 1. Als dat zo is, zorg je dat de checkbox aangevinkt is...
Code (php)
1
2
3
4
2
3
4
<?php
$checked = $row['Admin'] == 1 ? 'checked="checked"' : '';
echo '<input type="checkbox" name="admin" '.$checked.' />';
?>
$checked = $row['Admin'] == 1 ? 'checked="checked"' : '';
echo '<input type="checkbox" name="admin" '.$checked.' />';
?>
Je controleert dus eerst of iemand een admin is door te kijken of $row['Admin'] gelijk is aan 1. Als dat zo is, zorg je dat de checkbox aangevinkt is...
Ok, dat ziet er goed uit. Maar wat doe ik hier dan nog fout? Hij checkt niets.
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
while ($row = mysql_fetch_array($result)){
echo " {$row['users']}";
$adminchecked = $row['Admin'] == 1 ? "checked='checked'" : '';
$systeemchecked = $row['Systeembeheer'] == 1 ? "checked='checked'" : '';
echo " <tr>";
echo " <td><input type='checkbox' '.$adminchecked.' /><br /></td>";
echo " <td><input type='checkbox' '.$systeemchecked.' /><br /></td>";
echo " <td><a href='?act=edit&id=".$row[0]." '>[bewerken]</a></td>";
echo " </tr>";
}
?>
while ($row = mysql_fetch_array($result)){
echo " {$row['users']}";
$adminchecked = $row['Admin'] == 1 ? "checked='checked'" : '';
$systeemchecked = $row['Systeembeheer'] == 1 ? "checked='checked'" : '';
echo " <tr>";
echo " <td><input type='checkbox' '.$adminchecked.' /><br /></td>";
echo " <td><input type='checkbox' '.$systeemchecked.' /><br /></td>";
echo " <td><a href='?act=edit&id=".$row[0]." '>[bewerken]</a></td>";
echo " </tr>";
}
?>
Ik zou zeggen, kijk eens naar de kleurtjes...
Jij gebruikt dubbele quotes voor je echo, dus dan zul je ook dubbele quotes moeten gebruiken om de variabelen buiten quotes te halen. Verder is het ook erg slim om je checkboxen een naam te geven, zeker als je ze later nog in een formulier wilt verzenden.
Jij gebruikt dubbele quotes voor je echo, dus dan zul je ook dubbele quotes moeten gebruiken om de variabelen buiten quotes te halen. Verder is het ook erg slim om je checkboxen een naam te geven, zeker als je ze later nog in een formulier wilt verzenden.
Pff.. Dat was een stomme fout. Dank je wel voor al je hulp, top!
PS. ik disable de checkboxen, gebruik ze verder niet. Is alleen maar voor een admin panel, eigelijk meer voor de layout zodat mensen geen eentjes en nulletjes te zien krijgen maar een nette checkbox.
PS. ik disable de checkboxen, gebruik ze verder niet. Is alleen maar voor een admin panel, eigelijk meer voor de layout zodat mensen geen eentjes en nulletjes te zien krijgen maar een nette checkbox.
@menno.
je kan wellicht ook een mooi img checkboxje gebruiken...als je hem toch disabled. is maar een tip ;-).
je kan wellicht ook een mooi img checkboxje gebruiken...als je hem toch disabled. is maar een tip ;-).
Het is voor school. Een project waar ik nog maar een week voor heb en nog ontzettend veel te doen, dus ik hou het even hierbij:P
Wel bedankt voor de tip, volgende keer ga ik daar zeker aan denken.
Wel bedankt voor de tip, volgende keer ga ik daar zeker aan denken.
'Jan:
De waarde van een checkbox wordt niet verzonden als hij niet aangevinkt is.
@Jan
Je zegt dat de waarde niet wordt verzonden, dus dan is de inhoud van de POST variabele bij die checkbox gewoon Leeg (NULL).
Kan je dan niet beter met de empty functie controleren of de checkbox is aangevinkt, zoals hieronder:
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
@Robert: een checkbox wordt alleen met het formulier meegezonden als deze aangevinkt is. Van een checkbox die niet aangevinkt is, zul je dus ook helemaal niets in de POST array tegenkomen. De functie isset() kun je hier dus ook prima gebruiken ;-)
Oké, ik wist niet zeker, ik gebruik altijd empty eigenlijk. Maar ik reageerde ook vooral op wat Jan zei. Als er geen waarde wordt meegezonden zou je namelijk empty moeten gebruiken, ook een lege variabele wordt namelijk goedgekeurd.
Maar 'k heb het even getest, isset() is inderdaad ook prima :)
Maar 'k heb het even getest, isset() is inderdaad ook prima :)





