变量要么没有传递到函数或从函数传递

时间:2015-05-16 13:48:45

标签: php function variables

代码的要点是编辑特定用户,该用户由按下了哪个编辑按钮确定。

我收到以下错误:

未定义的变量:第15行的EditUser.php中的user_id。

这不是未定义的变量问题。如果我在调用函数时删除了$ user_id,它会抱怨函数调用没有参数。

我只想要返回该功能,但它并不想被调用。

EditUser.php:

<?php
session_start();
include_once 'Functions.php';
$user = new User();
?>
<html>
    <head>
        <title></title>
    </head>
    <body>  
        <?php
            if (isset($_SESSION['EditUser']))
            {
                $result = User::Edit_User($user_id); //The line which gives me the error

                while(list($user_id, $username, $password, $emailadres, $admin) = mysql_fetch_array($result ))
                {
                    $urid = $user_id;
                    $urnm = $username;
                    $pw = $password;
                    $eml = $emailadres;
                    $an = $admin;
                    echo "It worked"; //Just aline for debugging. Will remove later
                }
            }
            else
            {
                echo "error";
            }
        ?>
        <form method="post" action="EditUserDef.php">
            user_id: </br>
            <input readonly="readonly" name="user_id" value=<?php echo $urid ?>></br>
            username: </br>
            <input type="input" name="username" value=<?php echo $urnm ?>></br>
            password: </br>
            <input type="input" name="password" value=<?php echo $pw ?>></br>
            emailadres: </br>
            <input type="input" name="emailadres" value=<?php echo $eml ?>></br>
            admin: </br>
            <input type="input" name="admin" value=<?php echo $an ?>></br>
            <input type="submit" name = "submit" value="edit data">
            <input type="button" value="back" onClick="history.go(-1);return true;"></br>
            </br>
        </form>
    </body>
</html>

包含类和函数的文件,Functions.php:

<?php
include_once 'Config.php'; //Class to connect with database, not really important for this question
class User
{
    public function Edit_User($user_id) 
    {
        $query = mysql_query("SELECT * FROM useraccounts WHERE user_id = '$user_id'");
        $rows = mysql_num_rows($query);

        if (!$rows == 0) 
        {
            $_SESSION['EditUser'] = true;
            return $query;
        }
    }
    public function Edit_DataSession() 
    {
        return (isset($_SESSION['EditUser']));
    }

并且最后一个文件来自&#34; user_id&#34;发送到Functions.php,Administration.php:

<?php
session_start();
include_once 'Functions.php';
$user= new User();

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{
    $user_id = $_POST['hidden'];
    $editing = $user->Edit_User($user_id);

    if ($editing) 
    {
        header("location:EditUser.php");
    }
    else 
    {
        echo 'User doesn't exist anymore';
    }
}
?>
<html>
    <header>
        <style>
            table, td, th
            {
            border-style: solid;
            border-width: 3px;
            border-color: black;
            }
        </style>
    </header>
    <body>
        <h1>overzicht gebruikers</h1>
        <table border = 1>
        <tr>
            <td>user_id</td>
            <td>username</td>
            <td>password</td>
            <td>emailadres</td>
            <td>admin</td>
        </tr>

        <?php
            if (isset($_SESSION['GetUser'])) //function not included in the code of the question, didn't seem necesarry
            {
                $result = user::get_user();

                while(list($user_id, $username, $password, $emailadres, $admin) = mysql_fetch_array($resultaat))
                {
                    echo "<tr><td>$user_id</td>";
                    echo "<td>$username</td>";
                    echo "<td>$password</td>";
                    echo "<td>$emailadres</td>";
                    echo "<td>$admin</td>";

                    echo "<td><form action='EditUser.php' method='post'><input type='hidden' name='hidden' value=$user_id><input type='submit' name='edit' value='edit'></form></td>";
                    echo "<td><form action='DeleteUser.php' method='post'><input type='hidden' name='hidden' value=$user_id><input type='submit' name='delete' value='delete'></form></td></tr>";
                }
            }
        ?>
    </body>
</html>

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

  

这不是未定义的变量问题。

嗯,是的。错误消息很好地告诉你错误:

  

未定义的变量:第15行的EditUser.php中的user_id

让我们看一下第15行:

$result = User::Edit_User($user_id);

您尝试使用名为$user_id的变量。在那条线上方,我不会在任何地方看到变量定义。您定义了一个名为$user的变量:

$user = new User();

但是你在哪里定义一个名为$user_id的变量?根据您的代码,并根据PHP运行时,您不会。因此错误。

您确实在完全不同的页面上定义了一个类似命名的变量,但变量不会在页面上下文中持续存在。您需要在每个要使用它的页面请求中重新定义它。

您需要先定义变量才能使用它们。也许您打算使用$user而不是$user_id的成员?也许你打算使用$user本身?代码不能知道你的意思,你必须明确定义。