-2

「スーパー」ユーザーが担当するすべてのユーザーを表示したい。次に、「スーパー」ユーザーは、ユーザーIDをクリックして、任意のユーザーにコメントを送信できます。

すべてのユーザーを表示する最初の部分は正常に機能しています。私の問題は、スーパーユーザーによるコメントの送信にあります。suidユーザーID(つまり)をデータベースに保存したい。なので、この機能を使ってみようと思い$_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

あなたはあなたのコードPOSTに私が見ていませんGET、そしてそれはあなたがメソッド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 に答える
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

コードには複数の問題があります。私は最大のものをリストしようとしますが、それでもいくつかを見逃す可能性があります。

コード
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>$_GETurl

$_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&変数が-$_POSTで使用されるように設定されるわけではありません。INSERT

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

問題3-
クエリにエラーがあります。`INSERT INTOコメント(id、name、message、receiver、sender、date、time)VALUES(''、'$ name'、'$ message'、'$id'の前に列を含める必要がありますVALUESVALUE、'$ 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 に答える
0

ただこれ

$id1=$_GET["suid"];

と置換する

$id1=$_POST["suid"];

$ _GET変数を使用する場合は、URLに含める必要があります。$ _POSTを使用する場合、変数はURLに表示されません

于 2012-12-15T17:10:43.360 に答える