By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,312 Members | 2,835 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,312 IT Pros & Developers. It's quick & easy.

Best approach to run queries only when user chooses

P: n/a
Hello
I am trying to run a few INSERT queries only if the user clicks 'continue'
in a <a href> The queries takes variables created from SELECT queries. I
have tried to acheive this by putting The INSERT queries into a function at
the top of my php file and having the SELECT queries below it. I have a
message that pops up that includes a link to the function but I cant get
this to work and am not sure of the best approach. Can anyone help?
My striped down code is below. Im not even sure if you can just use a
function to contain code that doesnt return a value. Mine just runs some
INSERT INTO queries

************************************************** *****************
<?php
function PurchaseQuestions(){

various INSERT INTO queries here

<h1>Confirmation</h1><br>
<p><a href="logout.php"> Logout</a> or return to <a href="Questions.php">
Questions Database</a></p><br><br><br>
Congratulations <b><?php echo $_SESSION[username] ?></b>, your order has
been completed.</p>

<?php
}
?>
<?php
$OrderDate = date('d/m/Y');

Three SELECT queries here which provides variables for the
PurchaseQuestions() function
?>
<h1>Order Status</h1>
<p>You have requested <?php echo $QuestSel; ?> questions at a total cost
of <strong><?php echo $QuestSel*.8; ?></strong>
If you wish to proceed with the transaction click <a href=<?php echo
PurchaseQuestions() ?>> Continue</a>.<br>
<?php

}

?>
<?php
mysql_close($conn);
?>
Oct 24 '05 #1
Share this Question
Share on Google+
8 Replies


P: n/a
>I am trying to run a few INSERT queries only if the user clicks 'continue'
in a <a href> The queries takes variables created from SELECT queries. I
have tried to acheive this by putting The INSERT queries into a function at
the top of my php file and having the SELECT queries below it. I have a
message that pops up that includes a link to the function but I cant get
You can't have a link to a PHP function. Code inside a function
will not be executed unless something calls it. You CAN have a SUBMIT
button for a form, which the user can fill in and click on.
this to work and am not sure of the best approach. Can anyone help?
My striped down code is below. Im not even sure if you can just use a
function to contain code that doesnt return a value. Mine just runs some
INSERT INTO queries
A function does not have to return a value, and in any case, you
could always supply a dummy value to return.

After a user clicks on the SUBMIT button to a form, you look at
what's in $_GET and $_POST to decide whether or not to call the
function, like the name of the submit button or whether the fields
in the form were filled in.

Gordon L. Burditt

************************************************* ******************
<?php
function PurchaseQuestions(){

various INSERT INTO queries here

<h1>Confirmation</h1><br>
<p><a href="logout.php"> Logout</a> or return to <a href="Questions.php">
Questions Database</a></p><br><br><br>
Congratulations <b><?php echo $_SESSION[username] ?></b>, your order has
been completed.</p>

<?php
}
?>
<?php
$OrderDate = date('d/m/Y');

Three SELECT queries here which provides variables for the
PurchaseQuestions() function
?>
<h1>Order Status</h1>
<p>You have requested <?php echo $QuestSel; ?> questions at a total cost
of <strong><?php echo $QuestSel*.8; ?></strong>
If you wish to proceed with the transaction click <a href=<?php echo
PurchaseQuestions() ?>> Continue</a>.<br>
<?php

}

?>
<?php
mysql_close($conn);
?>

Oct 24 '05 #2

P: n/a
Thanks for the reply
After a user clicks on the SUBMIT button to a form, you look at
what's in $_GET and $_POST to decide whether or not to call the
function, like the name of the submit button or whether the fields
in the form were filled in.


I dont have any fields that need submitting. Could I put the function in the
form and if user clicks submit it calls the function if I put the functions
name in the forms 'action'?
Oct 24 '05 #3

P: n/a
>> After a user clicks on the SUBMIT button to a form, you look at
what's in $_GET and $_POST to decide whether or not to call the
function, like the name of the submit button or whether the fields
in the form were filled in.
I dont have any fields that need submitting.


The submit button itself can have a name.
Could I put the function in the
form
NO, you cannot put functions in HTML. Well, you can put the text
of the function, but then it won't be a function.
and if user clicks submit it calls the function if I put the functions
name in the forms 'action'?


No, you cannot put function names in HTML and expect it to do any good.

Gordon L. Burditt
Oct 24 '05 #4

P: n/a
>>>After a user clicks on the SUBMIT button to a form, you look at
what's in $_GET and $_POST to decide whether or not to call the
function, like the name of the submit button or whether the fields
in the form were filled in.


I dont have any fields that need submitting.

The submit button itself can have a name.

Could I put the function in the
form

NO, you cannot put functions in HTML. Well, you can put the text
of the function, but then it won't be a function.

and if user clicks submit it calls the function if I put the functions
name in the forms 'action'?

No, you cannot put function names in HTML and expect it to do any good.


While all of this is true what he could do is use ajax to call the
function and pass the parameters that way :)

--
Mike Willbanks
Zend Certified Engineer
http://www.digitalstruct.com
Oct 24 '05 #5

P: n/a
Ian Davies wrote:
Hello
I am trying to run a few INSERT queries only if the user clicks 'continue'
in a <a href> The queries takes variables created from SELECT queries. I
have tried to acheive this by putting The INSERT queries into a function at
the top of my php file and having the SELECT queries below it. I have a
message that pops up that includes a link to the function but I cant get
this to work and am not sure of the best approach. Can anyone help?
My striped down code is below. Im not even sure if you can just use a
function to contain code that doesnt return a value. Mine just runs some
INSERT INTO queries

************************************************** *****************
<?php
function PurchaseQuestions(){

various INSERT INTO queries here

<h1>Confirmation</h1><br>
<p><a href="logout.php"> Logout</a> or return to <a href="Questions.php">
Questions Database</a></p><br><br><br>
Congratulations <b><?php echo $_SESSION[username] ?></b>, your order has
been completed.</p>

<?php
}
?>
<?php
$OrderDate = date('d/m/Y');

Three SELECT queries here which provides variables for the
PurchaseQuestions() function
?>
<h1>Order Status</h1>
<p>You have requested <?php echo $QuestSel; ?> questions at a total cost
of <strong><?php echo $QuestSel*.8; ?></strong>
If you wish to proceed with the transaction click <a href=<?php echo
PurchaseQuestions() ?>> Continue</a>.<br>
<?php

}

?>
<?php
mysql_close($conn);
?>


I may be misunderstanding you - in which case I apologise for
patronising you - but it seems to me that you are not understanding how
the web works.

Anything the user does is entirely on their client machine. They can
fill in forms and pick links (and possibly completely change what's on
the page they're looking at, if you've embedded suitable client-side
scripting in it- typically Javascript). But nothing can happen on the
server (such as changing the database) until they have requested a new
page, either by picking a link or submitting a form.
Of course, if it is to do anything other than simply sending HTML, that
page must be a CGI script. But it will not have any data from the user's
page unless the data has been sent back as CGI variables - either GET or
POST. Alternatively, in PHP they can have been preserved (on the server)
from when the previous page was processed, by using a _SESSION.

If I understand correctly, what you really want is logically two
separate pages:

page1.php:
// extract the data from SQL
// display it to the user
print "<a href='page2.php?arg1=$val1&arg2=$val2'>Confirm</a>";

page2.php:
$sql = "INSERT INTO ... (arg1, arg2 ... ) VALUES ($_GET['arg1'],
$_GET['arg2'])";

// display whatever you want the page to look like

You can make them a single page if you want by (eg) making the link

href='page1.php?confirm=yes&arg1=$val1&arg2=val2'

and then starting your page with

<?php
if (array_key_exists('confirm', $_GET) && $_GET['confirm'] == 'yes') {
// update database
} else {
// send request-confirmation page
}

but you must still pass the data back from the client.
All the above assumes that it is practical and desirable to send the
data by GET. If you prefer POST (because there's too much of it, or
because you would rather it didn't appear in the URL, then you need to
use a form, even if there is nothing on it but a submit button:

<form method='POST' action = 'page2.php'>
<input type='hidden' name='arg1' value='<?php echo $val1 ?>'>
<input type='hidden' name='arg2' value='<?php echo $val2 ?>'>
<submit name='confirm'>
</form>

Then the variables will be available in the $_POST array in the next page.

Colin

Oct 24 '05 #6

P: n/a
Colin
I may be misunderstanding you - in which case I apologise for
patronising you - but it seems to me that you are not understanding how
the web works.
You right there. I am new to web programming. I have a VB project that need
to become web enabled and I am learning as I rewrite this project for the
web. Thank you for all your information, it has been saved and will be added
to my resources for future use.

Another question. It seems that a variable can only be passed on to the next
form. How can I pass it to a third form in the line? Would I have to 'leap
frog' it from one hidden field to the next via a form's POST action or
should I use sessions.
Also if you know of a good link to a tutorial on the above and also on
filtering values in a dropdown list based on the values in preceeding
dropdown list I would be v grateful as most of my searches for such things
lead usually to dead ends

Thanks
Ian

Anything the user does is entirely on their client machine. They can
fill in forms and pick links (and possibly completely change what's on
the page they're looking at, if you've embedded suitable client-side
scripting in it- typically Javascript). But nothing can happen on the
server (such as changing the database) until they have requested a new
page, either by picking a link or submitting a form.
Of course, if it is to do anything other than simply sending HTML, that
page must be a CGI script. But it will not have any data from the user's
page unless the data has been sent back as CGI variables - either GET or
POST. Alternatively, in PHP they can have been preserved (on the server)
from when the previous page was processed, by using a _SESSION.

If I understand correctly, what you really want is logically two
separate pages:

page1.php:
// extract the data from SQL
// display it to the user
print "<a href='page2.php?arg1=$val1&arg2=$val2'>Confirm</a>";

page2.php:
$sql = "INSERT INTO ... (arg1, arg2 ... ) VALUES ($_GET['arg1'],
$_GET['arg2'])";

// display whatever you want the page to look like

You can make them a single page if you want by (eg) making the link

href='page1.php?confirm=yes&arg1=$val1&arg2=val2'

and then starting your page with

<?php
if (array_key_exists('confirm', $_GET) && $_GET['confirm'] == 'yes') {
// update database
} else {
// send request-confirmation page
}

but you must still pass the data back from the client.
All the above assumes that it is practical and desirable to send the
data by GET. If you prefer POST (because there's too much of it, or
because you would rather it didn't appear in the URL, then you need to
use a form, even if there is nothing on it but a submit button:

<form method='POST' action = 'page2.php'>
<input type='hidden' name='arg1' value='<?php echo $val1 ?>'>
<input type='hidden' name='arg2' value='<?php echo $val2 ?>'>
<submit name='confirm'>
</form>

Then the variables will be available in the $_POST array in the next page.

Colin

Oct 25 '05 #7

P: n/a
Jon
Once you start to pass variables to more than just one page, I've found the
best method is to use session variables and start calling them from the
different pages. I try and limit the usage of sessions because it gets hard
to control where all of your data is located, but it's really handy if you
need to hold variables for multiple pages.

As far as the drop-down, I'm not quite sure what you're saying I guess. If
you want to populate a drop down list based on conditions, it's fairly easy
in PHP - Here's an outline of the process I would use:

<select name="nameSelect">
<?php
if/else conditions here
if($a==3){
echo "<option>Option from if condition</option>";
}else{
echo "<option>Option from else condition</option>";
}
?>

That's kind of the process I use - you are basically echoing the values in
the select list - if this were coming from a DB, you'd basically run this in
a loop of some sort likely using mysql_fetch_array
(while($row=mysql_fetch_array($queryResults)){
psuedocode from above here
}

Does that help?

"Ian Davies" <ia********@virgin.net> wrote in message
news:1b***************@newsfe2-win.ntli.net...
Colin
I may be misunderstanding you - in which case I apologise for
patronising you - but it seems to me that you are not understanding how
the web works.


You right there. I am new to web programming. I have a VB project that
need
to become web enabled and I am learning as I rewrite this project for the
web. Thank you for all your information, it has been saved and will be
added
to my resources for future use.

Another question. It seems that a variable can only be passed on to the
next
form. How can I pass it to a third form in the line? Would I have to 'leap
frog' it from one hidden field to the next via a form's POST action or
should I use sessions.
Also if you know of a good link to a tutorial on the above and also on
filtering values in a dropdown list based on the values in preceeding
dropdown list I would be v grateful as most of my searches for such things
lead usually to dead ends

Thanks
Ian

Anything the user does is entirely on their client machine. They can
fill in forms and pick links (and possibly completely change what's on
the page they're looking at, if you've embedded suitable client-side
scripting in it- typically Javascript). But nothing can happen on the
server (such as changing the database) until they have requested a new
page, either by picking a link or submitting a form.
Of course, if it is to do anything other than simply sending HTML, that
page must be a CGI script. But it will not have any data from the user's
page unless the data has been sent back as CGI variables - either GET or
POST. Alternatively, in PHP they can have been preserved (on the server)
from when the previous page was processed, by using a _SESSION.

If I understand correctly, what you really want is logically two
separate pages:

page1.php:
// extract the data from SQL
// display it to the user
print "<a href='page2.php?arg1=$val1&arg2=$val2'>Confirm</a>";

page2.php:
$sql = "INSERT INTO ... (arg1, arg2 ... ) VALUES ($_GET['arg1'],
$_GET['arg2'])";

// display whatever you want the page to look like

You can make them a single page if you want by (eg) making the link

href='page1.php?confirm=yes&arg1=$val1&arg2=val2'

and then starting your page with

<?php
if (array_key_exists('confirm', $_GET) && $_GET['confirm'] == 'yes') {
// update database
} else {
// send request-confirmation page
}

but you must still pass the data back from the client.
All the above assumes that it is practical and desirable to send the
data by GET. If you prefer POST (because there's too much of it, or
because you would rather it didn't appear in the URL, then you need to
use a form, even if there is nothing on it but a submit button:

<form method='POST' action = 'page2.php'>
<input type='hidden' name='arg1' value='<?php echo $val1 ?>'>
<input type='hidden' name='arg2' value='<?php echo $val2 ?>'>
<submit name='confirm'>
</form>

Then the variables will be available in the $_POST array in the next
page.

Colin


Oct 25 '05 #8

P: n/a
Thanks everyone for your feedback. Ive used hidden fields and will read up
on sessions. Still need some good links to info about drop down lists though
Ian

"Ian Davies" <ia********@virgin.net> wrote in message
news:fM******************@newsfe7-gui.ntli.net...
Hello
I am trying to run a few INSERT queries only if the user clicks 'continue'
in a <a href> The queries takes variables created from SELECT queries. I
have tried to acheive this by putting The INSERT queries into a function at the top of my php file and having the SELECT queries below it. I have a
message that pops up that includes a link to the function but I cant get
this to work and am not sure of the best approach. Can anyone help?
My striped down code is below. Im not even sure if you can just use a
function to contain code that doesnt return a value. Mine just runs some
INSERT INTO queries

************************************************** *****************
<?php
function PurchaseQuestions(){

various INSERT INTO queries here

<h1>Confirmation</h1><br>
<p><a href="logout.php"> Logout</a> or return to <a href="Questions.php">
Questions Database</a></p><br><br><br>
Congratulations <b><?php echo $_SESSION[username] ?></b>, your order has
been completed.</p>

<?php
}
?>
<?php
$OrderDate = date('d/m/Y');

Three SELECT queries here which provides variables for the
PurchaseQuestions() function
?>
<h1>Order Status</h1>
<p>You have requested <?php echo $QuestSel; ?> questions at a total cost
of <strong><?php echo $QuestSel*.8; ?></strong>
If you wish to proceed with the transaction click <a href=<?php echo
PurchaseQuestions() ?>> Continue</a>.<br>
<?php

}

?>
<?php
mysql_close($conn);
?>

Oct 25 '05 #9

This discussion thread is closed

Replies have been disabled for this discussion.