0
    echo "Hello : ".$_SESSION['doc_username'];


    //username sent from a different page by post method

    $username = $_POST['username'];

    echo "<p><strong>Showing Health Information for : </strong>";echo $username; "</p>";


    if($_POST['submit']) 
    {

    $height = mysql_real_escape_string($_POST['height']);
    $weight = mysql_real_escape_string($_POST['weight']);


if($height && $weight)
{
    require "dbc.php";
    $query = mysql_query("UPDATE patient_info SET 
    height='$height',weight='$weight' WHERE username='$username'");
    echo "Patient Data Saved!";
}
 else 
{
    echo "All fields are required!";
}

此代码的问题不在 mysql 查询中。我已经使用 phpcodechecker 检查了它的语法错误,但没有。有更多变量要插入到数据库中,例如身高和体重。我的问题是我通过 POST 方法从不同的页面获取用户名,并且我无法以一种可以被此表单中的“提交”值使用以启用更新该特定用户名的方式保存它。因为在此页面的 $_POST 中无法引用 $username 的其他表单中的用户名,因此当我单击提交按钮时,用户名变量为空。如何通过 POST 获取从另一个页面发送到此页面的用户名,以便在 UPDATE 查询中以这种形式使用。该表单确实将用户名成功发送到此页面,这在我可以回显用户名时得到证明。但是这个页面中的表格不能使用它。请帮忙,因为我对 PHP 代码很陌生,我正在尽我所能。

4

5 回答 5

2

在初始页面上,添加一个名为“username”的隐藏表单元素,其中包含您想要在表单提交中保留的值。

<input type="hidden" name="username" id="username" value="the.user.name">
于 2013-05-14T06:17:55.323 回答
1

您可以在请求通过时将用户名存储在会话中,或者添加到请求的 getparam 或表单的隐藏元素中:

<form action="procces.php?username={real_user_name}">

或者

<form>
   <input type="hidden" name="username" id="username" value="{real_user_name}"/> 
   ...
</form>
于 2013-05-14T06:20:17.703 回答
1
 <input type="text" name="username" value="<?php echo $_POST['username']; ?>" />

第一页中的用户名被转移到另一个页面,您可以在其中编辑它因为第二页也包含一个表单,所以我们还需要添加用户名字段 int,因为它何时发布,用户名也将被发送。

这必须插入到第二种形式中以保留上一页中从上一页发送的数据,以便可以将其用于 mysql 中的查询。

于 2013-05-14T19:09:47.740 回答
0

首先替换行:

从:

if($_POST['submit']) 

到:

if (isset($_POST['submit']))

如果您使用的是组合框,请检查您是否在其标记中提供了名称参数,例如:

<select name="submit">
...
</select>

[编辑]

分析代码后发现 HTML 标记是在表单元素之后编写的。我认为这是问题所在。休息似乎还可以。

希望这能解决问题。

于 2013-05-14T06:20:27.727 回答
0

您可以在会话中使用用户名(假设您有一个,如果没有,无论如何您都应该认真对待):

填充像@tslocum 建议的表单字段还需要从某个地方获取用户名。这是一个很常见的解决方案,但是用户名是从哪里来的呢?

在提交名称和呈现当前页面之间可能需要一段时间,因此这是无状态的,但您需要在呈现和处理期间该页面内的状态(状态“我们已经有给定的用户名”),看看 $_SESSION全局变量。

我的方法:

帖子 1:

....
$_SESSION['currentUser'] = $_POST['username'];
// you need some checks over here, don't use 
// that as typed here, left out just for clearness.

... 一段时间

帖子 2:...

$username = $_SESSION['currentUser'];
// again some checks over here!

在 php 手册中阅读有关 $_SESSION 的信息。

于 2013-05-14T06:28:11.810 回答