2015-02-17 26 views
-2

我正在处理三个PHP文件。两个用作网页,另一个用于外部服务器端脚本。服务器端脚本包含在两个网页文件中,我想要做的是在第一页上有一些按钮,并根据所点击的是哪一个按钮,用数据填充第二页然后重定向到它。为什么PHP varible仍未定义?

使用下面的代码,想法是拿起按钮单击,找出哪个按钮被点击,然后调用该函数来运行正确的查询并设置所需的变量。我不明白为什么变量没有被设置。

感谢任何人看着这个!

第一页的按钮(的index.php):

<input type="submit" id='details' name='details' value='Submit'/> 

二页面,当页面加载变量未定义:

<h4><?php echo $selected_button; ?></h4> 

外部脚本:

function detailBuilder(){ 

    $selected_button = "Option One"; 
    //header('Location: details.php'); if this is here, the page still redirects but the variable doe not get set 
    //More will happen here once it works 

} 

if(isset($_POST['details'])){ 

    detailBuilder(); 
    header('Location: details.php'); 

} 
+2

这是你接下来阅读什么:http://php.net/manual/en/tutorial.forms。 php - 教程中的第一个链接... – 2015-02-17 22:03:12

+1

你知道当一个页面发生变化(标题位置)时,所有脚本都会终止,并开始一个新的过程,对吗?您需要将其作为get var,cookie或其他临时存储来传递。 location:details.php?selected_button = option-one ...或者其他一些 – 2015-02-17 22:03:16

+2

这段代码没有意义,所以它不清楚你打算做什么。 – developerwjk 2015-02-17 22:03:18

回答

1

由于几个以前有人指出,你重定向到另一个文件。此时,所有本地定义的变量都消失了 - 您不再有权访问它们。

调查PHP会话in PHP's documentation。会话将允许您将这些变量从请求传输到请求。但是,如果您正在运行某种形式的Web服务器,会话将仅适用。

更新:另外需要注意的是,正如其他人(再一次)指出的那样,$ selected_button =“Option One”仅适用于detailBuilder函数的“范围”内。所以调用detailBuilder()在函数内创建一个名为$ selected_button的变量,然后立即丢弃它。

UPDATE 2.0:很抱歉有这么多的更新。下面是设置一个会话的例子:第一微小

第一件事更新的代码:

更新3.0。确保你开始会话。

session_start(); 

你将不得不在任何PHP脚本的开始呼吁session_start()!这意味着每次执行的第一个文件的顶部应该有session_start()。

外部脚本:

$_SESSION["selected_option"] = "Option One"; 

脚本,它最初是不确定的:

$selected_details = $_SESSION["selected_option"]; 
?> 
<h4><?=$selected_details?></h4> 
+0

你可能想更新以包含'session_start()' - 这可能确实是他的第一个牛仔竞技场。 – 2015-02-17 22:31:30

+0

我想知道我应该走多远,但我至少可以包括那个。好主意,谢谢。 – 2015-02-18 16:08:15