2013-10-01 161 views
3

我是PHP新手,試圖將變量從一個頁面傳遞到另一個頁面。最初,我有一個包含如下框架的HTML頁面。PHP - 將變量從一個PHP文件傳遞到另一個PHP文件

<!DOCTYPE html> 
<html> 

<frameset cols="70%,*"> 
    <frame src="index.php"> 
    <frame src="slider.php"> 
</frameset> 
</html> 

如上所見,我有2個PHP頁面,在其中想從的index.php文件發送一些值我slider.php文件。我的index.php文件如下。

<?php 
$names = file('demo.csv'); 
$page = $_GET['page']; 
$pagedResults = new Paginated($names, 20, $page); 
$handle = fopen('demo.csv', 'r'); 
    if (($data = fgetcsv($handle, 1000, ',')) !== FALSE) 
    { 
    } 
echo "<table border='3' bgcolor='#dceba9' style='float:center; margin:50'>"; 
echo '<tr><th>'.implode('</th><th>', $data).'</th></tr>'; 
while ($row = $pagedResults->fetchPagedRow()) 
{ 
    echo "<tr><td>"; 
    $row1 = str_replace(',', "</td><td>", $row); 
    echo $row1; 
    echo "</td></tr>"; 
} 
fclose($handle); 
echo "</table>"; 
//important to set the strategy to be used before a call to fetchPagedNavigation 
$pagedResults->setLayout(new DoubleBarLayout()); 
echo $pagedResults->fetchPagedNavigation(); 
?> 
<form method="get" action="slider.php"> 
    <input type="hidden" name="totalcolumns" value="3"> 
    <input type="submit"> 
</form> 

這是我slider.php文件。

<?php 
     $totalcolumns = $_GET['totalcolumns']; 
     echo "My next value should get printed"; 
     echo $totalcolumns; 
?> 

    <input type="text" data-slider="true" data-slider-range="100,500" data-slider-step="100"> 
</html> 

如上所見,我試圖檢索名稱爲「totalcolumns」的值。但是,我無法檢索到我的slider.php文件中的值。我也嘗試使用SESSION建議在this鏈接,但沒有運氣。有人能讓我知道做錯了什麼嗎?

+0

一個與安全相關的方面:你在輸出時應該使用GET變量* totalcolumns *:'echo htmlspecialchars($ totalcolumns);' – ComFreek

+1

我想你的問題在於你不確定哪個叫做第一個 – Gar

+1

你可能想避免使用框架alltog以太網,因爲PHP + JavaScript組合相當有能力以可訪問的方式替換它們..只是btw:P –

回答

1

你應該使用sessions,你不應該使用html框架集或iframe,這是一個不好的做法。如果您不想通過任何更改重新加載整個頁面,則應使用javascript。

+0

是的,我想我可以使用會話。但是,正如@Gar指出的那樣,系統並不知道首先調用哪個PHP文件。我不知道如何解決這個問題,因爲我正在使用HTML框架爲這兩個PHP文件同時創建兩個單獨的框架。 –

+0

正如我所說的不使用框架,他們不能滿足你想要的。使用一個單獨的html頁面,而不是包含index.php和slider.php文件的數據。 – inf3rno

2

您應該可以使用$ _SESSION。這是:

$_SESSION['totalcolumns'] = $columns --> your value here in the first script 

your value will be stored in the $columns variable in the second 
$columns = $_SESSION['totalcolumns'] 

您還可以查看require或include函數。這些功能使一個文件依賴於另一個文件,就像直接將一個文件粘貼到另一個文件上一樣。 使用這些函數傳遞變量不是一個好習慣。您應該使用會話

http://php.net/manual/en/function.require.php

順便說一句,不要使用框架集

1

可以使用$_REQUEST而不是$_GET或只是它作爲:

<?php 
if(array_key_exists('totalcolumns', $_GET)) { 
     $totalcolumns = $_GET['totalcolumns']; 
     echo "My next value should get printed"; 
     echo $totalcolumns; 
?> 

這可能幫助你

1

我想先幀,刪除第二個src

​​

然後更改index.php文件在最後加入這一段代碼

<script> 
parent.frames['f2'].location.href="slider.php?totalcolumns=3"; 
</script> 

或許如果你有totalcolumns在你的PHP

<script> 
parent.frames['f2'].location.href="slider.php?totalcolumns=<?php echo $totalcolumns;?>"; 
</script> 
相關問題