1

特定の文字列値を html のフォームに挿入しています (実際には php です。html をエコーし​​ています)。数日前、「ああ」と言ってみましょう。今、何か他のものを挿入しようとしていますが、それでも古い値が表示されます。ブラウザのキャッシュではなく、コードの値が間違っているわけでもありません。

フォームは次のようになります。

# form for adding a notice
echo "<form name='formAdd' action='controller.php' method='post'>";
echo "<input type='text' name='data' size='50'/>";
echo "<input type='hidden' name='user' value='$user' />";
echo "<input type='submit' name='submit' value='Add notice'/>";
echo "</form>";

私は3つのphpファイルを持っています。functions.php、controller.php、およびコンテンツを表示し、上記のフォームを作成するメイン ファイル。controller.php に渡す $user は、挿入する必要がある正しい値です (印刷して問題ありません)。

controller.php で、ユーザーを取得します

if($_POST["user"]!=NULL){
# HERE he actually comes in, but gets another value from before. 
    $user = $_POST["user"];
}

挿入関数を呼び出した後、更新された値を表示する必要があるメイン ファイルにリダイレクトしますが、代わりに間違った値が表示されます。

何か案は?

追加情報:

これにより、メイン スクリプトで正しいユーザーが取得されます。

# get username
$sql = "select username from user_auth where id=" . $_SESSION["sess_user_id"];
$result = mysql_query($sql) or die (mysql_error());
$name = mysql_fetch_array($result);
$user = $name['username'];
echo $user;

functions.php は次のようになります。

#cacti DB specifications
$database = "cacti";
$hostname = "localhost";
$username = "xxxxxx";
$password = "xxxxxx";
$port = "xxxx";

mysql_connect($hostname,$username,$password);
mysql_select_db($database);

function addNotice($data,$user,$date){
    $sql = "INSERT INTO lalalal (data,user,date) VALUES ('$data','$user','$date')";
    $result = mysql_query($sql) or die (mysql_error());
}

function deleteNotice($id){
    $sql = "DELETE FROM lalalala WHERE id='$id'";
    $result = mysql_query($sql) or die (mysql_error());
}

controller.php は次のようになります。

    $user = NULL;
if($_POST["user"]!=NULL){
    $user = $_POST["user"];
}

ini_set("display_errors", 1);

include_once("/var/www/html/cacti/plugins/lalala/functions.php");

$id = NULL;
$data = NULL;
$date = date('d.m.Y');

if($_POST["data"]!=NULL && $_POST["id"]==NULL){
    $data = $_POST["data"]; 
    addNotice($data,$user,$date);
}
4

2 に答える 2

2

おそらく、デフォルト値をフォーム内の何かに設定しているように聞こえますが、それが新しい値の代わりに取得されています。

echo "<input type='hidden' name='user' value='$user' />";

おそらく、フォームにデフォルト値を設定せずにデバッグして、新しい値が反映されない理由を確認してください。

より多くのコードを投稿していただければ、おそらくより多くのことを支援できるでしょう。

于 2012-07-13T18:51:03.977 に答える
0

解決済み:

# get username
$sql = "select username from user_auth where id=" . $_SESSION["sess_user_id"];
$result = mysql_query($sql) or die (mysql_error());
$name = mysql_fetch_array($result);
$user = $name['username'];
echo $user;

# get data
$sql = "SELECT * FROM lalala";
$result = mysql_query($sql) or die (mysql_error());

echo "<table CELLPADDING=2 border=1 align=center>";
echo "<tr>";
echo "<th>User</th>";
echo "<th>Notice</th>";
echo "<th>Date</th>";
echo "</tr>";

while($row = mysql_fetch_array($result)){
    $id = $row['id'];
    $user = $row['user'];
    $data = $row['data'];
    $date = $row['date'];

    echo "<tr>";
    echo "<td>".$user."</td>";
    echo "<td>".$data."</td>";
    echo "<td>".$date."</td>";
    echo "<td><form name='formDelete' action='controller.php' method='post'>";
    echo "<input type='hidden' name='id' value='$id' />";
    echo "<input type='submit' name='submit' value='Delete'/>";
    echo "</form></td>";
    echo "</tr>";
}

echo "</table><br>";

# form for adding a notice
echo "<form name='formAdd' action='controller.php' method='post'>";
echo "<input type='text' name='data' size='50'/>";
echo "<input type='hidden' name='user' value='$user' />";
echo "<input type='submit' name='submit' value='Add notice'/>";
echo "</form>";

問題は、$user 変数が 2 つあることでした。そして、フォームに入ったものは、html テーブルに表示される最後のものでした。

于 2012-07-14T15:39:52.437 に答える