2012-03-27 48 views
0

我試圖創建一個腳本,該腳本會在創建/更新項目時發佈存儲在文本文件中的通知。 如果項目已創建,則需要創建該文件,如果項目正在更新,則需要爲其更新現有的txt文件。PHP txt文件編輯問題

到目前爲止,我已經創建了txt文件並對其進行了更新。但是,它只更新一次,如果我嘗試再次更新文件它只是不這樣做。

下面的代碼:

function addPost($userID, $content, $date, $featured, $projectID){ 
    if($projectID != 0){ 
     $addClass = 'normal'; 
     $sql1 = "SELECT * FROM `blog` WHERE `projectID` = ".$projectID; 
     $query1 = mysql_query($sql1); 
     $num_rows1 = mysql_num_rows($query1); 
     if($num_rows1 != 0){ 
      $addClass = 'internalUpdate'; 
     } 
    }else{ 
     $addClass = 'normal'; 
    } 

    switch($addClass){ 
    case normal; 
     //SQL to get next ID 
     $nameQuery = mysql_query("SELECT MAX(ID) FROM `blog`"); 
     $nameRow = mysql_fetch_array($nameQuery); 
     $nextID = $nameRow['MAX(ID)'] + 1; 
     //Set Blogname 
     $blogName = md5($nextID).'.txt'; 
     $blogTargetFile = './file/blog/'.$blogName; 
     $fileHandle = fopen($blogTargetFile, 'w'); 
     fwrite($fileHandle, $content); 
     fclose($fileHandle); 
     $sql2 = "INSERT INTO `blog` (`userID`, `name`, `created`, `featured`, `projectID`) VALUES ('".$userID."', '".$blogName."', '".$date."', '".$featured."', '".$projectID."')"; 
    break; 
    case internalUpdate; 
     $sql1 = "SELECT * FROM `blog` WHERE `projectID` = ".$projectID; 
     $query1 = mysql_query($sql1); 
     $row1 = mysql_fetch_array($query1); 
     $blogName = $row1['name']; 
     $blogTargetFile = './file/blog/'.$blogName; 
     $fileHandle = fopen($blogTargetFile, 'w'); 
     fwrite($fileHandle, $content); 
     fclose($fileHandle); 
     $sql2 = "UPDATE `blog` SET `created` = '".$date."' WHERE `ID` = ".$row1['ID']; 
    break; 
    } 
    mysql_query($sql2); 
}; 

的想法?

查爾斯 - richini-design.co.uk

+0

您必須稍微縮小問題範圍。代碼是否輸入正確的「case」分支?如果是這樣,是否有任何錯誤提出? – 2012-03-27 07:14:38

+0

這是不是'案件'正常'的錯誤; ... case'internalUpdate';'(添加文本分隔符)? – Skrol29 2012-03-27 07:24:56

+0

在那裏看不到問題,認爲'ID'和'MD5'整個洗牌有點奇怪,你可以先執行一條插入語句並用'mysql_insert_id()'得到id。由於標識符已經是唯一的,因此不需要散列該名稱。我希望有一個原因,爲什麼你將博客內容存儲在一個單獨的文件(爲什麼不在數據庫中?) – ashein 2012-03-27 07:25:18

回答

1

不知道我這樣做是正確的,但你改寫因爲與fopen函數使用的「W」模式下的文件。 嘗試fopen([filename], "a")追加數據。 查看http://fr.php.net/manual/en/function.fopen.php瞭解更多信息。

+0

我一直是一個絕對白癡。其中之一2天的重新編碼位和bobs嘗試各種不同的編碼等等,當真正的id只是忘記調用右邊的代碼中的函數:(Mega FAIL – Chalex 2012-03-27 07:31:21