|
Posted by Jerry Stuckle on 11/13/06 02:37
Amer Neely wrote:
> Jerry Stuckle wrote:
>
>> Amer Neely wrote:
>>
>>> Jerry Stuckle wrote:
>>>
>>>> Amer Neely wrote:
>>>>
>>>>> flamer die.spam@hotmail.com wrote:
>>>>>
>>>>>> Amer Neely wrote:
>>>>>>
>>>>>>> I've got a dynamically built form with checkboxes for each
>>>>>>> element ( a
>>>>>>> list of file names in a directory). I need to grab only those
>>>>>>> checkboxes
>>>>>>> that are checked, so I can then delete those files.
>>>>>>>
>>>>>>> Does each checkbox name have to be unique? I was hoping to just
>>>>>>> group
>>>>>>> them under one name, and select from that array.
>>>>>>>
>>>>>>> PHP is not my native language - I'm coming at this from Perl, so
>>>>>>> bear
>>>>>>> with me, things are a little different in that country.
>>>>>>>
>>>>>>> I've tried:
>>>>>>> foreach ($_REQUEST as $field => $value)
>>>>>>> {
>>>>>>> echo "$field = $value<br>";
>>>>>>> }
>>>>>>> but that just grabs the last entry in the group.
>>>>>>>
>>>>>>> The line in question is:
>>>>>>> <input type="checkbox" name="DeleteThis" value="<?php
>>>>>>> echo("$allfiles[$i]")?>"> <?php echo("$allfiles[$i]")?><br>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> in html, if your checkbox is called "blah123" then when its
>>>>>> checked it
>>>>>> will have the variable name of blah123 with a value of blah123, if it
>>>>>> is unchecked then blah123==null. the easy way is:
>>>>>>
>>>>>> if (!empty($_POST['blah123'])) { do stuff }
>>>>>>
>>>>>> Flamer.
>>>>>>
>>>>>
>>>>> Hmmm. OK, so I will need to also walk through each of the new input
>>>>> names, and check them with the 'empty' function. I'll work on that.
>>>>> Thanks.
>>>>>
>>>>>
>>>>
>>>> Amer,
>>>>
>>>> No. It's much easier than that. Have all the checkboxes names the
>>>> same, with square brackets ( "[]" ) following. The you will be able
>>>> to use an array on the PHP side, i.e.
>>>>
>>>>
>>>> <input type="checkbox" name="DeleteThis[]" value="<?php
>>>> echo("$allfiles[$i]")?>"> <?php echo("$allfiles[$i]")?><br>>
>>>>
>>>>
>>>> To process the input, all you need is:
>>>>
>>>> foreach ($_POST['DeleteThis'] as $delfile) {
>>>> // Validate the filename is OK here
>>>> unlink $delfile;
>>>> }
>>>>
>>>> This will work whether the checkbox is set via a mouse click or
>>>> javascript.
>>>>
>>>> Of course, you will want to validate your filenames. That part I
>>>> left out because I have no idea what the criteria is.
>>>>
>>>
>>> OK, I have your code inserted, but it gives me an error when I use my
>>> 'Select All' JS:
>>>
>>> Warning: Invalid argument supplied for foreach() in show_spam4.php on
>>> line 116
>>>
>>> If I click any box with the mouse it returns 'on' for the output.
>>>
>>> [116] foreach ($_POST['DeleteThis'] as $value)
>>> {
>>> echo "$value<br>";
>>> }
>>>
>>
>> Amer,
>>
>> I didn't mean for that to be the only code. Rather it was a guide to
>> get you going in the right direction.
>>
>> The invalid argument is probably because none of the checkboxes are
>> checked, so you're not getting anything in your PHP code. To make
>> sure you're getting good information, check out isset() and isarray()
>> functions.
>>
>
> :) Sorry, I'm new with PHP so everything is literal. But as I mentioned,
> if I check all the boxes with JS, and submit the form, it throws that
> error. I'm going to do some reading and see what I can come up with.
> Thanks for the input and direction so far.
>
I would suggest your javascript isn't doing it's job. When I check
boxes with js the do appear in PHP.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Navigation:
[Reply to this message]
|