Form with 2 submit buttons...

This is a discussion on Form with 2 submit buttons... within the PHP Language forums, part of the PHP Programming Forums category; Sonnich wrote: > > <html> > <form method=post name='myform' action='sjjtest.php'><!-- same ...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #11 (permalink)  
Old 08-08-2006
Jonathan N. Little
 
Posts: n/a
Default Re: - setting checkboxes

Sonnich wrote:

>
> <html>
> <form method=post name='myform' action='sjjtest.php'><!-- same file -->
> <table>
> <?
> $part1[]="a";
> $part1[]="b";
> $part1[]="c";
> for($i=0; $i<count($part1); $i++)
> {
> echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
> value=\"true\"";
> if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] == "") )
> echo " checked";
> echo ">". isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]
> ."</td></tr>";
> }
> ?>
> <tr><td><input class="box" name="apply_selection" type="submit" value="
> Apply selection "></td></tr>
> </table>
> </form>
> </html>
>
> Try it and you will see
>


Not sure what you are trying to accomplish here but in PHP block
statements need to be surrounded by braces {} therefore it think your
PHP part should be:


<?
$part1[]="a";
$part1[]="b";
$part1[]="c";
for($i=0; $i<count($part1); $i++)
{
echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
value=\"true\"";

if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] == "") )
{ //needed open brace
echo " checked";
} //closing brace

echo ">". isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]
.."</td></tr>";
}
?>


But again not sure what your aim is here....

--
Take care,

Jonathan
-------------------
LITTLE WORKS STUDIO
http://www.LittleWorksStudio.com
Reply With Quote
  #12 (permalink)  
Old 08-08-2006
Jerry Stuckle
 
Posts: n/a
Default Re: - setting checkboxes

Jonathan N. Little wrote:
> Sonnich wrote:
>
>>
>> <html>
>> <form method=post name='myform' action='sjjtest.php'><!-- same file -->
>> <table>
>> <?
>> $part1[]="a";
>> $part1[]="b";
>> $part1[]="c";
>> for($i=0; $i<count($part1); $i++)
>> {
>> echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
>> value=\"true\"";
>> if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] == "") )
>> echo " checked";
>> echo ">". isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]
>> ."</td></tr>";
>> }
>> ?>
>> <tr><td><input class="box" name="apply_selection" type="submit" value="
>> Apply selection "></td></tr>
>> </table>
>> </form>
>> </html>
>>
>> Try it and you will see
>>

>
> Not sure what you are trying to accomplish here but in PHP block
> statements need to be surrounded by braces {} therefore it think your
> PHP part should be:
>
>
> <?
> $part1[]="a";
> $part1[]="b";
> $part1[]="c";
> for($i=0; $i<count($part1); $i++)
> {
> echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
> value=\"true\"";
>
> if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] == "") )
> { //needed open brace
> echo " checked";
> } //closing brace
>
> echo ">". isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]
> ."</td></tr>";
> }
> ?>
>
>
> But again not sure what your aim is here....
>


Actually since the body of the if statement is a single statement, the
braces are optional. Only if you have multiple statements in the body
of a loop, if, else, etc. are braces required.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Reply With Quote
  #13 (permalink)  
Old 08-08-2006
Jerry Stuckle
 
Posts: n/a
Default Re: - setting checkboxes

Sonnich wrote:
> Jonathan N. Little wrote:
>
>>Sonnich wrote:
>>
>>[You are improperly snipping who wrote what quote which can get quite
>>confusing, try to keep or replace quoted author notices which I have
>>restored to show you....]
>>
>>
>> >> Sonnich wrote:
>> >>>

>>
>>>>>I found that it should work here too:
>>>>>
>>>>> if( !(isset($_POST[$part1[$i]]) && ($_POST[$part1[$i]] ==
>>>>>"")) )
>>>>> echo " checked";
>>>>> else
>>>>> echo "";
>>>>>
>>>>>Idea: checkbox is default checked, but only if set and set to nothing
>>>>>it is not set.
>>>>>Boolean algebra. Only if set, and set to nothing, then it is not set.
>>>>>
>>>>>But by some reason it does not work. I have done this a 147533 times,
>>>>>and here it does not work. Why?
>>>>>

>>
>> > Jonathan wrote:
>> >>

>>
>>>>I think a misplaced closing parentheses:
>>>>
>>>
>>>You were right. This is what I have now:
>>>
>>> if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] ==
>>>"") )
>>> echo " checked";
>>> else
>>> echo "";
>>>
>>>but is still does not work. It sets them first time as it should, but
>>>after that it inverts the selection.
>>>I dont get it.
>>>
>>>Any ideas anyone?
>>>

>>
>>Not enough info to determine, need URL and your source code. What you
>>you me by 'sets them'? Sets what? And 'after the first time'? Are your
>>reposting to the same script?

>
>
> Yes, I am reposting to the same script. An example:
>
>
> <html>
> <form method=post name='myform' action='sjjtest.php'><!-- same file -->
> <table>
> <?
> $part1[]="a";
> $part1[]="b";
> $part1[]="c";
> for($i=0; $i<count($part1); $i++)
> {
> echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
> value=\"true\"";
> if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] == "") )
> echo " checked";
> echo ">". isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]
> ."</td></tr>";
> }
> ?>
> <tr><td><input class="box" name="apply_selection" type="submit" value="
> Apply selection "></td></tr>
> </table>
> </form>
> </html>
>
> Try it and you will see
>


If you had all errors enabled and were displaying them, you would have
found errors in both statements with isset():

Notice: Undefined index: a in myform.php on line 10

In the first one your parens were set so that you were checking $_POST
whether or not the particular index was set. In the second one the
value in $_POST is always checked, whether it is valid or not.

The following code does what you want:

<?php
$part1[]="a";
$part1[]="b";
$part1[]="c";
for($i=0; $i<count($part1); $i++)
{
echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
value=\"true\"";

if( (isset($_POST[$part1[$i]]) && ($_POST[$part1[$i]] != "") ))
echo " checked";

echo ">". (isset($_POST[$part1[$i]]) ? "-" . $_POST[$part1[$i]] :
"" ) . "</td></tr>";
}
?>


--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Reply With Quote
  #14 (permalink)  
Old 08-08-2006
Miguel Cruz
 
Posts: n/a
Default Re: Form with 2 submit buttons...

"Sonnich" <sonnich.jensen@elektrobit.com> wrote:
> Miguel Cruz wrote:
>> "Sonnich" <sonnich.jensen@elektrobit.com> wrote:
>>> if( !(isset($_POST[$part1[$i]]) && ($_POST[$part1[$i]] == "")) )

>>
>> Are you sure you want $_POST[$part1[$i]] ? Maybe $_POST[$part1][$i] ?
>>
>> Hard to know without understanding how your form and code look, but my
>> proposed alternative is more typical for dealing with checkboxes.
>>
>> If I am correct in my theory, turning on E_ALL error reporting would
>> have drawn attention to the issue.

>
> I have a number of checkboxes, which are created from a DB. I read a
> number of codes into an array $part1[]= then I create the checkboxes
> Name=\"$part1[$i]] \" and at the same time set them to checked or not.
> At first they should be checked, but the user can select to uncheck
> them. Then, when submitting the now present values should be in use.


In that case you definitely want $_POST[$part1][$i] .

miguel
--
Photos from 40 countries on 5 continents: http://travel.u.nu
Latest photos: Malaysia; Thailand; Singapore; Spain; Morocco
Airports of the world: http://airport.u.nu
Reply With Quote
  #15 (permalink)  
Old 08-08-2006
Sonnich
 
Posts: n/a
Default Re: - setting checkboxes


Rik wrote:
> Sonnich wrote:
> > <?
> > $part1[]="a";
> > $part1[]="b";
> > $part1[]="c";
> > for($i=0; $i<count($part1); $i++)
> > {
> > echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
> > value=\"true\"";
> > if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] == "") )
> > echo " checked";
> > echo ">". isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]

>
> Euhm, what it this last bit
> 'isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]' actually supposed to do?
> It will either print '1-true' or ''(nothing)?


That was meant as debugging :-)

>
> > ."</td></tr>";
> > }

>
>
> You've got a submit button, it's name is in the POST array, so it should be
> present if the form is posted. Before posting, everything should be checked.
> After the posting only the previously left checked values should be checked,
> the rest unchecked. Is that how it should work? in that case:


Almost.
In case of any new items, they should be checked too.

There are other options, which might change sql query and by that the
array, so we have new items. They should be selected by default when
they appear.
Otherwise I found this useful.

I'll have to read a bit more about this subjet for PHP.

BR & thanks
Sonnich


>
> So let's say checked when:
> - $_POST['submit'] is not set
> OR
> - $_POST[$key] is in the array AND the value isn't empty
>
> $part1 = array('a','b','c'...........
>
> foreach($part1 as $value){
> $checked = (!isset($_POST['submit'] || (isset($_POST[$value]) &&
> !empty($_POST[$value])) ? ' checked' : '';
> printf('<td><input type="checkbox" name="%1$s"
> value="true"%2$s>%1$s</td>',$value,$checked');
> }
>
> Grtz,
> --
> Rik Wasmus


Reply With Quote
  #16 (permalink)  
Old 08-08-2006
Rik
 
Posts: n/a
Default Re: - setting checkboxes

Sonnich wrote:
> Rik wrote:
>> Sonnich wrote:
>>> <?
>>> $part1[]="a";
>>> $part1[]="b";
>>> $part1[]="c";
>>> for($i=0; $i<count($part1); $i++)
>>> {
>>> echo "<td><input name=\"".$part1[$i]."\" type=\"checkbox\"
>>> value=\"true\"";
>>> if( !(isset($_POST[$part1[$i]])) && ($_POST[$part1[$i]] == "") )
>>> echo " checked";
>>> echo ">". isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]

>> Euhm, what it this last bit
>> 'isset($_POST[$part1[$i]])."-".$_POST[$part1[$i]]' actually supposed to do?
>> It will either print '1-true' or ''(nothing)?

>
> That was meant as debugging :-)
>
>>> ."</td></tr>";
>>> }

>>
>> You've got a submit button, it's name is in the POST array, so it should be
>> present if the form is posted. Before posting, everything should be checked.
>> After the posting only the previously left checked values should be checked,
>> the rest unchecked. Is that how it should work? in that case:

>
> Almost.
> In case of any new items, they should be checked too.
>
> There are other options, which might change sql query and by that the
> array, so we have new items. They should be selected by default when
> they appear.
> Otherwise I found this useful.
>
> I'll have to read a bit more about this subjet for PHP.


Well, if we have to check wether the fields existed on the last
page-load, there are several options:
- store the request time, and the date fields get added. This is
somewhat bulky.
- store the available fields in a session, and on reload compare the
session variable with the then available fields.
- add an input type=hidden for every field, containing the name, and on
submit check wether an available name is in the POST array or not.

Grtz,
--
Rik Wasmus
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 08:59 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0