Solved

Fill Options Using query result through AJAX

Posted on 2008-10-06
20
1,079 Views
Last Modified: 2010-04-21
I am trying to get a List box filled with Options based on a query that I build from the values of 2 List boxes.  So far I can pass the 2 list box "selected option" values to a php file and I can do the query (I think).  When it returns after going through "statechanged" I'm getting "No Input File Specified".  Not sure what is happening.  I think it may be something about parsing the query result but I'm not sure.  I would appreciate some help getting this going.

I have attached the code I've got so far.  If you need more of the code, just ask, it's pretty long in parts.
The Ajax
/* From the Main File */
<tr>
  <td height="23" valign="middle" style="border-bottom:1px solid #cccccc">
  	<p><strong>Group:&nbsp;&nbsp;&nbsp;  	</strong></p>
    <p>&nbsp;    </p>
	</td>
  <td height="23" style="border-bottom:1px solid #cccccc">
  <div class="style5" id="GrpSpot" >
  <select name="GroupDropdown" size="1" style="font:8pt verdana" onChange="ShowBACEType(frmBACEStk.GroupDropdown.options.value);"> 
<!--  Line 130 Maybe -->
<!-- <select name="GroupDropdown" size="1" style="font:8pt verdana" onChange="htmlData('BACETypeQry.php', 'firstlvl=' + document.getElementById('CategoryDropdown').value + ' secondlvl=' + document.getElementById('GroupDropdown').value);"> -->
  <!-- Line 132 Maybe -->
  <option>Choose a Group...</option>
</select>
</div> 
 
/* -------- From the JS Code File  -----------*/
function ShowBACEType(Grppicked, Catpicked) { // Shows the pictures in that category.
  //Need this to bridge to selecting from the database.
  alert (" In ShowBACEType ");
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
	 alert ("Browser does not support HTTP Request");
     return;
  }
  var url="BACETypeQry.php"
  url=url+"?q="+escape(Catpicked)+"&r="+escape(Grppicked);
  url=url+"&sid="+Math.random();
  //alert ("ShowBACEType  url =  " + url);
  xmlHttp.onreadystatechange=stateChanged 
  xmlHttp.open("GET",url,true)
  xmlHttp.send(null)
}
 
/*----------- The PHP query File -------------*/
<?php 
   require_once('Connections/BACEMySQL.php'); 
 
ini_set('display_errors', 1);
error_reporting(E_ALL);// List of Pictures-Stock Designs
 
mysqli_select_db($BACEMySQL, $database_BACEMySQL);
if ( ! $BACEMySQL) {
     die( "Couldn't connect to MySQL:  ".mysql.error() );
}
$q=$_GET["q"];
$r=$_GET["r"];
if ( $r == "0") {
	$qryALL = "*";
} else {
	$qryALL = $r;
}
 
//$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategory = $_REQUEST[firstlvl] AND stkGroup = $qryALL"; 
$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategoryIndex = '".$r."' AND stkGrpIndex = '".$qryALL."'"; 
 
$rsBACEstkType = mysqli_query($BACEMySQL, $query_rsBACEstkType ) or die(mysql_error());
$totalRows_rsBACEstkType = mysqli_num_rows($rsBACEstkType);
 
	  
  if($totalRows_rsBACEstkType > 0):
  // if($result = mysql_query($query)) 
  { 
    if($success = mysqli_num_rows($rsBACEstkType) > 0) 
    { 
      //echo "<select name='selBACEStkDes' onchange='submitForm();'>\n"; 
      echo("<select name=\"selBACEStkDes\" onchange=\"ShowBACEPic(frmBACEStk.selBACEStkDes.options.selectedIndex);\">"); 
      //echo "<option>-- Please select --</option>\n"; 
     
      //Now fill the Select box with data 
      while ($row_rsBACEstkType = mysqli_fetch_assoc($rsBACEstkType)) { 
      // while ($row = mysql_fetch_array($result)) 
      { 
        $SDsku = $row_rsBACEstkType['sku'];
		$SDpicfile = $row_rsBACEstkType['typepicture'];
		$SDTitle = $row_rsBACEstkType['stkdestitle'];
		$SDstkCat = $row_rsBACEstkType['stkCategory'];
		$SDstkGrp = $row_rsBACEstkType['stkGroup'];
		$SDstktype = $row_rsBACEstkType['stkType'];
		$SDstkcommnt = $row_rsBACEstkType['stkdesComment'];
		// $Customername = $row['Customername']; 
        $type = $row['type']; 
        echo("<option value=\"$SDpicfile\">$SDTitle</option>"); 
		MainArray[MainVar++] = new Fix($SDsku, $SDpicfile, $SDTitle, $SDstkCat, $SDstkGrp, $SDstktype, $SDstkcommnt)
      } 
      echo("</select>"; 
    } 
    elseif($debug) 
    { 
      die("retrieveQueryType(): No rows returned by query"); 
    } 
  } 
  else 
  { 
    $success = FALSE; 
    if($debug) 
    { 
      die("retrieveQueryType(): query failed - ".mysql_error()); 
    } 
  } 
  // return($success); 
} 
 
?>
 
/*--------------- The AJAX functions file -----------*/
function GetXmlHttpObject(handler)
{
   var objXMLHttp=null; 
  if (window.XMLHttpRequest)
   {
       objXMLHttp=new XMLHttpRequest()
   }
   else if (window.ActiveXObject)
   {
       objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
   }
   return objXMLHttp
}
function stateChanged()
{
   alert ( " IN stateChanged ");
   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
           <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->
           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->
           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText; 
   }
   else {
           //alert(xmlHttp.status);
   }
}
/*--------------End ---------------------------*/

Open in new window

0
Comment
Question by:OldHatt45
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 11
  • 9
20 Comments
 
LVL 10

Accepted Solution

by:
Bane83 earned 500 total points
ID: 22650565
["No input file specified" means that you have provided an invalid URI, and the file you are looking for doesn't exist, not that it cannot be ran. The issue is either in the URI you are providing, the location of your files, or the directory you have set as your root.]

http://bytes.com/forum/thread681936.html

Further to that, there are several issues I see with your code:

1) First, you may wish to change your GetXMLHttpObject() to the one I've included below.  It's a bit more complete and allows for more browser compatibility.
2) You're not checking the return code on your AJAX call. (see below)
3) Be careful with that query.  I could easily do an injection attack on that and wipe your table or even database:
Example:
With
$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategoryIndex = '".$r."' AND stkGrpIndex = '".$qryALL."'";

What happens if I intercept the AJAX call and change the querystring to:
...&r=%27%3BDROP%20TABLE%20stkCategoryIndex%3B--...
(';DROP TABLE stkCategoryIndex;--)
 I would look up ways to do sanitization on your parameters before passing them into your queries.
1
====================================================================
function GetXmlHttpObject() 
{
	var xmlhttp = null;
      
	if (window.XMLHttpRequest) // Mozilla, Safari,...
	{ 
		xmlhttp = new XMLHttpRequest();
	} 
    else if (window.ActiveXObject) // IE
    { 
        try 
        {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch(e) 
        {
            try 
            {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch(e) 
            {
				alert('Your browser does not support XMLHTTP.\r\nThe page content cannot be updated properly.\n\rUse Internet Explorer 5.0+.');
            }
        }
    }
    
    return xmlhttp;
}
 
2
===================================================================
if(http.readyState == 4 || http.readyState == "complete")
{
	if (http.status == 200)
	{
		// Do work
	}
}

Open in new window

0
 

Author Comment

by:OldHatt45
ID: 22651814
Bane83,

OK, point taken.  I have read the info about the URI.
I think I fixed the URI, but I'm still seeing the same "Input file not specified" message where the 3rd list box should be.  
THe file is in the same directory as the calling file. "localhost\BACE".  I have the line with the call on it as
  var url=".\BACE\BACETypeQry.php"
Is this correct?????

I also agree about the SQL Injection attack piece.  Once I get the basic stuff working, I will go fix that.  But first, I need to get it working. :-))

I don't understand this????  
2
===================================================================
if(http.readyState == 4 || http.readyState == "complete")
{
      if (http.status == 200)
      {
            // Do work
      }
}

Does this need to replace something in the statechanged function???

Thanks

OldHatt45
0
 

Author Comment

by:OldHatt45
ID: 22653100
A little more info.  WHen I run the project, I wanted to see what the stateChanged function was doing, so I added the line

alert ( " IN stateChanged  readyState =  " + xmlHttp.readyState);

I can now see the states change from 1 to 2 to 3 to 4.  

It looks like it's going out and getting something, but I still show the "No input file specified message where the third select box should appear.  

Please Help , I'm really going crazier.

THanks

OldHatt45
0
Transaction Monitoring Vs. Real User Monitoring

Synthetic Transaction Monitoring Vs. Real User Monitoring: When To Use Each Approach? In this article, we will discuss two major monitoring approaches: Synthetic Transaction and Real User Monitoring.

 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22653496
With regards to #2,
function stateChanged()
{
   alert ( " IN stateChanged ");
   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
           <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->
           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->
           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText;
   }
   else {
           //alert(xmlHttp.status);
   }
}

Should be changed to:
function stateChanged()
{
   alert ( " IN stateChanged ");
   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
         if (xmlHttp.status == 200)
         {
           <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->
           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->
           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText;
         }
         else
         {
             // Handle error
         }
   }
   else {
           //alert(xmlHttp.status);
   }
}


Now, these are the next steps:
1) Ensure that the php file is returning what it should be.  Call the page on its own, passing in a valid querystring just to be sure that the problem isn't with the php file itself.
2) If the php file is fine, then we know that something is wrong with the way we're trying to access the page.  Normally, a URL with nothing preceding it will start at the current directory.  So, we'll use a little tool to help us figure out what's going on: http://www.fiddlertool.com/fiddler/ 
Fiddler is a free tool which runs with IE and monitors requests/responses.  With this you can see whether or not the address being passed is correct and, if so, what's being passed back.
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22675189
I forgot to mention the third step:  Let me know if you got anywhere with this.
0
 

Author Comment

by:OldHatt45
ID: 22701784
Bane83,
Sorry it has taken so long to get back to this.  My machine died!  Fortunately I had a backup, and also fortunately it wasn't the hard drive.

Ended up getting a new machine, but with Vista (64 bit).  Finally got everything setup and working again.  I installed fiddler but am having trouble.  It won't capture the internal requests.  I tried changing the "localhost" to 127.0.0.1 but  that didn't seem to help.  

Any suggestions to getting it setup?  I've looked fr the answer to this on the fiddler site and group but can't find anything.
Would really appreciate the help.  Oh, and I am still not getting the page for the Query.php page.  Other pages are working fine.

Thanks
OldHatt45
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22702931
Don't you just love it when computers decide to die? :)

I had forgotten about that issue with localhost.  What I found works most of the time is adding a period after "localhost", so if I were testing on http://localhost/MySite, I would go to http://localhost./MySite in IE which normally gets Fiddler working.

Ok, so what happens when you go to Query.php?  Is it an error page?  A blank page?  I looked at the PHP script attached below (I believe this is the code for Query.php, correct?) and I can't immediately see any problems, but I'll admit that my knowledge of PHP is rather rudimentary.
<?php 
   require_once('Connections/BACEMySQL.php'); 
 
ini_set('display_errors', 1);
error_reporting(E_ALL);// List of Pictures-Stock Designs
 
mysqli_select_db($BACEMySQL, $database_BACEMySQL);
if ( ! $BACEMySQL) {
     die( "Couldn't connect to MySQL:  ".mysql.error() );
}
$q=$_GET["q"];
$r=$_GET["r"];
if ( $r == "0") {
        $qryALL = "*";
} else {
        $qryALL = $r;
}
 
//$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategory = $_REQUEST[firstlvl] AND stkGroup = $qryALL"; 
$query_rsBACEstkType = "SELECT sku, typepicture, stkdestitle, stkCategory, stkGroup, stkType, stkdesComment FROM stkdesigntypes WHERE stkCategoryIndex = '".$r."' AND stkGrpIndex = '".$qryALL."'"; 
 
$rsBACEstkType = mysqli_query($BACEMySQL, $query_rsBACEstkType ) or die(mysql_error());
$totalRows_rsBACEstkType = mysqli_num_rows($rsBACEstkType);
 
          
  if($totalRows_rsBACEstkType > 0):
  // if($result = mysql_query($query)) 
  { 
    if($success = mysqli_num_rows($rsBACEstkType) > 0) 
    { 
      //echo "<select name='selBACEStkDes' onchange='submitForm();'>\n"; 
      echo("<select name=\"selBACEStkDes\" onchange=\"ShowBACEPic(frmBACEStk.selBACEStkDes.options.selectedIndex);\">"); 
      //echo "<option>-- Please select --</option>\n"; 
     
      //Now fill the Select box with data 
      while ($row_rsBACEstkType = mysqli_fetch_assoc($rsBACEstkType)) { 
      // while ($row = mysql_fetch_array($result)) 
      { 
        $SDsku = $row_rsBACEstkType['sku'];
                $SDpicfile = $row_rsBACEstkType['typepicture'];
                $SDTitle = $row_rsBACEstkType['stkdestitle'];
                $SDstkCat = $row_rsBACEstkType['stkCategory'];
                $SDstkGrp = $row_rsBACEstkType['stkGroup'];
                $SDstktype = $row_rsBACEstkType['stkType'];
                $SDstkcommnt = $row_rsBACEstkType['stkdesComment'];
                // $Customername = $row['Customername']; 
        $type = $row['type']; 
        echo("<option value=\"$SDpicfile\">$SDTitle</option>"); 
                MainArray[MainVar++] = new Fix($SDsku, $SDpicfile, $SDTitle, $SDstkCat, $SDstkGrp, $SDstktype, $SDstkcommnt)
      } 
      echo("</select>"; 
    } 
    elseif($debug) 
    { 
      die("retrieveQueryType(): No rows returned by query"); 
    } 
  } 
  else 
  { 
    $success = FALSE; 
    if($debug) 
    { 
      die("retrieveQueryType(): query failed - ".mysql_error()); 
    } 
  } 
  // return($success); 
} 
 
?>

Open in new window

0
 

Author Comment

by:OldHatt45
ID: 22703285
Bane83
OK, I got it kind of working.  The "BACETypeQry.php" file and the Connection file appear to be working.
I am getting a 200 from fiddler and a blank page which is what i expected.

The only way I can get fiddler to show me anything is to replace "localhost" with "ipv6.fiddler".  But I don't understand how to make it automatically go to "ipv6.fiddler".  Can you shed any light on that?
I also tried "127.0.0.1" with no success either.  Uggghhhhh ;-))

Been working with computers for a very long time doing different things, and I've truly grown to hate them.  Especially when you do something like just shutting the machine off, then realizing you need to do something and turning it back on only to have it sit there and stare at you like "So, what do you want me to do?"

OldHatt45

0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22703615
Shouldn't BACETypeQry.php be returning the select menu rather than a blank page?

As for fiddler's setup, I'm as much in the dark as you are unfortunately, as I haven't really had to muck around with anything but its basic functionality.  I did some quick googling and here's what I found which may be helpful:

IE7 and the .NET Framework are hardcoded not to send requests for Localhost through any proxies, and as a proxy, Fiddler will not receive such traffic.

The workaround is to use your machine name as the hostname instead of Localhost or 127.0.0.1. So, for instance, rather than hitting http://localhost:8081/mytestpage.aspx, instead visit http://machinename:8081/mytestpage.aspx.

...Or, if you're using Fiddler v2.1.8 or later, just use http://ipv4.fiddler to hit localhost on the IPv4 adapter, or use http://ipv6.fiddler to hit localhost on the IPv6 adapter.  This works especially well with the Visual Studio test webserver (codename: Cassini) because the test server only listens on the IPv4 loopback adapter.

Lastly, you could Customize your Rules file like so:

static function OnBeforeRequest(oSession:Fiddler.Session){
  if (oSession.HostnameIs("MYAPP")) { oSession.host = "127.0.0.1:8081"; }
}

...and then just hit http://myapp, which will act as an alias for 127.0.0.1:8081.

You can add a lot of power to Fiddler by updating its JScript.NET CustomRules.js file.  To add rules to Fiddler, choose Customize Rules on Fiddler's Rules menu.  Enter code inside the suggested function and save the file.  Fiddler will automatically reload the rules.
0
 

Author Comment

by:OldHatt45
ID: 22707840
Bane83

OK, I think I figured out how  to deal with the "localhost" thing.  Dreamweaver has a setting on its "Testing Server" setup parameters, where you would normally put in "localhost".  I changed that to the ipv6.fiddler and it is working correctly.  So that's taken care of.

OK, so I figured out all the syntax type errors and it is working to a point.  It seems to stop working in the "statechanged" function.  I put in an alert to see what the responsetext is, and it's coming back empty.  And statechanged says it's state 4.

I know there is data for the selection criteria, and I think the parameters are being passed correctly.  
This is the contents of the alert window.

ShowBACEType  url =  http://ipv6.fiddler/BarkAvenueCustomEmbroidery/BACETypeQry.php?q=7&r=0&sid=0.7322301236794777

I'm stumped.

OldHatt45


function stateChanged()
{
   alert ( " IN stateChanged  readyState =  " + xmlHttp.readyState);
   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
      if (xmlHttp.status == 200) { 
	  <!-- document.getElementById("txtResult").innerHTML= xmlHttp.responseText; -->
           <!--document.getElementById("typeList").innerHTML= xmlHttp.responseText; -->
		   alert ("xmlHttp.responsetext =  " + xmlHttp.responseText);
           document.getElementById("PicSpot").innerHTML= xmlHttp.responseText; 
	  } else {
		  //Handle error
	  } 
   } else {
           //alert(xmlHttp.status);
   }
}

Open in new window

0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22707981
Ok, so now we know for a fact that your AJAX call is fine and it's hitting the appropriate page (otherwise you wouldn't get a 200 status).  That means that the issue lies with BACETypeQry.php, so we'll have to debug this a bit.  For test purposes, let's go directly to http://ipv6.fiddler/BarkAvenueCustomEmbroidery/BACETypeQry.php?q=7&r=0&sid=0.7322301236794777 and see what's getting output.  My guess is that you'll be getting a blank page (since your responsetext is empty) which means something else is going on here.

So... First let's run the query on it's own against the database and make sure that it's returning data.  If the query successfully returns data based on the parameters you pass in (q=7, r=0), then we need to figure out what part of the php code is giving us grief.  To do that, let's just dump in some echo statements at certain points along the code and see how far into the code we can get before something fails.
0
 

Author Comment

by:OldHatt45
ID: 22742769
Hey Bane83,

OK, I got the reply from the Database, running tthe TypeQry.php file separately.
Now another really great problem.  I put the test files up on the ISP, and I'm getting an "Access Denied" error and no results displayed in the Select box (the output from the query).
ISP says my code is written wrong.  Ugghhhh.  Seems like it may have something to do with mbstring.dll, but I don't know.

Anyhow, any insight????

THanks

OldHatt45
0
 

Author Comment

by:OldHatt45
ID: 22742784
Oh, if you want to check it out, you can go to the following URL's

http://barkavenuece.fatcow.com/Test/BACEStockDesign.php

http://barkavenuecustomembroidery.com/Test/BACETypeQry.php

Thanks

OldHatt45
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22743313
Lucky for you, this is a simple fix.
I went to the first link, selected a couple items and got the "Access Denied" error.  I went into a javascript debugger and saw that it was the xmlHttp.open() call that was failing.  Hmm.  I grabbed the url that it was trying to open, pasted it into the browser and sure enough "Page does not exist".  So I compared the url to your second URL:

http://barkavenuecustomembroidery.com/test/BACETypeQry.php?q=1&r=0&sid=0.15934681928206545
http://barkavenuecustomembroidery.com/Test/BACETypeQry.php

Ignoring the querystring, can you spot the difference?  The problem is the use of /test/ instead of /Test/.  Some hosting applications are capable of determining that they are one and the same, but I believe PHP is case sensitive when it comes to URL's, so simply change this line:

var url="http://BarkAvenueCustomEmbroidery.com/test/BACETypeQry.php"

to

var url="http://BarkAvenueCustomEmbroidery.com/Test/BACETypeQry.php"

and that should wrap this up.
0
 

Author Comment

by:OldHatt45
ID: 22744244
Bane83
OK, I changed the "test" to "Test" and fixed the QryType.php.
Still getting the Access Denied error.

Don't understand the xmlhttp.open error thing.  Is there something wrong with the way I'm constructing the query?  And remember, the ISP support guy said there was a problem with mbstring.dll, which I have no idea whatthat's all about.

Thanks

OldHatt45
0
 
LVL 10

Assisted Solution

by:Bane83
Bane83 earned 500 total points
ID: 22744568
Looks like you're hitting a cross-domain issue: http://forums.devshed.com/javascript-development-115/ajax-problem-access-is-denied-452579.html

What this means is that you're starting off at http://barkavenuece.fatcow.com/ but making a request to http://barkavenuecustomembroidery.com/.  These are different domains, and it's called a cross-domain request.  It can be a real headache for some developers as there's a lot of built in security around it.  If at all possible, I would keep your entire application on one server, but have a read through the link I provided for some possible alternatives.

(I'm ignoring your ISP support guy's idea for now.  I find in most cases that these people hired for tech support know squat and give you the first answer they find in a FAQ or Google.  That being said, from what I've found, mbstring.dll is used so that you can handle strings written in Japanese and other languages that require more than a single byte to store a letter/character... Definitely doesn't look to be at all related to your issue.)
0
 

Author Comment

by:OldHatt45
ID: 22745647
Bane83,

OK, I read the "cross Domain stuff.  Excellent.

That seems to have done the trick!!!

For that AND all the prceeding help I'm awarding the Points!

I will have another question later tonight.  I hope you will respond to it!!!!

THANKS VERY MUCH For the HELP!!!

OldHatt45
0
 

Author Closing Comment

by:OldHatt45
ID: 31503371
Excellent!  What I wanted was the Guidance and you Provided that in Spades!!!  Thanks Again
OldHatt45
0
 

Author Comment

by:OldHatt45
ID: 22745724
Bane83

Hope you got all the points.  I split it because each piece was part of the solution so anyone looking will seethe pieces that went into the solution!!

Thanks
OldHatt45
0
 
LVL 10

Expert Comment

by:Bane83
ID: 22746625
Not a problem!  Once you get the new question up, just post a link in here and I'll take a look.  If I know anything on the subject and no one's picked it up before I get a chance, I'll see what I can do!
0

Featured Post

Why Off-Site Backups Are The Only Way To Go

You are probably backing up your data—but how and where? Ransomware is on the rise and there are variants that specifically target backups. Read on to discover why off-site is the way to go.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
Many old projects have bad code, but the budget doesn't exist to rewrite the codebase. You can update this code to be safer by introducing contemporary input validation, sanitation, and safer database queries.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

689 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question