|
Posted by Paul on 05/26/05 23:30
Brian wrote:
> "Paul" <freelance@dezignage.net> wrote in message
> news:6%ole.1488412$8l.1142606@pd7tw1no...
>
>>Brian wrote:
>>
>>>"Paul" <freelance@dezignage.net> wrote in message
>>>news:Z_9le.1484742$6l.812316@pd7tw2no...
>>>
>>>
>>>>Brian wrote:
>>>>
>>>>
>>>>>This site I am working on is driving me up the F*****g wall ! , sorry
>>>>>just needed to get
>>>>>that of my chest
>>>>>
>>>>>I have site that run a MySQL query, there are many permutations of this
>>>>>query depending
>>>>>on what the users asks for (about 50 I think).
>>>>>
>>>>>I also need to save the queryed results into a CSV file and zip it on
>>>>>the fly. I have the
>>>>>code to do this (makezip.php), first of all I tried sending the MySQL
>>>>>query to makezip.php
>>>>>, this didn't work (see post Re: sending a MySQL query) so I am now
>>>>>trying a different way.
>>>>>
>>>>>search.php runs the search and displays the results on the screen. It
>>>>>also creates a var called $filedata,
>>>>>the var is the data to be zipped up
>>>>>
>>>>>makezip.php has the class to make the zip file.
>>>>>
>>>>>what I was trying to get the following to work........
>>>>>
>>>>>run the search.php, this give me the var $filedata I need. Have a link
>>>>>on this page to
>>>>>another file called savezip.php, this links runs another page called
>>>>>savezip.php that
>>>>>calls the below code.
>>>>>
>>>>>(the code needed to exicute making a zip file)
>>>>>
>>>>>include("search.php");
>>>>>include("makezip.php");
>>>>>
>>>>>$zipfile = new zipfile();
>>>>>$zipfile -> add_file($filedata, "test.csv");
>>>>>header("Content-type: application/octet-stream");
>>>>>header("Content-disposition: attachment; filename=newtest.zip");
>>>>>echo $zipfile -> file();
>>>>>
>>>>>I was hopping that when the link is clicked it run, it would read the
>>>>>var $filedata from the search.php
>>>>>and create the zip file for downloading, instead the savezip.php is
>>>>>reading in and displaying
>>>>>the search.php.
>>>>>
>>>>>I can't past the $filedata to save.php as its way to big, How can I get
>>>>>round this? How can I get the
>>>>>savezip.php to read the $filedata from search.php but without including
>>>>>the whole script?
>>>>>
>>>>>Once again thanks in advance,
>>>>>
>>>>>
>>>>>Brian
>>>>>
>>>>>
>>>>>
>>>>
>>>>Why don't you include your zipfile.php as part of search.php? then it
>>>>becomes one script and then you won't need to pass it anywhere... or have
>>>>your search.php at least create the zip file.. and then all you need to
>>>>pass is the URL of the zip file to your other file that the user can
>>>>click on and downlaod it from there...?
>>>
>>>
>>>The problem is that I need to change the headers when the script is
>>>called
>>>this way a pop up window appears to download the zip file. This zip file
>>>is done on the fly and no copies are made on the server so I can't put a
>>>link to it (done this way so the server does not get filled up with zip
>>>files)
>>>
>>>Brian
>>>
>>>
>>>
>>
>>I see.. I don't know how much data it is you're trying to pass from one
>>script to the other... but I would say you're best solution is to probably
>>use sessions... If still too big... I would recommend this solution for
>>you:
>>
>>#1. searc.php -> User searches for whatever it is they need... where they
>>have a link to download the content... the links points to your
>>zipfile.php (or whatever it was) ... which passes it the exact same search
>>query. Now zipfile.php is pretty much and identical copy of search.php
>>except all the output is held back and used for the zip file that will be
>>created in it.
>>
>>#2. Script takes all the output, (maybe you can even use the output
>>buffering functions in php if you don't need to change much of the output
>>that will be zipped up) and zips it up into the file....
>>
>>#3. First output to the browser is the proper headers for the download...
>>and the script sends it the zip file...
>>
>>I don't know if that makes sense.... but I think it could work...
>>
>>Take care,
>>
>>Paul
>
>
> Hi Paul
>
> passes the query was my first idea, but that didn't work (see my post
> Re: sending a MySQL query)
> I am now thinking of setting a cookie with the query in it, read it in, run
> it
> and the delete it.
> If that doesn't work, I'm running out of ideas !!!
>
> Thanks for your help mate
>
> Brian
>
>
>
Try something like this in your search.php
echo "<form name='download_zip' method='post' action='zipfile.php'>";
echo "<input type='hidden' name='query' value='{$query}' />";
echo "<input type='submit' name='submit' value='Download Zip' />";
echo "</form>";
you might just watch out that $query doesn't contain single quotes (for
this example) otherwise it will break the value attribute... maybe just
run the $query var through addslashes() or something like that... I'm
sure this could work for you..
then on zipfile.php you would just do something like this...
$query = !empty($_POST['query']) ? $_POST['query'] : null;
if(!$query) echo "Query didn't get passed!<br />";
..... do all your code for searching and zipping in here....
.... send the attachment headers.....
and that should do it no?
Navigation:
[Reply to this message]
|