- Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
- Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!
Reply to: PHP MySQL problem
Collapse
You are not logged in or you do not have permission to access this page. This could be due to one of several reasons:
- You are not logged in. If you are already registered, fill in the form below to log in, or follow the "Sign Up" link to register a new account.
- You may not have sufficient privileges to access this page. Are you trying to edit someone else's post, access administrative features or some other privileged system?
- If you are trying to post, the administrator may have disabled your account, or it may be awaiting activation.
Logging in...
Previously on "PHP MySQL problem"
Collapse
-
More great stuff. Thanks. Think it's all working now but repeating table update by date in CC callback just to be sure.
-
You're welcome.Originally posted by xoggoth View PostCheers Gentile. Will give that a go.
Update. Yeh that works, although really not sure why. I could understand if it wasn't running the PHP but it was. In fact, if I make a pure PHP page to update one record it only works on refresh although the page wouldn't show if the PHP wasn't running!
Wierd, anyway it works, ta very much.
Last thing, though, the above solution works because a race condition exists whereby the source of your iFrame is set before the document that contains it is ready. The code above alleviates that race condition in a naive way, by inserting a second's delay into proceedings to allow the document to finish loading before setting the source of the IFrame that is a constituent part of the document. There's no guarantee that precise delay will work for every user, though. Still, it at least identifies what the problem was.
Now that you know for sure what problem is, the best solution to ensure that this works for all users, if you're using jQuery, is to put the following code on your page:
That'll make sure the source for your iFrame is set only when the document is ready, and not before, however long it takes for the document to get ready on a given machine. If for any reason you don't want to use jQuery, a less-preferred solution would be to call the setHiddenIFrameSource() function from the body onload event, and that should have the same effect. You can do that by changing the <body> tag so that it resembles the following snippet:Code:<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $('#offers').attr("src", "captcha/getoffers.php"); }); </script>
and making sure that the JavaScript with the definition of the setHiddenIFrameSource function appears as before in the <head> section of your page.Code:<body onload="setHiddenIFrameSource();">
Leave a comment:
-
Cheers Gentile. Will give that a go.
Update. Yeh that works, although really not sure why. I could understand if it wasn't running the PHP but it was. In fact, if I make a pure PHP page to update one record it only works on refresh although the page wouldn't show if the PHP wasn't running!
Wierd, anyway it works, ta very much.Last edited by xoggoth; 8 October 2012, 09:55.
Leave a comment:
-
Possibly a document ready issue. Try putting this script somewhere on your page:
Code:<script type="text/javascript"> setTimeout('setHiddenIFrameSource();', 1000); function setHiddenIFrameSource() { document.getElementById('offers').src = "captcha/getoffers.php"; } </script>
Leave a comment:
-
PHP MySQL problem
Got a hidden iframe in a webpage that invokes a PHP script:
<iframe id="offers" src="captcha/getoffers.php" etc
The php populates the iframe with a list of current (ie where expiry date is >= current date) offer codes when the page is opened and it works fine. However, I am also trying to update the table with any expired statuses:
if expired etc....
$id = mysql_result($result,$i,"id");
$r = mysql_query("UPDATE offers SET status=-1 WHERE id=$id");
That works when I refresh the page but not when I open it, although echo statements show it is going through the loop on open, so can't see why the query line is not working. Any great ideas? Cheers.Tags: None
- Home
- News & Features
- First Timers
- IR35 / S660 / BN66
- Employee Benefit Trusts
- Agency Workers Regulations
- MSC Legislation
- Limited Companies
- Dividends
- Umbrella Company
- VAT / Flat Rate VAT
- Job News & Guides
- Money News & Guides
- Guide to Contracts
- Successful Contracting
- Contracting Overseas
- Contractor Calculators
- MVL
- Contractor Expenses
Advertisers

Leave a comment: