Solved

PHP checklist form display results

Posted on 2006-07-10
5
2,695 Views
Last Modified: 2008-02-01
I have a checklist of names that come from a database that I display on a page. The user then checks off the ones that they want to send email messages to and submits the form. The form has them constructed as:

<form method="GET" action="mail_out_stories.php">
...
//loop through all the user_id values...
...
<input type="checkbox" name="var'.$record['user_id'].'" value="'.$record['user_id'].'">

So, the onces checked by the user get passed as var22=22, var35=35, etc. for each one selected.

Then, in the php file called I was using:

...
for ($i = 1; $i < 1000; $i++) {
      $varname = "var".$i;
      if (isset ($$varname)) {
//do what I need to for each of these that were set...

This worked fine in PHP 4 but isn't working in PHP5. In any case, I know it isn't really the way to accomplish my goal (of seeing what the user has checked) as it isn't very efficient, and won't work once the index number exceeds my maximum loop count (as well as being, in general, sloppy programming!)

I figure I need to use an array to pass it, and don't want to use a GET, I want to use a POST, but I'm not sure how to do this.
0
Comment
Question by:dnatal
  • 2
  • 2
5 Comments
 
LVL 33

Accepted Solution

by:
snoyes_jw earned 250 total points
ID: 17076566
I suspect the only difference is that for PHP5, you have register_globals turned off.  So change
if (isset($$varname))
to
if (isset($_GET[$$varname]))

To use an array instead, name your checkboxes as var[22], var[35], etc.  They will automagically be an array in PHP, and you can do
foreach ($_GET['var'] as $user_id=>$value) {
  // do what you need with $user_id and $value.

To use POST instead of GET, just change the form method and the super global (the $_GET in the revision above) to POST.
0
 
LVL 7

Expert Comment

by:maUru
ID: 17076569
you can use:

<input type="checkbox" name="var[]" value="1">
<input type="checkbox" name="var[]" value="2">
<input type="checkbox" name="var[]" value="3">

and then check them (with post) using this:

<form method="POST">

and the php code to read:

foreach ($_POST['var'] as $val) {
  // do stuff to $val
}
0
 
LVL 2

Author Comment

by:dnatal
ID: 17077469
Thanks! I figured it was easier than I was making it...
0
 
LVL 7

Expert Comment

by:maUru
ID: 17077487
didnt you also ask for a way to use arrays, and about ineffeficient coding and it wont work once it passes 1000....
0
 
LVL 2

Author Comment

by:dnatal
ID: 17077618
Yeah, I did. I probably should have increased, then split, the points, but snoyes_jw's answer came first and addressed the issues of POSTing and using an array and so was a full answer...your answer was right, too, just it came after snoyes_jw's. Thanks for your help, if I could go back and award you points I would (I wasn't sure of the protocol...)
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now