• 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.

Previously on "PHP MySQL problem"

Collapse

  • xoggoth
    replied
    More great stuff. Thanks. Think it's all working now but repeating table update by date in CC callback just to be sure.

    Leave a comment:


  • Gentile
    replied
    Originally posted by xoggoth View Post
    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.
    You're welcome.

    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:

    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>
    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:
    <body onload="setHiddenIFrameSource();">
    and making sure that the JavaScript with the definition of the setHiddenIFrameSource function appears as before in the <head> section of your page.

    Leave a comment:


  • xoggoth
    replied
    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:


  • Gentile
    replied
    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:


  • xoggoth
    started a topic PHP MySQL problem

    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.

Working...
X