2010-07-30 64 views
0

基本上它是一个网页,其中有人按下按钮来增加$选择变量。全局和静态似乎不起作用。代码如下所示:我想增加一个来自php块外部的值

<?php 

    if(isset($_POST['next'])) 
    { 
     displaynext(); 
    } 
    else 
    { 

     global $image_folder = "/images/"; 

     echo "global declared"; 

     global $selection; 
     $selection = 1; 
    } 

    function displaynext() 
    { 
     $selection++; 

     if (file_exists($image_folder."/".$selection.".png")) { 

     echo "<img src=\"$image_folder/".$selection.".png\">"; 

    } 
    else { 

     echo "No next image was found for $selection in ".$image_folder."/".$selection.".png"; 

    } 

    ?> 


    <form action="<?=$_SERVER['PHP_SELF'];?>" method="post"> 
    <input type="submit" name="next" value="Next"> 
    </form> 

回答

3

一旦PHP运行并输出发送到客户端,该代码不会,除非该页面是从服务器再次请求运行。您可以创建一个session variable并使用它在页面请求中存储变量。您需要再次访问该页面或执行AJAX请求再次调用您的PHP代码。

+0

跟着你的答案教程得到它做 - 谢谢! – tylercomp 2010-07-30 19:09:28

0

只需使用另一个表单元素。

<input type=hidden name=selection value=1> 

显示图像标记之前请在$_POST['selection']一个全面的检查一样is_numeric。如果设置了$_POST['selection'],则为上面的输入标签递增。

完整的示例:

<?php 
$selection = 0; 
$image_folder = "images/"; 
if (isset($_POST['selection'])) { 
    $userSelection = $_POST['selection']; 
    if (is_numeric($userSelection) && file_exists($image_folder . $userSelection)) $selection = $userSelection; 
} 

echo "<img src=\"images/" . $selection . ".png\">"; 

echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=post>"; 
echo "<input type=hidden name=selection value=\"" . ($selection + 1) . "\">"; 
echo "<input type=submit name=subnext value=\"Next\">"; 
0

取而代之的是使用Global,为什么不使用$_SESSION var?

0

地说:

global $selection 

你的函数里面,所以:

global $selection; 
$selection++;