> -----Original Message-----
> From: Shawn McKenzie [mailto:[email protected]]
> Sent: Thursday, November 05, 2009 6:14 AM
> To: Daevid Vincent
> Cc: 'Allen McCabe'; 'PHP General'
> Subject: Re: [PHP] Custom function for inserting values into MySQL
>
> Daevid Vincent wrote:
> >
> >
> >> -----Original Message-----
> >> From: Shawn McKenzie [mailto:[email protected]]
> >> Sent: Wednesday, November 04, 2009 4:59 PM
> >> To: Daevid Vincent
> >> Cc: 'Allen McCabe'; 'PHP General'
> >> Subject: Re: [PHP] Custom function for inserting values into MySQL
> >>
> >> Daevid Vincent wrote:
> >>>> -----Original Message-----
> >>>> From: Shawn McKenzie [mailto:[email protected]]
> >>>> Sent: Wednesday, November 04, 2009 6:20 AM
> >>>> To: Allen McCabe; PHP General
> >>>> Subject: Re: [PHP] Custom function for inserting values
> into MySQL
> >>>>
> >>>> In your example, I would name my form inputs similar to name
> >>>> ="data[user_id]".
> >>>>
> >>>> Then you just pass the $_POST['data'] array to your function.
> >>>>
> >>>> -Shawn
> >>>>
> >>>> Allen McCabe wrote:
> >>>>> You raise some good points. I always name my input fields
> >> after the
> >>>>> entity names ( eg. input type="hidden" name ="user_id"
> >> value=" ?php
> >>>>> echo $resultRow['user_id'] ? " ).
> >>>>>
> >>>>> I suppose I am still in the phase of learning efficiency,
> >>>> and perhaps
> >>>>> trying to 'get out it' by writing functions that I can
> >> just call and
> >>>>> pass parameters instead of fully learning the core concepts.
> >>>>>
> >>>>> I just think functions are so damn cool :)
> >>>>>
> >>>>>
> >>>>> I'll echo what the others have said about the
> >>>> parameters. For me
> >>>>> personally, if I am passing more than three parameters
> >>>> (sometimes even
> >>>>> three) I rethink my function. I'm not sure what
> you envision
> >>>>> using this
> >>>>> function for, but the approach I use for forms and
> >>>> databases is always
> >>>>> arrays. I get an array from my forms, I insert that
> >>>> array into the
> >>>>> database, and of course I fetch arrays out of the
> >>>> database. These are
> >>>>> all indexed the same with the index as the field name
> >>>> of the table so
> >>>>> it's easy.
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Thanks!
> >>>>> -Shawn
> >>>>> http://www.spidean.com
> >>>>>
> >>>>>
> >>>>>
> >>> There are pro's and cons to this type of thing. In general
> >> that is how I do
> >>> it too, but you have to be aware of security and
> >> organization. It's not
> >>> always smart to expose your DB field names directly so you
> >> might want to
> >>> obscure them for some critical values. If your passing from
> >> one controlled
> >>> function/method to another then this isnt an issue so much.
> >>>
> >>> I also follow the ruby/rails ideal where tables are plural
> >> names ("users")
> >>> and classes are singular names ("user.class.php"). Tables
> >> always have fields
> >>> for 'id','created_on','timestamp','enabled'. Except in
> >> 'glue table' cases
> >>> (1:n or n:m). Classes extend a base class which handles a
> >> lot of the minutea
> >>> including the magic __get() and __set() routines as well as
> >> knowing what
> >>> table they should be through introspection (ie. Their own
> >> file name).
> >>> No need to name your fields as arrays. $_POST is already an
> >> array. You've
> >>> just added more complexity/dimensions. When you submit your
> >> form just pass
> >>> $_POST to your function instead. In the function, is where
> >> you should do any
> >>> normalizing, scrubbing and unsetting (as per good MVC ideology)...
> >>>
> >> The way I normally do it I learned from the CakePHP
> framework which is
> >> very similar to (I think an attempt at a clone of) Rails.
> >> I'm not sure
> >> if they do it the same way in Rails, but as you were
> mentioning, in a
> >> Cake view of a form they use the table name as the array name
> >> (name="Users[username]"). Internally to the framework
> this may make
> >> things easier, but imagine you have a page with 2 or more
> forms that
> >> update different tables, or if your form had some fields that
> >> you wanted to check after submission but are not DB fields.
> >
> > The $_POST array will ONLY contain the key/values for the FORM that
> > contained the submit button.
> >
> > <form name="form_add">
> > <input type="text" name="foo" value="bar">
> > <input type="submit" name="action" value="Add">
> > </form>
> >
> >
> > <form name="form_update">
> > <input type="text" name="bee" value="boo">
> > <input type="submit" name="action" value="Update">
> > </form>
> >
> > So if you click the 'Add' button, you get back:
> > $_POST['foo'] => 'bar', $_POST['action'] => 'Add'
> >
> > if you click the 'Update' button, you get back:
> > $_POST['bee'] => 'boo', $_POST['action'] => 'Update'
> >
> > where's the confusion? You can only submit one form on a
> page at a time.
> >
> >> Why would you use the entire POST array?
> >
> > Presumably, anything in the form is of some value to your
> database and you'd
> > want it. Otherwise why is it in the form?
> >
>
> I guess I was going for multiple tables and not multiple
> forms. Consider a form that takes input for a Users table
> and a Groups table. As for the inputs not needed by the DB,
> there are too many examples I could give
> with lots of inputs, but here is the simplest example I can think of:
>
> username
> password
> captcha
> rememberme
>
> Presumably you don't need the captcha or rememberme in the
> DB. To each his own.
Right, so that (again) is why your CONTROLLER (MVC) does the scrubbing as
previously illustrated:
function process_data($data)
{
//perhaps you don't care about captcha and submit etc.
unset($data['submit']);
unset($data['captcha']);
unset($data['rememberme']);
...
If you really want 'groups' then I would suggest a prefix scheme so you can
then weed out or work with the 'groups' you wanted...
user_name
user_email
user_password
user_captcha
...
group_name
group_id
...
If you use JavaScript in your pages for pre-checking before submit, working
with 'user[name]' is a little more cumbersome than just working with
'user_name' IMHO. See this page for many examples of that headache:
http://www.php.net/manual/en/faq.html.php#faq.html.arrays
Like this is just UGLY: var foo = form['user[password]'].value;
But as you say, to each their own. :)
http://daevid.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php