Re: After INSERT form submit - Data doesn't refresh!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ok, in that case forget the Last-Modified or set it to the current date.


header('Last-Modified: '.gmdate('D, d M Y H:i:s', time()).' GMT');

Did you turn caching off in your browser and try it then?

Or try it with a different browser?
On Tue, Jul 22, 2008 at 2:48 PM, Rahul S. Johari <
sleepwalker@xxxxxxxxxxxxxxxx> wrote:

>
> Here's what it is:
>
> I have a php page, "a.php", which contains these three things:
>
>  - SELECT statement to display records from a mySQL Table
>  - HTML Form for inserting data into the mySQL Table
>  - INSERT statement to insert that row into the mySQL Table
>
> The HTML Form submits to the same, "a.php"
> Once the user submits the Form, a.php is called which INSERT's the row into
> the mySQL Table. However, the row does not appear in the SELECT statement
> table data unless I hit refresh on the page. (The INSERT function is
> executed before the SELECT in the page).
>
> I used the header() code that was suggested:
>
> header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
> header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
> header('Pragma: no-cache');
> $ffile = 'a.php';
> $time = filemtime($ffile);
> header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
>
> .. but it didn't help.
>
> Everything is working fine except that the Browser is more then likely
> caching the data and thus not allowing the newly inserted row to appear on
> top when the SELECT is executed.
>
>
> On Jul 22, 2008, at 8:34 AM, Thiago H. Pojda wrote:
>
>  Code, please? :)
>>
>> On Tue, Jul 22, 2008 at 9:33 AM, Rahul S. Johari <
>> sleepwalker@xxxxxxxxxxxxxxxx> wrote:
>>
>> Hmm, interesting.
>> In my case, $file does indeed output dynamic data.
>>
>> I did try with the modified time but it still doesn't work. I still have
>> to hit refresh on the browser, after submitting the form, in order for the
>> inserted record to appear.
>>
>> Not sure what to do - it's rather annoying. Novice users of the page would
>> assume the entry didn't get inserted or something happened. One alternate is
>> to submit Data to a different page and let that page redirect to the
>> Original page - but I do find it hard to believe that there is no solution
>> to this caching.
>>
>> Thanks guys!
>>
>>
>> On Jul 22, 2008, at 8:26 AM, Yeti wrote:
>>
>> The Last-Modified header tells the browser when the requested page was
>> last modified. Now I don't know how you get the date in your case but here
>> is an example:
>>
>> browser requests /test/test.php which is a simple php file without any
>> includes etc.
>>
>> in this case
>>
>> $file = '/test/test.php';
>>
>> This wont work if $file outputs dynamic data, so only use it if the
>> content only changes when you change the file.
>>
>> Now if you are using templates etc. obtaining the Last-Modified time is a
>> bit more complicated. If you use server side caching then you can chose the
>> cached file else you have to figure it out yourself.
>>
>> And the RFC 2616 header specification says:
>>
>> An origin server MUST NOT send a Last-Modified date which is later than
>> the server's time of message origination. In such cases, where the
>> resource's last modification would indicate some time in the future, the
>> server MUST replace that date with the message origination date.
>>
>> So do not send a future date!
>>
>>
>>
>> On Tue, Jul 22, 2008 at 2:11 PM, Rahul S. Johari <
>> sleepwalker@xxxxxxxxxxxxxxxx> wrote:
>>
>> I tried with just the first three header() statements you gave, but it
>> didn't work.
>> Let me try the modification date ... which file is being referred to in
>> $ffile?
>>
>> Also, I'm using Firefox, if it's of any consequence.
>>
>> Thanks!
>>
>> On Jul 22, 2008, at 7:30 AM, Bernhard Kohl wrote:
>>
>> I'm pretty sure this is a cache issue ..
>>
>> To disable caching:
>> header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
>> header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
>> header('Pragma: no-cache');
>>
>> But if you have the modification date then use
>> $time = filemtime($ffile);
>> header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
>>
>>
>> On Tue, Jul 22, 2008 at 1:14 PM, Rahul S. Johari <
>> sleepwalker@xxxxxxxxxxxxxxxx> wrote:
>> Ave,
>>
>> I'm wondering if there's a PHP solution to this, I could be in the wrong
>> place.
>> I have an INSERT form which submits to the same php page, which also
>> displays the records from the mySQL database the INSERT form submits to.
>> When the form submits and the page returns, the added record does not show
>> up unless you "Refresh" the page.
>>
>> I'm imagining even after form submit, the Browser is caching the data and
>> displaying data from the Cache.
>>
>> Is there a solution to this? Is there anything PHP can do to instruct the
>> browser not the cache the data?
>>
>> Thanks!
>>
>> ---
>> Rahul Sitaram Johari
>> Founder, Internet Architects Group, Inc.
>>
>> [Email] sleepwalker@xxxxxxxxxxxxxxxx
>> [Web]   http://www.rahulsjohari.com
>>
>>
>>
>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>>
>> ---
>> Rahul Sitaram Johari
>> Founder, Internet Architects Group, Inc.
>>
>> [Email] sleepwalker@xxxxxxxxxxxxxxxx
>> [Web]   http://www.rahulsjohari.com
>>
>>
>>
>>
>>
>>
>> ---
>> Rahul Sitaram Johari
>> Founder, Internet Architects Group, Inc.
>>
>> [Email] sleepwalker@xxxxxxxxxxxxxxxx
>> [Web]   http://www.rahulsjohari.com
>>
>>
>>
>>
>>
>>
>>
>> --
>> Thiago Henrique Pojda
>>
>
> ---
> Rahul Sitaram Johari
> Founder, Internet Architects Group, Inc.
>
> [Email] sleepwalker@xxxxxxxxxxxxxxxx
> [Web]   http://www.rahulsjohari.com
>
>
>
>
>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux