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>

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 ...)

----- Original Message -----
From: "John Nichel" <[EMAIL PROTECTED]>
To: "Tom Rogers" <[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

Reply via email to