2013-12-16 3 views
0

У меня есть три файла. Основной файл - dispatch.php. Из этого файла пользователь будет выбирать различные варианты, которые используют построитель запросов на другой странице с именем dispatch-grid.php. В dispatch-grid.php запрос строится и отображается на dispatch.php.PHP pass querystring на другую страницу

Вот запрос от отправки-grid.php, который вызывает базу данных и отображает сетку на dispatch.php:

<?php 
    $select = "SELECT DISTINCT * FROM `dispatch_read`" . " WHERE " . $where . ";"; 
    $QueryResult = @mysql_query($select) or die(); 
    $resnum = mysql_num_rows($QueryResult); 

    if($resnum == 0){ 
     echo "<div>Your search returned no results</div>"; 
    } 
    else { 
    echo "<table>\n"; 
    echo "<thead><tr>" . 
    echo "<th>BOL</th>" . 
    echo "<th>CONTAINER</th>" . 
    echo "<th>STATUS</th>" . 
    echo "</tr></thead>" . 
    echo "<tbody>\n"; 

    while(($Row = mysql_fetch_assoc($QueryResult)) !== FALSE){ 
    echo "<tr>"; 
    echo "<td>{$Row[BOL]}</td>"; 
    echo "<td>{$Row[CONTAINER]}</td>"; 
    echo "<td>{$Row[STATUS]}</td>"; 
    echo "</tr></tbody>\n"; 
    echo "</table>\n"; 
    } 
    } 

Есть много больше строк, которые я отображения. Я просто старался держать это как можно короче.

можно отобразить эту сетку на dispatch.php с помощью этой функции:

displayrecords(); 

В этот момент, сетка отображается на dispatch.php. Теперь мне нужно выполнить запрос от dispatch-grid.php ($ select) на другую страницу, называемую getreport.php, где я смогу экспортировать сетку в лист excel.

На dispatch.php, у меня есть кнопка ввода:

<input onclick="getreport()" type="button" value="Get Report" /> 

Кнопка вызывает в яваскрипта функцию на той же странице:

*** UPDATE *** 
function getreport(){ 
    window.location = "getreport.php?where=$where"; 
} 

На данный момент, я в состоянии, чтобы открыть лист excel, но он открывается пустым. Я не уверен, если это необходимо, чтобы показать, но вот код на getreport.php:

<?php 
include("include/database.php"; 

global $header; 
global $data; 
global $ts; 
$ts = date('mdY-His'); 
$sep = "\t"; 
$filename = "excelfilename"; 

*** UPDATE *** 
$sql = "SELECT DISTINCT * FROM dispatch_read WHERE " . $_GET['where'] . ";"; 

$result = @mysql_query($sql) or die ("Couldn't execute query" . mysql_error()); 
$file_ending = "xls"; 

header("Content-Type: application/xls"); 
header("Content-Disposition: attachment; filename=$filename.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

$sep = "\t"; 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
echo mysql_field_name($result,$i) . "\t"; 
} 
print("\n"); 
    while($row = mysql_fetch_row($result)) 
    { 
    $schema_insert = ""; 
    for($j=0; $j<mysql_num_fields($result);$j++) 
    { 
     if(!isset($row[$j])) 
     $schema_insert .= "NULL".$sep; 
     elseif ($row[$j] != "") 
     $schema_insert .= "$row[$j]".$sep; 
     else 
     $schema_insert .= "".$sep; 
    } 
    $schema_insert = str_replace($sep."$", "", $schema_insert); 
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
    $schema_insert .= "\t"; 
    print(trim($schema_insert)); 
    print "\n"; 
} 
?> 

Игнорируйте опечатки. Я могу отображать сетку без проблем. Мой код работает до тех пор, пока не нажмет кнопку getreport.

Я угадываю, что мне нужно сделать, это отправить запрос ($ select) из dispatch-grid.php в getreport.php, но я не уверен, как это сделать.

Я попытался сделать это на dispatch.php:

$query_string = $_SERVER['QUERY_STRING']; 

Затем я попытался отправить, что getreport.php, но я был неудачен его отправкой.

Буду признателен за любую помощь.

спасибо.

+0

какое значение $ где хранится? – dev1234

+0

$ где хранятся различные выборы, которые пользователь выполнил с помощью выпадающих меню. Я не показывал его, потому что не думал, что нужно показывать. В этот момент сетка отображается на dispatch.php. Все, что мне нужно сделать, это отправить $ select из dispatch-grid.php в getreport.php. – HoodCoderMan

+0

Проверьте мой ответ ниже. – dev1234

ответ

0

Вы можете просто изменить эту функцию (getreport), чтобы передать какой бы то ни Params, необходимые для getreport.php

function getreport(){ 
    window.location = "getreport.php?param1=hello&param2=world"; 
} 

так в getrport.php, вы можете просто получить доступ к этим Params, как,

echo $_GET['param1']; 
echo $_GET['param2']; 

Обновление

что вы хотите передать, $ select = "SELECT DISTINCT * FROM dispatch_read ". " ГДЕ " . $ где. ";";

Я предлагаю передать только значение переменной $ where для getreport.php.

т.е.

function getreport(){ 
    window.location = "getreport.php?where=hello"; // where param should hold the value of $where 
} 

так в getreport.php, вы можете получить доступ к нему следующим образом и сделать то же самое.

$ select = "SELECT DISTINCT * FROM dispatch_read". " ГДЕ " . $ _GET ['where']. ";";

+0

Я не уверен, что следую этому. Как отправить $ select, используя то, что вы показали мне выше? Большое вам спасибо за помощь. – HoodCoderMan

+0

@JohnBeasley я обновил ответ. check – dev1234

+0

Я получаю эту ошибку: Неизвестный столбец '$ where' in 'where clause'. Что я делаю не так? – HoodCoderMan

Смежные вопросы