Re: Transfer query result to another script

From: Date: Fri, 02 Nov 2007 10:46:12 +0000
Subject: Re: Transfer query result to another script
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-263961@lists.php.net to get a copy of this message
----- Original Message ----- From: "Jochem Maas" <jochem@iamjochem.com> To: "C.R.Vegelin" <cr.vegelin@hetnet.nl> Cc: "David Giragosian" <dgiragosian@gmail.com>; "php-general" <php-general@lists.php.net> Sent: Friday, November 02, 2007 9:06 AM Subject: Re: [PHP] Transfer query result to another script
C.R.Vegelin wrote:
Hello David, Jim, Thanks for your response. Yes, I do have session_start() at the top of Report.php. The reason for having the query on a different page than the result is that the result may be sent to various output types / scripts. I will change my code as follows: Engine.php ------------- $result = mysqli_query($connect, $myquery); if (!$result) error ... if (mysqli_num_rows($result) == 0) error ... // fill $_SESSION['results'] with query result switch ($output) { case "HTML": header("Location: Report.php"); break;
WRONG!!! there is no reason to do a redirect, use an include to run code relevant to the selected $output (and you'll have the result set available for no extra charge). and you can't stick resources (e.g. a resultset id) into session and expect them to persist - the value may be there, but the resource it pointed to is loooooong gone by the time the second script starts.
case "CSV": ... case "XML": ... case "PDF": ... } Thanks again for your advice. Regards, Cor ----- Original Message ----- From: David Giragosian To: C.R.Vegelin ; php-general Sent: Thursday, November 01, 2007 5:23 PM Subject: Re: [PHP] Transfer query result to another script On 11/1/07, C.R.Vegelin <cr.vegelin@hetnet.nl> wrote:
    Hi All,
    Q: Is it possible to transfer a query result to another script ?
    For example with (fragments of) the following 2 scripts:
    Engine.php
    ----------------
    $result = mysqli_query($connect, $myquery);
    if (!$result) error ...
    if (mysqli_num_rows($result) == 0) error ...
    $_SESSION['result'] = $result;
    header("Location: Report.php");
    Report.php
    ----------------
    $result = $_SESSION['result'];
    while ($row = mysqli_fetch_array($result)) ...
    This last line gives "Couldn't fetch mysqli_result".
    Is this because the result set is local to Engine.php ?
    TIA, Cor
Cor, Do you have session_start() at the top of Report.php? The manual shows an example of passing a php created class object using a session variable, with the caveat of needing to include the class definition on each page. It may be different for a mysql result object though. Why do you need the query on a different page than the result? David
Hi Jochem, The reason for a redirect is that Report.php has functionality such as sorting on report columns, checkboxes to make graphs etc. Suppose the following report columns: Country 06.Q1 06.Q2 06.Q3 06.Q4 07.Q1 07.Q2
1 Austria     1226     1211    1233    1328    1386    1362
2 Belgium    1004     1193    1008    9737    1102    1270
3 etc. If I don't use a redirect but an include Report.php then Engine.php must be rerun: - every time a user wants to sort on a columns, eg. Y06.Q1 - every time a user wants to make a graph with selected rows. Right ? I did use an include but I'm changing it because of the reasons above. I know it does have its price. Regards, Cor

« previous php.general (#263961) next »