Vraag over checkboxen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Simon Kroes

Simon Kroes

30/03/2011 18:06:38
Quote Anchor link
Hallo allemaal,

Ik heb een vraag.

Ik ben bezig met een script waarbij meerdere checkboxen worden aangevinkt, in de database gezet worden.

Ik heb het zo bedacht: Je zet het in de database (in een veld want het zijn stuk of 20 checkboxen die niet allemaal aangevinkt moeten zijn) geschijden met een komma, Naast dat wil ik het ook nog kunnen bijwerken en dat de checkboxen automatisch 'gecheckt' zijn als dat in de database staat, maar hoe kan ik het beste dit doen?

Hopelijk kunnen jullie me helpen,
Groeten,
Simon
 
PHP hulp

PHP hulp

29/03/2024 16:37:41
 
Martijn B

Martijn B

30/03/2011 18:22:15
Quote Anchor link
Je checkboxen zien er bijvoorbeeld zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<input type="checkbox" value="123" name="checkboxgroep[]" />
<input type="checkbox" value="124" name="checkboxgroep[]" />
<input type="checkbox" value="125" name="checkboxgroep[]" />
<input type="checkbox" value="126" name="checkboxgroep[]" />


Als je bovenstaande verstuurd en je vinkt de eerste
en de laatste checkbox aan, dan heb je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_POST['checkboxgroep']); // array(123,126)
?>


Als je formulier per gebruiker is dat heb je minimaal twee tabellen nodig.
Als bijvoorbeeld de waarde 123,124,125 en 126 voor setting id's staan dan heb je een tabel met setting,s en een koppeltabel nodig.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
settings
 - settingid
 - name

user_to_settings
 - userid
 - settingid


Als gebruiker 11 nu de eerste en laatst checkbox aanvinkt. Dan word deze query uitgevoerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sQry
= 'INSERT INTO user_to_settings (userid, settingid)
VALUES (11,123), (11,126)'
;
?>


Voordat je bovenstaande query uitvoerd wel even een delete query uitvoeren voor gebruiker 11 op deze tabel.

Edit:

heb je ook nog tekst velden dan kun je de koppeltabel uitbreiden met een 3e veld met bijvoorbeeld de naam "val" met als type varchar.
Gewijzigd op 30/03/2011 18:30:20 door Martijn B
 
Simon Kroes

Simon Kroes

30/03/2011 19:13:07
Quote Anchor link
Bedankt voor de reactie,

Het eerste stuk wist ik al. maar is het niet mogelijk om de gewoon de namen uit de database te halen, en dan met de explode de komma te herkennen en die dan in stukken verdelen. en met die waardes een combinatie maken vanuit een array bv if($array[] == 'naam'){ echo ' checked'; }
 
Martijn B

Martijn B

30/03/2011 19:23:56
Quote Anchor link
Id's gescheiden door een komma's in je database zou ik niet doen. Normaliseren is het toverwoord ;P
Gewijzigd op 30/03/2011 19:24:38 door Martijn B
 
Simon Kroes

Simon Kroes

30/03/2011 19:26:55
Quote Anchor link
Maar het zijn 23 vakjes in totaal, en er zijn al zoveel in de database..

Maar toch bedankt,
ik ga wat opzoeken over normaliseren.
 

30/03/2011 19:29:35
Quote Anchor link
Wat voor data wil je dan opslaan?
 
Simon Kroes

Simon Kroes

30/03/2011 19:45:26
Quote Anchor link
Muziek style,

Maar een aparte tabel met alle muziek soorten is heel veel werk, als ik niks anders kan bedenken zal ik dat toch maar doen.
 

30/03/2011 19:48:38
Quote Anchor link
Je moet idd een aparte tabel met muzieksoorten hebben!
 
Martijn B

Martijn B

30/03/2011 19:54:09
Quote Anchor link
Ik zou niet weten hoe jij het dan nog makkelijker wil doen?

Een tabel met muzieksoorten kun je ook voor andere dingen gebruiken natuurlijk.

Het filteren, zoeken en bladeren van muziek bijvoorbeeld?
 
Simon Kroes

Simon Kroes

30/03/2011 19:56:51
Quote Anchor link
Maar het is alleen voor een overzicht voor wat gebruikt moet worden :P

Maar oke, Ik zal een tabel erbij maken.
 

30/03/2011 19:59:34
Quote Anchor link
Zoek inderdaad maar op normaliseren, dan zie je dat je dat moet doen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.