Toon posts:

Checkbox waardes komen niet in database

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een formulier geschreven wat je in moet voeren en wat dan in een database wordt weggeschreven. Dit werkt goed, behalve dan de checkboxes.

ik heb het als volgt:

<input type=hidden name=subtitles value=$nl $eng $de $fr $sp $gr $zw $por $dk $fi $no $tr $po $cz $ho $bu $ijs $arab $hind $heb>
<input type=checkbox name=nl value=nl checked>Nederlands<br>
<input type=checkbox name=eng value=eng checked>Engels<br>
<input type=checkbox name=de value=de>Duits<br>
<input type=checkbox name=fr value=fr>Frans<br>
<input type=checkbox name=sp value=sp>Spaans<br>
<input type=checkbox name=gr value=gr>Grieks<br>
<input type=checkbox name=zw value=zw>Zweeds<br>
<input type=checkbox name=por value=por>Portugees<br>
<input type=checkbox name=dk value=dk>Deens<br>
<input type=checkbox name=fi value=fi>Fins<br>
<input type=checkbox name=no value=no>Noors<br>
<input type=checkbox name=tr value=tr>Turks<br>
<input type=checkbox name=po value=po>Pools<br>
<input type=checkbox name=cz value=cz>Tsjechisch<br>
<input type=checkbox name=ho value=ho>Hongaars<br>
<input type=checkbox name=bu value=bu>Bulgaars<br>
<input type=checkbox name=ijs value=ijs>IJslands<br>
<input type=checkbox name=arab value=arab>Arabisch<br>
<input type=checkbox name=hind value=hind>Hindoestaans<br>
<input type=checkbox name=heb value=heb>Hebreeuws<br>

zoals jullie zien hoort er in de variabele $subtitles de value van de geselecteerde checkboxes te komen staan. Helaas werkt dit dus niet, er komt helemaal nix in mijn database te staan. Als ik de "name" van de checkboxes allemaal in $subtitles verander wordt er maar een waarde in de database gezet. En dat is uiteraard niet de bedoeling anders had ik wel radiobuttons gebruikt.

Wie weet een oplossing?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

1) zet quotes om je value heen
2) hoe ga je dat hidden veld bijhouden? met javascript? Bedenk wel dat dat niet bij iedereen gaat werken.

Beter is denk ik om al je checkboxen een name="subtitles[]" te geven; in php is je $_POST['subtitles'] dan een array waar je doorheen kan lopen.

Intentionally left blank


Verwijderd

Hint: Doe na je submit eens een phpinfo(), dan zie je precies welke variabelen er op welke manier meegegeven zijn.
Verder heb ik het idee dat je clientside en serverside scripting een beetje door elkaar haal :)

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 24-11-2025

PommeFritz

...geen friet

je weet ok dat een niet gevinkte checkbox niet meekomt in een form POST?

FireFox - neem het web in eigen hand


Verwijderd

Topicstarter
PommeFritz schreef op 22 April 2003 @ 23:32:
je weet ok dat een niet gevinkte checkbox niet meekomt in een form POST?
alleen de aangevinkte checkboxes moeten in de database komen, dus dat zit wel goed dacht ik

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 18:10
Je praat over checkbox waarden die niet in de database terecht komen. Ik mis eigenlijk het stukje code dat de form-waardes verwerkt tot mooie sql inserts. Kun je deze er nog bij geven?

Verder zou je nog even de werking van het hidden field kunnen uitleggen. Is dit om databaseload te verminderen (vergelijken oude en nieuwe waarde door script zelf laten doen)?

Als je met arrays gaat werken wordt je php/perl/c/asp/jsp/... code ook netter.

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 13-05 18:40
Wellicht heb je hier wat aan:

http://www.devshed.com/Server_Side/PHP/DB_Basics/page6.html

Hier maken ze een komma gescheiden string van de checkbox values.

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 08:04
Hoi,

Ik heb dit probleem ook gehad, en heb het vervolgens op deze manier opgelost:

code:
1
2
3
4
5
<?
if ($_POST[news] == "on")   { $_POST[news] = "yes"; }   else { $_POST[news] = "no"; }
if ($_POST[mailmssg] == "on")   { $_POST[mailmssg] = "yes"; }   else { $_POST[mailmssg] = "no"; }
if ($_POST[mailsee] == "on")    { $_POST[mailsee] = "yes"; }    else { $_POST[mailsee] = "no"; }
?>

[ Voor 32% gewijzigd door GewoonNico op 23-04-2003 17:14 ]


Verwijderd

Topicstarter
nescafe schreef op 22 April 2003 @ 23:57:
Je praat over checkbox waarden die niet in de database terecht komen. Ik mis eigenlijk het stukje code dat de form-waardes verwerkt tot mooie sql inserts. Kun je deze er nog bij geven?

Verder zou je nog even de werking van het hidden field kunnen uitleggen. Is dit om databaseload te verminderen (vergelijken oude en nieuwe waarde door script zelf laten doen)?

Als je met arrays gaat werken wordt je php/perl/c/asp/jsp/... code ook netter.
de rest van het form wordt wel in de database gegooid, dus dat gedeelte werkt...

hidden field moet een verzameling worden van subtitles die beschikbaar zijn, waarden die niet bij een dvd horen hoeven dus ook niet opgeslagen te worden

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 18:10
Verwijderd schreef op 23 April 2003 @ 20:28:
[...]


de rest van het form wordt wel in de database gegooid, dus dat gedeelte werkt...

hidden field moet een verzameling worden van subtitles die beschikbaar zijn, waarden die niet bij een dvd horen hoeven dus ook niet opgeslagen te worden
Okee ik snap nu wat de bedoeling is (dmv client-side scripting je hidden field "subtitles" updaten met een lijst die met spaties gescheiden is, alleen je client-side scripting ontbreekt nog)

In PHP (aangezien je niet protesteert, neem ik aan dat je in PHP zit te werken, hoewel je dit zelf nergens hebt aangegeven) zou ik de oplossing van crisp gebruiken. Geef de checkboxen name="subtitles[]" mee, waardoor de array $_POST['subtitles'] gevuld wordt met je checkboxen. Vervolgens kun je, alleen als je het echt zeker weet en het niet anders wilt oplossen, deze array converteren tot een string met behulp van de functie implode en in je database stoppen.

En dit staat ook in de link die Morrar in "Checkbox waardes komen niet in database" je gegeven heeft.

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Een beetje onnozel om een nieuwe thread te openen (maar misschien even onnozel om een twee jaar oude thread van onder het stof te halen =)), dus dan maar hier.

Ik zit dus ook met een checkbox-probleem en ik vind de oplossing nergens.
De opzet is zeer simpel: een formuliertje in search.php

HTML:
1
2
<input type="checkbox" name="owner[]" value="elenchi_has">
<input type="checkbox" name="owner[]" value="sloef_has">


en in searchresults zou ik uit die twee checkboxkes willen halen wie het gezochte item in bezit heeft.

Nu lees ik overal dat ik dat moet doen door $HTTP_POST_VARS['owner'] als array te gebruiken, maar als ik geen enkel boxje aanvink, krijg ik steevast de error "Notice: Undefined index: owner in C:\Apache2\htdocs\essis\searchresults.php on line 19". Een beetje vervelend, aangezien ik dus ook geen controle kan inbouwen op wel of niet gecheckt zijn van checkboxes (als ik wil controleren op NULL krijg ik onmiddellijk die error).

Doe ik iets fout?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

PHP:
1
2
3
4
5
6
7
8
if (isset($_POST['owner']) && is_array($_POST['owner']))
{
  // bevat 1 of meerdere items
}
else
{
  // bevat geen items
}

Intentionally left blank

Pagina: 1