Improve company productivity with a Business Account.Sign Up

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 572
  • Last Modified:

Alert message after sql query PHP


I have been on this question for a while now and I just can't seem to find anything that works. First I will explain what my pages do.

The exerciseTest page will list an exercise found in the exercise table. From that page I have a form that will allow the user to add the displayed exercise to the exercise of the month table. They will have the option of picking which month they would like to add it to. Only one exercise per month can be added.

If an exercise is already occupied by the month they have chosen, an alert message will come up asking them if they would like to replace the exercise. I would like it so if the user clicks OK then it will send it to the AddUpdateMonthlyExercise page and it will update. If the user clicks cancel then it will do nothing.

Basically, the alert message must go through a function that checks if the exercise month is in the exercise_of_month table after the user clicks on the add button. If it is not then the exercise will simply be added to the exercise_of_month.

Here I have supplied the exerciseTest page and the AddUpdateMonthlyExercise page.

<!-- Test page to view exercises and add an exercise to exercise of the month -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            $exerciseID = 3;
                @mysql_select_db($database) or die('Could not connect to database: ' . mysql_error());
            // First, fetch all the unique Exercise_Month's
            $checkMonth = mysql_query("SELECT Exercise_Month FROM Exercise_of_Month GROUP BY Exercise_Month");
            $PhpArray = array();
            while($row = mysql_fetch_array($checkMonth, MYSQL_NUM)) {
                $PhpArray[] = $row[0];
            // Echo the javascript stuff to the client.
            <script language="javascript">
                var JavaArray = ['<?php echo implode("', '", $PhpArray) ?>'];
                function in_array(stringToSearch, arrayToSearch) {  
                    for (s = 0; s < arrayToSearch.length; s++) {
                        thisEntry = arrayToSearch[s].toString();
                        if (thisEntry == stringToSearch) {
                           return true;
                    return false;
                function CheckExistance(month_name) {
                    if (in_array(month_name, JavaArray)) {
                        var answer = confirm("An exercise already exists for this month. Would you like to replace the exercise?");
                        if (answer) {
                        else {
            $result = mysql_query("SELECT * FROM Exercise WHERE Exercise_Id = '$exerciseID'");
            while($row = mysql_fetch_array($result)) {
                $exerciseID = $row["Exercise_Id"];
                $exerciseName = $row["Exercise_Name"];
                $desc = $row["Description"];
                $disabled = $row["Disabled"];
                $dateCreated = $row["Date_Created"];
                $version = $row["Version"];
                $createdBy = $row["Created_By"];
        <form name="displayExercise" method="POST">
            Exercise ID: <input type="text" name="ExerciseID"  value="<?php echo $exerciseID;?>" /><br/>
            Exercise Name: <input type="text" name="ExerciseName"  value="<?php echo $exerciseName;?>" /><br/>
            Description: <input type="text" name="Description" value="<?php echo $desc; ?>"/><br/>
            Disabled: <input type="text" name="Disabled"  value="<?php echo $disabled;?>" /><br/>
            Date Created: <input type="text" name="Date Created" value="<?php echo $dateCreated; ?>"/><br/>
            Version: <input type="text" name="Version"  value="<?php echo $version;?>" /><br/>
            Created By: <input type="text" name="CreatedBy" value="<?php echo $createdBy; ?>"/><br/>
        <form name="addMonthlyExercise" action="AddUpdateMonthlyExercise.php" method="POST">
            <input type="hidden" name="addUpdate" value="" />
            Add to Exercise of the Month: <select id="Month" name="Month">
                                            <option value="01">January</option>
                                            <option value="02">February</option>
                                            <option value="03">March</option>
                                            <option value="04">April</option>
                                            <option value="05">May</option>
                                            <option value="06">June</option>
                                            <option value="07">July</option>
                                            <option value="08">August</option>
                                            <option value="09">September</option>
                                            <option value="10">October</option>
                                            <option value="11">November</option>
                                            <option value="12">December</option>
            <input type="hidden" name="exerciseID" value="<?php echo $exerciseID;?>" />
            <input type="submit" name="addExercise" value="Add" onclick="CheckExistance(document.Month.value);" />
    Adds or updates an exercise on the monthly exercise table
        @mysql_select_db($database) or die( "Unable to select database");
	$exerciseID = mysql_real_escape_string(stripslashes($_POST['exerciseID']));
	$exerciseMonth = mysql_real_escape_string(stripslashes($_POST['Month']));
    $addUpdate = mysql_real_escape_string(stripslashes($_POST['addUpdate']));
    echo "Month: ".$exerciseMonth;
    echo "<br>ID: ".$exerciseID;
    echo "<br>SQL Query: ".$addUpdate;
//    Check if value passed in is add or update
    if ($addUpdate == "Update") {
        $sql = mysql_query("UPDATE Exercise_of_Month
            SET Exercise_Id = '$exerciseID'
            WHERE Exercise_Month = '$exerciseMonth'");
        if (mysql_query($sql)) {
            echo "<br>Exercise of the month updated";
            echo "<br>Update Failed";
    else {
        $sql = "INSERT INTO Exercise_of_Month
            SET Exercise_Id = '$exerciseID', Exercise_Month = '$exerciseMonth'";
        if (mysql_query($sql)) {
            echo "<br>New exercise of the month added";
            echo "<br>Insert Failed";
//    header('Location: ViewMonthlyExercises.php' );

Open in new window

  • 2
  • 2
2 Solutions
Steve BinkCommented:
I'd use AJAX for this.  Forcing a page refresh during this operation will be a little unwieldy because PHP pushed into javascript, not the other way around.  By using AJAX, you let javascript call a PHP script in the background, return and act on the results, then submit the final information.

With AJAX, a submit button causes the add request to be sent to the server.  The server runs PHP to determine if the month is taken.  If it is, return a specific error to the calling page.  If not, return OK.  When the AJAX gets the response, check for the error.  If it exists, display an alert box with OK/Cancel.  If OK is selected, send a second request to the server with an 'override' option set.

Without AJAX, the client hits the submit button on the form.  Your page tries to add, finds the month is taken.  Now you have to build the javascript routine to ask the user, and a hidden form to handle reposting the information back to the server.  The user clicks OK or Cancel, the javascript sets a form field as appropriate and programmatically triggers a submit.
tqrecordsAuthor Commented:

Thank you for the reply. I am fairly new at this and I do not know much about AJAX. If what I am trying to do can be accomplished without AJAX then I would really like to know how to do it.

However I am running out of time for this project so if you do know how to code the submit button with AJAX, please help me out. Is there anything I will have to install for it?

Right now the submit button does not go to the function CheckExistance..
Ray PaseurCommented:
May have already posted this for you, but just for good measure, here is a sample that shows all the moving parts of what has come to be known as AJAX.  Read it over and I am sure it will be clear to you.  Even though AJAX is a somewhat advanced concept, the structure is quite straightforward and this is an elegant presentation of the subject.  

Best, ~Ray
I find a lot of this AJAX stuff a bit of a hype.  Lots of people have
been using similar things long before it became "AJAX".  And it really
isn't as complicated as a lot of people make it out to be.  Here is a
simple example from one of my apps.  
First the Javascript:
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
        ro = new XMLHttpRequest();
    return ro;
var http = createRequestObject();
function sndReq(action) {'get', 'rpc.php?action='+action);
    http.onreadystatechange = handleResponse;
function handleResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
        var update = new Array();
        if(response.indexOf('|' != -1)) {
            update = response.split('|');
            document.getElementById(update[0]).innerHTML = update[1];
This creates a request object along with a send request and handle
response function.  So to actually use it, you could include this js in
your page.  Then to make one of these backend requests you would tie it
to something.  Like an onclick event or a straight href like this:
  <a href="javascript:sndReq('foo')">[foo]</a>
That means that when someone clicks on that link what actually happens
is that a backend request to rpc.php?action=foo will be sent.
In rpc.php you might have something like this:
  switch($_REQUEST['action']) {
    case 'foo':
      / do something /
      echo "foo|foo done";
Now, look at handleResponse.  It parses the "foo|foo done" string and
splits it on the '|' and uses whatever is before the '|' as the dom
element id in your page and the part after as the new innerHTML of that
element.  That means if you have a div tag like this in your page:
  <div id="foo">
Once you click on that link, that will dynamically be changed to:
  <div id="foo">
  foo done
That's all there is to it.  Everything else is just building on top of
this.  Replacing my simple response "id|text" syntax with a richer XML
format and makine the request much more complicated as well.  Before you
blindly install large "AJAX" libraries, have a go at rolling your own
functionality so you know exactly how it works and you only make it as
complicated as you need.  Often you don't need much more than what I
have shown here.
Expanding this approach a bit to send multiple parameters in the
request, for example, would be really simple.  Something like:
  function sndReqArg(action,arg) {'get', 'rpc.php?action='+action+'&arg='+arg);
    http.onreadystatechange = handleResponse;
And your handleResponse can easily be expanded to do much more
interesting things than just replacing the contents of a div.

Open in new window

Steve BinkCommented:
@Ray: I'm stealing that.  Outstanding explanation and sample.

@tqrecords: If you want to see more in-depth information on what is available with AJAX, and how everything fits together, see some of these links:
Ray PaseurCommented:
@routinet: Take it and spread it widely!  I cannot recall where I got it but since it is signed "rasmus" I think it may be "lerdorf" of PHP fame.  Wish I had written it myself.  Best to all, ~Ray
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now