Selectboxes laden vanuit een sql database, vervolgens checked of unchecked ophalen.

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Beste,

ik ben al n dagje bezig met dit:

Ik wil checkboxen genereren vanuit sql, dus stel er zitten 5 records in een tabel, dan wil ik 5 checkboxjes hebben, nou op zich niet spanned, dat doet het ook wel.

Echter staan deze in een form , waarin ik wil laten zien of ze al checked zijn vanuit de database ja of nee.

Om het allemaal moeilijker te maken heb ik een tabel voor de complete beschrijving + naam, en één tabel waarin een compleet product samenkomt waar ik de naam van die checkboxes gekoppeld heb aan het id in de losse tabel.

dus tabel_x bevat puur info over de checkboxes
tabel_y bevat veel meer info, en in één veld heb ik de mogelijkheid om de ID's uit tabel_x te zetten, gescheiden door ;.

hoe laat ik nu tegelijkertijd zien welke gecheckt is, en welke niet, en kan ik er één aanvinken en een waarde meegeven?
 
Hoe ziet die tabelstructuur er uit?
Oftewel, dump even de SQL-export van de tabellen

Checkbox aan of uit is niet erg moeilijk
PHP:
$iets = 0;
$checked = ($iets == 1) ? 'checked="checked"' : '';
echo '<input type="checkbox" '. $checked .'/>
 
Laatst bewerkt:
Euh , het gaat niet handig zijn om de dump hier neer te zetten, er zit te veel (>200 records).

Maar ik beschrijf het even, als ik maar een richtlijntje heb ben ik al blij.

Ik heb één tabel waar een heel product (in mijn geval een reis) samen komt, te beginnen met id, naam, code, prijs, beschrijving, type, foto.

en ik heb één tabel met types tre beginnen met :
id, naam, beschrijving.

in de product tabel staat dan in het veld type de id's van de 2e tabel.
 
Je kunt ook gewoon het CREATE-gedeelte plakken :), de INSERT heb ik niet nodig.

Volgens mij is het SQL-wise gezien beter om een koppeltabel te gebruiken dus:

Tabel: "product"
id,
naam,
code,
prijs,
beschrijving,
foto

Tabel: "type"
id,
naam,
beschrijving

Tabel: "producttype"
product_id,
type_id

Dan kun je de koppeltabel gebruiken om alles types van het product te achterhalen
 
Hmm, daar was ik al n beetje bang voor, ik wilde namelijk niet met koppeltabellen werken, want ik moet dit op meerdere manieren met meerdere velden verwerken.

Dat zou dan betekenen dat ik heel veel koppeltabellen ga krijgen.

De Creates:
PHP:
CREATE TABLE IF NOT EXISTS `accomodatie_types` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(250) NOT NULL,
  `alias` varchar(250) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

En :
PHP:
CREATE TABLE IF NOT EXISTS `accomodations` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `code` varchar(100) NOT NULL,
  `land_id` int(11) NOT NULL,
  `alias` varchar(250) NOT NULL,
  `naam` varchar(200) NOT NULL,
  `plaats` varchar(200) NOT NULL,
  `intro` varchar(250) NOT NULL,
  `vanafPrijs` decimal(9,2) NOT NULL,
  `numberDays` int(10) NOT NULL,
  `infoAlgemeen` text NOT NULL,
  `infoFaciliteiten` text NOT NULL,
  `infoAccomodatie` text NOT NULL,
  `klasse` decimal(5,1) NOT NULL,
  `soort` varchar(100) NOT NULL,
  `type` varchar(250) NOT NULL,
  `details` text NOT NULL,
  `thumbnail` varchar(200) NOT NULL,
  `active` int(1) NOT NULL,
  `aangemaakt` int(11) NOT NULL,
  `gewijzigd` int(11) NOT NULL,
  `reisSoorten` text NOT NULL,
  `accomodatieTypes` text NOT NULL,
  `offer_price` int(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=161 ;

het id, van de records uit tabel accomodatie_types, correspondeert dan met `accomodatieTypes`.
 
Laatst bewerkt:
Nu kan ik deze met wat omwegen vergelijken met een var die ik bij het complete product ophaal.

query 1 haalt accomodatieTypes op uit accomodations

quer 2 haalt de id's uit accomodatietypes tabel.
PHP:
str_replace (';', '' , $accomadatieTypes);
if ($id == $$accomodatieTypes){

//checked
}

else {

//niet gechecked
}

Maar dat werkt alleen als er maar één type bestaat dus in het staat dan ;1;.
Als er meerdere types in staan(bijv. ;2;4;3; ) vliegt ie de else in.
 
Je slaat die data toch niet echt semicolon-gescheiden op toch?

Echt, ga normaliseren, want hiermee kom je enorm in de knoop. Is het niet nu, dan is het wel later. Voor het ontwerpen van databases zijn standaarden, en die zijn er écht niet voor niets. Ga er maar vanuit dat dat mensen zijn geweest die een stuk slimmer waren dan jij en ik en zijn.

Een mooi artikel over het ontwerpen van databases:
http://www.yapf.net/index.php/Database_ontwerp_101

Het mooie is dat je een database - in beginsel - niet fout kunt ontwerpen als je je aan de regels houdt.


EDIT:
En hou de naamgeving van je kolommen/tabellen etc. consequent! Voorkeur heeft Engels, Nederlands kan uiteraard ook, maar niet allebei (active, offer_price, beschrijving). Ook hier zijn uiteraard mooie artikelen over:
http://www.interaktonline.com/Suppo...e+Naming+Convention.html?id_art=24&id_asc=221

Onder die link staan wat richtlijnen. Kun je zelf uiteraard een hoop mee spelen, maar hou het in ieder geval altijd consequent.
 
Laatst bewerkt:
Ten Eerste, heb je volkomen 100% gelijk.

Echter is het zo, dat ik een bestaande(ooit voor ons gemaakte) website aan het aanpassen, ben, en helaas met de beperking dat ik niet overal bij kan.

In het kader van kostenbesparing heb ik besloten zelf maar een aantal dingen te gaan veranderen, en loop ik inderdaad tegen een aantal van deze rare zaken aan, had ik het zelf gedaan, dan was dit in een koppeltabel gebeurd o.i.d.

Ik ben er inmiddels wel uit, door m te exploden bij het ophalen , en te imploden bij het wegschrijven.Goede oplossing, nee waarschijnlijk niet, maar ik weet zo even niets anders:(
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan