I want to download the records of the output of search criteria to excel.
As the fields for search criteria are more than 20. I am submitting the form with POST method rather than GET.

On click of "Download2excel", the hidden variable name1 is set to Yes. so i will check the condition in my code. Once the download is successful, I want to reset the variable.


Here is a sample structure of my code.

<html>
        <head>
            <?php
            if(trim($_POST['name1']) == 'yes') {
                header("Content-type: application/vnd-ms-excel");
                header("Content-Disposition: attachment; filename=$filename.xls");
            }else {
                ?>
        </head>
        <body onload="tempFn()">
    
            <script language="javascript" type="text/javascript">
                function tempFn(){  
                    global_search.name1.value = "";
                }
                function gs_download2xl_c() {
                    document.getElementById('name1').value="yes";
                    document.global_search.submit();
                }
            </script>
            <form name="global_search" id="global_search" action="test_1.php" method="POST">
                <input type="text" id="name1" name="name1" />
                <a  class="underline"  style="cursor: pointer" onclick="gs_download2xl_c();">
                    Download2excel
                </a>
            </form>
                <?php } ?>
        </body>
    </html>

As i am not executing the form after posting the form, i am not able to access the variable name1 is in it. I want to reset the variable name1.

I want to trigger the download, after submitting the form. As the records that are downloaded to excel should obey input search criteria.


Please suggest me a better procedure.

Try it with a submit button:

function gs_download2xl_c(f) {//f is the form node
	f.name1.value = "yes";
}
<form name="global_search" action="test_1.php" method="POST">
<input type="text" id="name1" name="name1" />
<input type="submit" value="Download2excel" onclick="gs_download2xl_c(this.form);" />
</form>

I think there's no point resetting name1 to "" because the page will be blitzed as soon as the form is submitted (just like clicking a hyperlink). That's the way standard form submission works. But please try it, I may be wrong.

In general, if you want a page to remain intact after form submission, the you can do one of the following:

  • Submit the form data using AJAX, though I'm pretty certain that the AJAX response handler (ie. javascript) would try to handle the returned EXCEL file, not the browser. I'm pretty sure this would fail.
  • Open a new window containing the form and submit from there.
  • Have an IFRAME on the page containing the form and submit from there.

This issue is discussed here but no code is provided.

Airshow

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.