-2

我想显示“超级”用户负责的所有用户。然后“超级”用户可以通过点击他们的用户 ID 向任何用户发送评论。

显示所有用户的第一部分工作正常!我的问题是超级用户发送评论。我想将用户 ID(即suid)存储在数据库中。所以我想使用该$_Get功能。但是当我尝试它时,数据库中没有任何存储。我想我犯了一个错误。那么任何人都可以帮助我吗?

这是将所有用户显示给超级用户的代码:

    <?php

session_start();?>
<?php
require("noCache.php");
$uid=$_SESSION['uid'];

?>
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Send a comment</title>
<meta charset="utf-8">
<link rel="stylesheet" href="css/reset.css" type="text/css" media="all">
<link rel="stylesheet" href="css/layout.css" type="text/css" media="all">
<link rel="stylesheet" href="css/style.css" type="text/css" media="all">
<script type="text/javascript" src="js/jquery-1.4.2.js" ></script>
<script type="text/javascript" src="js/cufon-yui.js"></script>
<script type="text/javascript" src="js/cufon-replace.js"></script>
<script type="text/javascript" src="js/Myriad_Pro_400.font.js"></script>
<script type="text/javascript" src="js/Myriad_Pro_700.font.js"></script>
<script type="text/javascript" src="js/Myriad_Pro_600.font.js"></script>
</head>


<body>
<div class="main">

    <header>
        <div class="wrapper">
            <h1><a href="index.php" id="logo"> Biz</a></h1>

        </div>
        <nav>
            <ul id="menu">
                <li class="alpha"><a href="index.php"><span><span>Home</span></span></a></li>
                <li><a href="About.html"><span><span>About</span></span> </a></li>
                <li><a href="Projects.html"><span><span>Projects</span></span></a></li>
                <li><a href="Contacts.php"><span><span>Contacts</span></span></a></li>
                <li class="omega"><a href="Services.html"><span><span>Services</span></span></a></li>
            </ul>
        </nav>
        </br></br>

</header>


<head>
<!-- CSS Stylesheet -->
<style type="text/css">
html{

}
body{
    text-align:center;

}

</style>
</head>
<?php
$dbh=mysql_connect("localhost", "root", "hahaha1") or die (mysql_error());
mysql_select_db ("senior");
$result = mysql_query("SELECT * FROM sensorusers where uid=$uid");
echo "<html><body>";
echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>";
while ($row = mysql_fetch_array($result))
{   echo "<form method='post' action='sendcomment.php'>";
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['dusername'] . "</td>";
    echo "<td>" . $row['password'] . "</td>";
    echo "<td>" . $row['date'] . "</td>";
    echo "<td>" . $row['phone'] . "</td></tr></form>";
    $_GET['suid'] = $row['suid'];
}

echo "</table></body></html>";
mysql_close($dbh);
?>
<html>
<body>
<!-- CSS Stylesheet -->
<style type="text/css">

body {

    font-family:"Andalus"
    font: 16px ;
    color:black;
    padding: 30px 5px;
    text-align: center;
}

</style></body></html> 

这是我想问的部分:

echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>";
while ($row = mysql_fetch_array($result))
{   echo "<form method='post' action='sendcomment.php'>";
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['dusername'] . "</td>";
    echo "<td>" . $row['password'] . "</td>";
    echo "<td>" . $row['date'] . "</td>";
    echo "<td>" . $row['phone'] . "</td></tr></form>";
    $_GET['suid'] = $row['suid'];
}

解决方案:

谢谢大家的帮助。我修复了代码。我用方法post来保存suid第一次的值。然后我将其打印为隐藏输入。最后,我将隐藏输入的值保存在 sql 中,它可以工作!

4

4 回答 4

1

您的代码中有多个问题。我会尝试列出最大的,但可能仍然会错过一些。

代码 1 -
问题 1-
您有多个<html></html><head></head><body></body>块。

<html>
...
<head>
...
</head>
<body>
...
<head>
...
</head>
...
echo "<html><body>";
...
echo "...</body></html>";
...
<html>
<body>
...
</body>
</html>

问题 2-
<form>在一个<td>块附近,这是无效的,所以它不会POST正确。它要么需要在桌子周围<form><table></table></form>,要么在单元格内<td><form></form></td>

echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>";
while ($row = mysql_fetch_array($result))
{   echo "<form method='post' action='sendcomment.php'>";
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['dusername'] . "</td>";
    echo "<td>" . $row['password'] . "</td>";
    echo "<td>" . $row['date'] . "</td>";
    echo "<td>" . $row['phone'] . "</td></tr></form>";
    $_GET['suid'] = $row['suid'];
}

echo "</table></body></html>";

问题 3-
您在滥用$_GET,它在您的<form></form>标签之外。$_GET用于从url.

$_GET['suid'] = $row['suid'];

代码 2-
问题 1-
您正在设置$id1=$_GET["suid"];,但在代码 #1 的表单中,您正在使用method="post".

$id1=$_GET["suid"];

问题 2-
当您从代码 #1 发布到代码 #2 ( <form><input type='submit' name='suid' value='".$row['suid']."' /></form>) 时,您只发送name='suid',因此您的所有$_GET& $_POSTvars 都不会设置为用于INSERT-

$id1=$_GET["suid"];
...
$name=$_POST['sent_by'];
$id=$_POST['hidden_id'];
$id2=$_POST['hidden_id2'];
$message=$_POST['message'];
$submit= $_POST['submit'];
...

问题 3-
您的查询中有错误。应该是VALUES,不是VALUE,你应该在 `INSERT INTO comments (id,name,message,receiver,sender,date,time) VALUES ('','$name','$message','$id' ,'$id1','$date','$time')

$place="INSERT INTO comments VALUE('','$name','$message','$id','$id1','$date','$time')";
$run = mysql_query("$place");

问题 4-
value=在表单中的所有内容都缺少''值周围的引号。

<form action="sendcomment.php" method="post">
    <input type ='hidden' name='hidden_id' value = <?php print $uid; ?> >
    <input type ='hidden' name='hidden_id2' value = <?php print $id1; ?> >
    Name : <input type ='name' name='sent_by'  value = <?php print $username; ?>></br> 
     Message: <textarea name='message'></textarea></br> 
     <input type='submit' value='submit' name="submit" /></br>
</form>

我知道你已经接受了一个答案,但是你还有很多代码问题需要解决。这些中的每一个都会导致您的表单出现问题并插入数据库。另外,它们会给您带来更多问题。

于 2012-12-15T17:56:21.613 回答
1

如何使用$_GET
将数据放在 URL 中,如下所示:

sendcomment.php?suid=blahblahblah

然后你可以使用$_GET,像这样:

$suid = $_GET['suid']

目前您的代码用于POST发送suid
或更改您的表单方法。


echo "<form method='post' action='sendcomment.php?suid=".$row['suid']."'>";
于 2012-12-15T17:04:46.353 回答
1

你有POSTGET在你的代码中没有看到,如果你使用 GET 或 POST 方法,它取决于你的 html 输入(你没有发布它们)。如果您的方法是 GET,那么您使用 GET

但尝试使用这个

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

代替

   if($submit){

编辑 。

你正在使用,method='post' 那么你必须POST不使用GET

EDIT2:您的 sql 有错误,您使用过VALUE,应该是VALUES

而不是这个

 $place="INSERT INTO comments VALUE

将其替换为

 $place="INSERT INTO comments (columns here ,..., ,..) VALUES
于 2012-12-15T16:58:19.307 回答
0

就这么简单

$id1=$_GET["suid"];

用。。。来代替

$id1=$_POST["suid"];

使用 $_GET 变量时应该在 url 中。使用 $_POST 变量时未在 url 中显示

于 2012-12-15T17:10:43.360 回答