2012-07-13 59 views
1

我插入一個特定的字符串值與一個窗體在HTML(它實際上是PHP,我呼應HTML)到MySQL。幾天前,我插入了值,讓我們說「啊啊」。現在,我試圖插入其他東西,但它仍然帶來了舊的價值。這不是瀏覽器緩存,也不是我的代碼中的值錯誤。PHP/mysql/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); 
} 
+3

小心向我們展示相關代碼呢? – 2012-07-13 18:35:37

+1

我最好的猜測是檢查正在創建的行的ID。我們需要更多的代碼來查看select和insert語句。 – Robert 2012-07-13 18:38:36

+0

是的,如果他只是將新值插入到數據庫中,我們應該看看數據庫中的值是如何搜索的。 – 2012-07-13 18:40:31

回答

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>"; 

的問題是,有2個$用戶變量。進入表單的是最後一個顯示在html表格中的表單。

2

聽起來也許你在表單中的默認值設置爲東西這就是通過而不是新的價值。也許,請不要在窗體中設置默認值,然後調試以確定新值不會通過。

如果您發佈了更多的代碼,我們可能會幫助更多。

+0

呵呵,它現在有效!這不是問題,還有其他的問題。我在一個while循環中顯示了結果,並且使用了$ user變量兩次,一次在while循環中顯示插入的數據和一次之前的sql查詢。我沒有注意到名字是一樣的。無論如何tnx幫助 – trainoasis 2012-07-13 18:55:27

相關問題