Form with 2 submit buttons...

S

Sonnich

Hi all!

I have a file where I'd have to submit buttons, and I need to differ
between those.

Step #1 - open html win with default selection

Step #2 - user may select some criteries for the list
Step 2 might be repeated, or not used at all. There is a button "apply
selection"

Step #3 - user selects a number of files/items, which are then handled.
There is a button for that.
Done.

The point is, that I need both the critearies for the SQL selection in
step 2, but also the selected files (list) in step 3. Actually the
selection for step 2 are needed for step 3 only.

Any good ideas on how I might have 2 buttons with submits data?

BR
Sonnich
 
Z

ZeldorBlat

Sonnich said:
Hi all!

I have a file where I'd have to submit buttons, and I need to differ
between those.

Step #1 - open html win with default selection

Step #2 - user may select some criteries for the list
Step 2 might be repeated, or not used at all. There is a button "apply
selection"

Step #3 - user selects a number of files/items, which are then handled.
There is a button for that.
Done.

The point is, that I need both the critearies for the SQL selection in
step 2, but also the selected files (list) in step 3. Actually the
selection for step 2 are needed for step 3 only.

Any good ideas on how I might have 2 buttons with submits data?

BR
Sonnich

Not entirely sure what you're trying to do, but if you want two submit
buttons just give them different names:

<input type="submit" name="foo" value="First Button"/>
<input type="submit" name="bar" value="Second Button"/>

And on the target page:

if(isset($_REQUEST['foo'])) {
//first button was used
}
else if(isset($_REQUEST['bar'])) {
//second button was used
}
 
S

Sonnich

ZeldorBlat said:
Sonnich said:
Hi all!

I have a file where I'd have to submit buttons, and I need to differ
between those.

Step #1 - open html win with default selection

Step #2 - user may select some criteries for the list
Step 2 might be repeated, or not used at all. There is a button "apply
selection"

Step #3 - user selects a number of files/items, which are then handled.
There is a button for that.
Done.

The point is, that I need both the critearies for the SQL selection in
step 2, but also the selected files (list) in step 3. Actually the
selection for step 2 are needed for step 3 only.

Any good ideas on how I might have 2 buttons with submits data?

BR
Sonnich

Not entirely sure what you're trying to do, but if you want two submit
buttons just give them different names:

<input type="submit" name="foo" value="First Button"/>
<input type="submit" name="bar" value="Second Button"/>

And on the target page:

if(isset($_REQUEST['foo'])) {
//first button was used
}
else if(isset($_REQUEST['bar'])) {
//second button was used
}

That was exactly what I needed.

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?
 
J

Jonathan N. Little

Sonnich said:
ZeldorBlat said:
Sonnich said:
Hi all!

I have a file where I'd have to submit buttons, and I need to differ
between those.

Step #1 - open html win with default selection

Step #2 - user may select some criteries for the list
Step 2 might be repeated, or not used at all. There is a button "apply
selection"

Step #3 - user selects a number of files/items, which are then handled.
There is a button for that.
Done.

The point is, that I need both the critearies for the SQL selection in
step 2, but also the selected files (list) in step 3. Actually the
selection for step 2 are needed for step 3 only.

Any good ideas on how I might have 2 buttons with submits data?

BR
Sonnich
Not entirely sure what you're trying to do, but if you want two submit
buttons just give them different names:

<input type="submit" name="foo" value="First Button"/>
<input type="submit" name="bar" value="Second Button"/>

And on the target page:

if(isset($_REQUEST['foo'])) {
//first button was used
}
else if(isset($_REQUEST['bar'])) {
//second button was used
}

That was exactly what I needed.

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?
I think a misplaced closing parentheses:

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

Sonnich

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?
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?
 
M

Miguel Cruz

Sonnich said:
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?

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.

miguel
 
S

Sonnich

Miguel said:
Sonnich said:
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?

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.

BR
Sonnich
 
J

Jonathan N. Little

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....]

>>>
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?
>>
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?
 
S

Sonnich

Jonathan said:
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 said:
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
 
R

Rik

Sonnich said:
<?
$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)?
."</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:

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,
 
J

Jonathan N. Little

Sonnich said:
<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....
 
J

Jerry Stuckle

Jonathan said:
Sonnich said:
<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.
(e-mail address removed)
==================
 
J

Jerry Stuckle

Sonnich said:
Jonathan said:
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.
(e-mail address removed)
==================
 
M

Miguel Cruz

Sonnich said:
Miguel said:
Sonnich said:
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
 
S

Sonnich

Rik said:
Sonnich said:
<?
$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 :)
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,
 
R

Rik

Sonnich said:
Rik said:
Sonnich said:
<?
$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 :)
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,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,565
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top