2011-02-12 17 views
0

設爲我主要有:PHP/MySQL的查詢,如果「動作」形式

<form action="index.php" method="post"> 
    <input name="text" type="text" value="Insert text here" size="20"/> 
    <input name="submit" type="submit" value="Submit" /> 
</form> 

我的PHP代碼,然後如果檢查提交按:

if(isset($_POST['submit'])) { 
    $newDbValue = $_POST['text']; 
    $sql = (" 
     UPDATE `pseudo_tableName` 
     SET TEXT = '".$newDbValue."' 
     WHERE name = 'pseudo_fieldName' LIMIT 1 
    "); 
    //SQL-query run by php function in separate class. 
} 

而且按照我的理解,如果表單數據被提交,它會將用戶發送回index.php

但我的是無法用新值更新並將我發回index.php,好像沒有什麼不對! ( - 點擊地址線和回車不是F5)

如果我在離開的形式或action="<?php $PHP_SELF; ?>"action=""當我重新加載頁面它更新。

我想這是什麼: 我點擊提交,並更新數據庫,送我到index.php。

這是如何實現的?

+0

您的代碼看起來正確;我想知道你是否被緩存咬了。嘗試包括`echo date(「H:i:s」,now())。'

'.print_r($POST,true).'
';`以確保您所看到的頁面實際上是服務器上的最新版本,包括表單數據。順便說一下,`action =「<?php $ PHP_SELF;?>」`和`action =「」`會產生相同的輸出,你可能意指`<?php echo $ _SERVER ['PHP_SELF']; ?> – MightyE 2011-02-12 16:27:58

+0

包含此代碼的腳本的名稱是什麼? – 2011-02-12 16:42:39

回答

3

在你的表單中刪除action=""(讓你重新加載頁面,並使用相同的文件,你有你if中),並改變你的if這樣:

if(isset($_POST['submit'])) { 
    $newDbValue = $_POST['text']; 
    $sql = (" 
      UPDATE `pseudo_tableName` 
      SET TEXT = '".$newDbValue."' 
      WHERE name = 'pseudo_fieldName' LIMIT 1 
    "); 
    header("Location: index.php"); 
    exit; 
} 
+0

我收到一個錯誤:警告:無法修改頭信息 - 頭文件已經由/index.php上的(輸出在/index.php:14開始)在117行上發送...第14行是我的<?php `標籤開始。第117行是我的`header`代碼剛添加的地方。 – KristianB 2011-02-12 16:28:56

+0

@Kristian所以,把這個表單處理程序的BEFORE頭添加代碼。 – 2011-02-12 16:41:51

0

你有沒有嘗試設置:

<?php 
    if (isset($_POST['text']) AND !empty($_POST['text'])) { 
     // ... 
    } 
?> 

而不是其他輸入?

action ='index.php'會將您發回index.php,因此請確保您的PHP高於表單(以及您的HTML,就此而言)。我也覺得你已經設置了你的mysql_connect和你的mysql_query函數。

你在php.ini中有error_reporting嗎?當var_dump()變量時,MySQL查詢結果集會說什麼?

<?php 
    $sql = mysql_query($newDbValue)); 
    var_dump($sql); 
?> 

這真的可以幫助你。

「無法發送標題信息 - 標題已發送」是因爲在重定向()函數之前已將字符發送到瀏覽器 - 如果要使用該功能,則無法將任何內容發送到瀏覽器(甚至是空格!) ,因此請確保文檔中的第一件事是您的?>標記,而您的文件編碼是UTF-8,而不是UTF-16 BOM或類似的東西。

1

全部<form>元素需要action屬性。你所描述的可能意味着你的PHP腳本沒有檢測到表單數據,因此沒有對你的MySQL數據庫進行必要的修改。這背後的原因可能取決於您使用的瀏覽器;據我的理解,如果你按下回車鍵(鍵盤),提交按鈕value不包含在表格中(據說這允許多個提交按鈕具有不同的值並執行正確的功能)。

如果我是你,我會檢查表單中輸入的實際文本,而不是按鈕。

<?php 
// check 'text' exists and make sure it isn't blank. 
if(isset($_POST['text']) && $_POST['text']!='') { 
    // do MySQL updating here. 
    header("Location: index.php"); // send back to index.php after updating. 
} 
?> 

因爲重定向最有效的方法是使用header();你需要寫你的PHP形式檢查腳本之前的HTML表單(因爲頭不能中途經過實際發送文檔),所以可能在發送HTML之前在頁面的頂部,另外,您可以根據處理後的數據控制發送的HTML。