Hi,
My page takes too long to load - how can i display a message when the user submits the form to say - Please wait...
I tried adding a popup box in javascript but I don't like the way it says Please wait... and the user has to click ok before they wait.
Any ideas on how to improve this.
Here is my code.
<?php
echo "<p><strong>Add/Edit your Qualifications </strong></p>";
$title .= " Course";
$text = "Course";
$table = "training";
echo "<form name=\"SkillChoice\" method=\"POST\" action=\"qual.php?id=".$_GET['id']."\">\n";
echo "<input type=\"hidden\" name=\"type\" value=\"$table\">";
echo "Choose a training package</br></br>";
$result = mysql_query("SELECT {$table}.{$table}_id,{$table}.{$table}_title FROM {$table} LEFT JOIN {$table}_hierarchy ON {$table}_hierarchy.child = {$table}.{$table}_id WHERE {$table}_hierarchy.parent IS NULL ORDER BY {$table}.{$table}_title ASC") or die(mysql_error()." @ Line ".__LINE__." Query: $query");
if (mysql_num_rows($result) > 0)
{
echo "<select name=\"area\">\n";
echo "<option selected value=\"\">Select an area</option>";
while ($row = mysql_fetch_assoc($result))
{
$id = $table."_id";
$name = $table."_title";
echo "<option value=\"".stripslashes($row[$name])."\">".stripslashes($row[$name])."</option>\n";
}
echo "</select>\n";
echo "<input type=\"submit\" onclick=\"MM_popupMsg('Loading...Please wait')\" value=\"Go\">";
}
$area = $_POST['area'];
if($area)
{
echo "<form name=\"addqual\" action=\"qual.php?id=".$_GET['id']."\" method=\"POST\">\n";
//GET LIST OF EXISTING training courses FROM DATABASE
$query1 = "SELECT training_id FROM membertraining WHERE memberloginName = '".$_GET['id']."'";
$result1 = mysql_query($query1) or die(mysql_error(). "Query: $query1");
$membertraining = array();
while ($row1 = mysql_fetch_assoc($result1))
{
$membertraining[] = $row1['training_id'];
}
//EXISTING LIST OF training IDS STORED IN $memberskills
$result = mysql_query("SELECT training.training_id,training.training_title FROM training LEFT JOIN training_hierarchy ON training_hierarchy.child = training.training_id WHERE training_hierarchy.parent IS NULL") or die(mysql_error());
//GET THE NAMES OF THE training AREAS
$training = array();
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
$stitle = $row['training_title'];
$training[$stitle] = array();
//CREATE AN ARRAY FILLED WITH training AREAS AS KEYS
$query2 = "SELECT training.training_id,training.training_title FROM training LEFT JOIN training_hierarchy ON training_hierarchy.child = training.training_id WHERE training_hierarchy.parent = ".$row['training_id'];
$result2 = mysql_query($query2) or die (mysql_error()." Query: $query2");
if (mysql_num_rows($result2) > 0)
{
while ($row2 = mysql_fetch_assoc($result2))
{
$training[$stitle][] = array("id" => $row2['training_id'], "title" => $row2['training_title']);
//ADD THE training TO THEIR RESPECTIVE training AREAS AS AN ARRAY CONTAINING ID AND NAME
}
echo "<p>";
}
}
//dump($training);
foreach ($training as $key => $value)
{
if (empty($value) || $key != $area)
continue; //IF NO training ARE AVAILABLE FOR A SKILL AREA SKIP THE SKILL AREA OUTPUT
else
{
echo "<table>\n";
echo "<tr><th colspan=\"4\">{$key}:</th>\n"; //OUTPUT training AREA TITLE
$counter = 0;
echo "<tr>\n";
foreach ($value as $value2)
{
echo "<td>".quote_smart($value2['title'])."</td><td><input type=\"checkbox\" value=\"{$value2['id']}\" name=\"training[]\""; //LIST training AND CHECKBOX
if (in_array($value2['id'],$membertraining))
echo "checked"; //CHECK THE CHECKBOX IF MEMBER HAS PREVIOUSLY ADDED training
echo "></td>\n";
$counter++;
if ($counter % 2 == 0) //LIMIT OUTPUT TO TWO training PER LINE
echo "</tr><tr>\n";
}
echo "</tr>";
echo "</table>";
}
}
echo "<p><input type=\"submit\" value=\"Add/Edit your qualification(s)\">";
echo "<input type=\"reset\" value=\"Reset Form\">";
}
echo "<input type=\"hidden\" name=\"title\" value=\"$area\">";
echo "<input type=\"hidden\" name=\"user\" value=\"$logname\">";
echo "</p>";
echo "</form>";
}
else if(!empty($_POST))
{
//THIS SECTION IS EXACTLY THE SAME AS THE CODE FOR THE MEMBER REGION TABLE BUT USING THE SKILLS TABLE INSTEAD
//GET LIST OF EXISTING training courses FROM DATABASE
$query1 = "SELECT training_id FROM membertraining WHERE memberloginName = '".$_GET['id']."'";
$result1 = mysql_query($query1) or die(mysql_error(). "Query: $query1");
$membertraining = array();
while ($row1 = mysql_fetch_assoc($result1))
{
$membertraining[] = $row1['training_id'];
}
//EXISTING LIST OF training IDS STORED IN $memberskills
$result = mysql_query("SELECT training.training_id,training.training_title FROM training LEFT JOIN training_hierarchy ON training_hierarchy.child = training.training_id WHERE training_hierarchy.parent IS NULL") or die(mysql_error());
//GET THE NAMES OF THE training AREAS
$training = array();
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
$stitle = $row['training_title'];
$training[$stitle] = array();
//CREATE AN ARRAY FILLED WITH training AREAS AS KEYS
$query2 = "SELECT training.training_id,training.training_title FROM training LEFT JOIN training_hierarchy ON training_hierarchy.child = training.training_id WHERE training_hierarchy.parent = ".$row['training_id'];
$result2 = mysql_query($query2) or die (mysql_error()." Query: $query2");
if (mysql_num_rows($result2) > 0)
{
while ($row2 = mysql_fetch_assoc($result2))
{
$training[$stitle][] = array("id" => $row2['training_id'], "title" => $row2['training_title']);
//ADD THE training TO THEIR RESPECTIVE training AREAS AS AN ARRAY CONTAINING ID AND NAME
}
echo "<p>";
}
}
//dump($training);
foreach ($training as $key => $value)
{
$theName = $key." Course";
if (empty($value) || $theName != $title)
continue; //IF NO training ARE AVAILABLE FOR A SKILL AREA SKIP THE SKILL AREA OUTPUT
else
{
foreach ($value as $value2)
{
if (in_array($value2['id'],$membertraining))
{
$queryDelete = "DELETE FROM membertraining WHERE memberloginName='{$_POST['user']}' AND training_id=".$value2['id'];
mysql_query($queryDelete) or die(mysql_error()." Query: $query1");
}
}
}
}
}
// $query1 = "DELETE FROM membertraining WHERE memberloginName='{$_POST['user']}'";
// mysql_query($query1) or die(mysql_error()." Query: $query1");
if (!empty($_POST['training']))
{
foreach ($_POST['training'] as $trainingID){
$sql = "INSERT IGNORE INTO membertraining SET memberloginName='{$_POST['user']}', training_id='$trainingID'";
$ok = mysql_query($sql) or die(mysql_error(). "Query: $sql");
if (!$ok)
{
echo "<p>Error inserting training for member $trainingID: " . mysql_error() . '</p>';
}
}
echo "Your qualifications have been updated and saved into the database.";
}
}
echo "<p>If you cannot see your course listed please click <a href=\"othercourses.php?id=".$_GET['id']."\">here</a> to add your course</p>"
?>
As you can see it is a hierachal db so I don't think there is a way to make it any faster.
Any help would be appreciated.