[PHP-DB] Re: [PHP] Enum table entry
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. -- regards, Tom -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[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
Re: [PHP-DB] Re: [PHP] Enum table entry
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=1conjuration/OPTION OPTION value=2abjuration/OPTION ... OPTION value=ndivination/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
[PHP-DB] RE: [PHP] Enum table entry
There should really be another table for all of this information. Say you're tracking school information for a specific person. That person would have an ID number and you'd store the school information in a separate table that stores the user's ID and the school ID. You could even expand this to track other items by adding a third column that says the item being tracked is a school, spell, item, etc. This may seem like a pain now, but it's going to be the most scalable solution. Using serialize, what happens when someone has all 40 schools and it's over 255 characters? Do you make them all text columns? An ideal solution would involve a variety of tables. Table 1: Users. This would store user information such as name, rank, etc, and assign each one a unique ID. Table 2: Schools. This would list all of the possible schools that someone can take and assign each one a unique ID. Table 3: Spells. This would list all of the possible spells and assign each one a unique ID. Table 4: Call it what you want but this table is going to link the user IDs to school and magic IDs. If a user (User_ID=1) has schools abjuration (ID=2) and conjuration (ID=5), then you'd have two rows in this linking table, 1-2 and 1-5. Okay... I've blabbered enough. ---John Holmes... -Original Message- From: Shiloh Madsen [mailto:shiloh_madsen;nsc-support.com] Sent: Saturday, October 19, 2002 12:48 AM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: [PHP] Enum table entry 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 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 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 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 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 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 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 show abjuration, divination? Thanks for the help in advance. -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php