Jump to content

Archived

This topic is now archived and is closed to further replies.

janggu

Passing multiple IDs with Checkbox

Recommended Posts

I have a list of client on a page and need to add checkboxes on each client. My intention is when users click the checkboxes, the page passes ids of the clients so that I could update the client info – let’s say the checkbox is for getting newsletter. The main purpose of this feature is users can simply click the checkboxes and update info without going into each client’s detailed page.

Could anyone please tell me some directions with an example?

Thanks a lot!

Share this post


Link to post
Share on other sites
I won't provide you with an example, because I don't have a real simple one, but I'll give you a few tips.

1) Keep in mind that only the checked boxes will be sent on to the processing page. This gives you the option of setting the value to the client id and you do the same action to all the values that are submitted.
2) You can name the checkboxes in 1 of 2 ways. Use an array (ie. ckClientID[]) or you can simply name them with a similar naming convention (ie. ck1234, where 1234 is the client id), so when you submit the form, you loop through all the results and look for variables that start with "ck" and handle them accordingly.

Share this post


Link to post
Share on other sites
Thanks for your tips but my PHP experience is not enough to come up with my own code.

Share this post


Link to post
Share on other sites
I suggest you at least make an attempt and then post what you have. No one here is just going to write it for you.

Share this post


Link to post
Share on other sites
Ok. I lied. Here is what I have so far.

client.php page
[code]
<form action="update.php" method="post" enctype="multipart/form-data">
          <table width="100%">               
            <tr>            
              <th valign="bottom" align="center" nowrap>Date</th>
              <th valign="bottom" align="center" nowrap>Name</th>
              <th valign="bottom" align="center" nowrap>Email</th>
              <th valign="bottom" align="center" nowrap>Subscribe</th>
              <th valign="bottom" align="center" nowrap>Action</th>              
            </tr>            
            
             <?php
              
              if (mysql_num_rows($getClient) <> 0) {
              
                  // display
                  while ($r = mysql_fetch_array($getClient)) {
                      echo "<tr>";                    
                    echo "<td align='center' valign='top'>" .$r['date']. "</td>";
                    echo "<td align='center' valign='top'>" .$r['name']."</td>";
                    echo "<td align='center' valign='top'>" .$r['email']. "</td>";
                    echo "<td align='center' valign='top'><input type='checkbox' name='id[]' value=".$r['id']."></td>";                    
                    echo "<td valign='top' align='center'><a href='view.php?id=".$r["id"]."'>View</a>";                        
                    echo "</td>";
                    echo "</tr>";
                    echo "<tr><td colspan='5'><hr size='1' noshade></td></tr>";
                }
                }
                    
              ?>        
           <tr>
               <td align="center" colspan="5">
           <input type="submit" value="Update">
               </td>
           </tr>      
         </table>
         </form>
[/code]

update.php page

[code]
if (isset($_POST['id']))
{
$counter = 1;
while ($counter < 1) {
if ($_POST[$id] != "") {
$id = "id" . $counter;

$sql = "UPDATE client2 SET
FA = '1'
WHERE id='$id'
";
$result = mysql_query($sql) or die("Invalid query: " . mysql_error());
}
$counter++;
}
}
[/code]

Share this post


Link to post
Share on other sites
That wasn't so hard, was it?

Your while loop is never going to go anywhere. You set it to 1 and then immediately check to see if it's less than 1.

Better:[code]
if (isset($_POST['id']))
{
    foreach($_REQUEST['id'] as $val)
   {
    $sql = "UPDATE client2 SET
    FA = '1'
    WHERE id='$val'
    ";
    $result = mysql_query($sql) or die("Invalid query: " . mysql_error());
   }
}
[/code]

Share this post


Link to post
Share on other sites
[!--quoteo(post=373023:date=May 10 2006, 06:13 PM:name=ober)--][div class=\'quotetop\']QUOTE(ober @ May 10 2006, 06:13 PM) [snapback]373023[/snapback][/div][div class=\'quotemain\'][!--quotec--]
That wasn't so hard, was it?

Your while loop is never going to go anywhere. You set it to 1 and then immediately check to see if it's less than 1.

Better:[code]
if (isset($_POST['id']))
{
    foreach($_REQUEST['id'] as $val)
   {
    $sql = "UPDATE client2 SET
    FA = '1'
    WHERE id='$val'
    ";
    $result = mysql_query($sql) or die("Invalid query: " . mysql_error());
   }
}
[/code]
[/quote]

It works great. Thanks a lot!!!

There is another issue though... I unchecked the boxes and saved it with the following code but it didn't work.
[code]
if (isset($_POST['id']))
{
    foreach($_REQUEST['id'] as $val)
   {
    $sql = "UPDATE client2 SET
    FA = '1'
    WHERE id='$val'
    ";
    $result = mysql_query($sql) or die("Invalid query: " . mysql_error());
   }
}
else
{
    foreach($_REQUEST['id'] as $val)
   {
    $sql = "UPDATE client2 SET
    FA = '0'
    WHERE id='$val'
    ";
    $result = mysql_query($sql) or die("Invalid query: " . mysql_error());
    }
}
[/code]

Share this post


Link to post
Share on other sites
unchecked boxes are not going to be passed on. in other words, ONLY the values of checked boxes are going to be available. What you should do here, is to reset the values to zero and then update them one by one.
[code]if (isset($_POST['id']))
{
    ## Reset the values
    $sql = "UPDATE client2 SET FA='0'";
    mysql_query($sql);

    ## Process the check boxes
    foreach($_REQUEST['id'] as $val)
    {
    $sql = "UPDATE client2 SET
    FA = '1'
    WHERE id='$val'
    ";
    $result = mysql_query($sql) or die("Invalid query: " . mysql_error());
   }
}[/code]

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.