Hi, in some cases, you might prefer to use a multiple <SELECT> element; this can give you a much more compact user interface (though you probably won't use it if you have 40 options ...)
It goes like this: <SELECT multiple name="action[]" size="5"> <OPTION value="0" selected="selected">--all--</OPTION> <OPTION value="1">conjuration</OPTION> <OPTION value="2">abjuration</OPTION> ... <OPTION value="n">divination</OPTION> </SELECT> will pass an associative array $_POST['action'] ( "1" => "conjuration", ..., "n" => "divination" ) Here I use the value "0" to select all - this calls a simple script to generate the sequence "1,2, ...,n" that will be written into the DB. (In general it is nice to provide a "all" checkbow when you have a long list.) I use a set( '1','2', ..., 'n') MySQL datatype to store the thing. The data appears physically as "1,2,...,n". Quite convenient. Probably a bit more economical than storing a varchar (says the MySQL documentation ...) HTH Ignatius ____________________________________________ ----- Original Message ----- From: "John Nichel" <[EMAIL PROTECTED]> To: "Tom Rogers" <[EMAIL PROTECTED]> Cc: "Shiloh Madsen" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Saturday, October 19, 2002 9:15 AM Subject: [PHP-DB] Re: [PHP] Enum table entry > You know, I didn't even think about serializing the array. I have a > table set up for spells, one for schools, and a linking table using the > spell id and the school id(s). I could have done without the linking > table. Some of you people are pretty freakin' smart. :) > > One note though, when you pull the serialized data out, you may have to > stripslashes before unserialize... > > $school = unserialize ( stripslashes ( $row['school'] ) ); > > Tom Rogers wrote: > > Hi, > > > > Saturday, October 19, 2002, 2:48:14 PM, you wrote: > > SM> Have a question that im trying to figure out how to resolve. I have a field type in mysql that is of the enum type. Unless youre familiar with Dungeons and Dragons, you wont get what the values > > SM> mean, but hopefully youll get the gist anyway. I have a column labelled school which holds an enum data type comprised of the values 1 through 40. From the website front end, where the data is > > SM> being entered, i want to display, ideally a series of checkboxes, otherwise a list which would allow a user to select multiple items in that will translate into this enum field. For instance, a > > SM> series of checkboxes with items such as abjuration, conjuration, divination, and others, which will all have a numeric value which gets plugged into the enum field. for instance, if a user > > SM> selected abjuration, and divination, it would be plugged into sql as 1, 3 (or however enum data is input into its column). That being the case how do i utilize php to get this to work? what kind > > SM> of form elements etc... The problem im seeing with checkboxes are that they are discreet and dont group together, so i cant get all the data to go into one column in mysql. Hopefully i havent > > SM> horribly confused the issue and some kind soul out there can tell me how to send this data across. As a double nice thing...how would you write it to pull the data back out...ie, convert 1, 3 to > > SM> show abjuration, divination? Thanks for the help in advance. > > > > I have never used enum type but I am sure it is not what you want as > > it will only store one item from a predefined list not a list of > > items. What you need to do is create an array of the selected items, > > serialize() it to store in the database in a varchar or mediumtext if > > it going to get big. Then when you read it back unserialize and loop > > through all the options setting "checked" if it is in the array. > > To keep the checkboxes grouped name them like this: > > <input type="checkbox" name="school[1]"> > > <input type="checkbox" name="school[2]"> > > <input type="checkbox" name="school[3]"> > > > > That will show up as an array under $_POST['school'] > > so you can serialize it as is and store it. > > > > <? > > if(isset($_POST['school'])) $school = serialize($_POST['school']); > > ?> > > > > Playback is simple too > > > > <? > > $school = unserialize($row['school']); > > for($i = 1;$i < 41;$i++){ > > echo '<input type="checkbox" name="school['.$i.']"'; > > if(isset($school[$i])) echo ' checked'; > > echo '>'; > > } > > > > Un-checked boxes are not returned in the post and checked ones > > return Yes I think. > > > > > > > > > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php