2012-03-27 3 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' 브랜치를 입력합니까? 오류가 발생하면 오류가 발생 했습니까? –

+0

'case 'normal'에 대한 실수가 아닌가? ... case 'internalUpdate';'(텍스트 구분 기호 추가)? – Skrol29

+0

거기서 문제가 보이지 않는다면,'ID'와'MD5'로 전체 셔플이 약간 이상하다고 생각하면 먼저 insert 문을 실행하고 mysql_insert_id()를 사용하여 ID를 얻을 수 있습니다. 식별자가 이미 고유하므로 이름을 해시 할 필요가 없습니다. 왜 블로그 내용을 별도의 파일에 저장하는지 이유가 있기를 바랍니다 (데이터베이스에없는 이유는 무엇입니까?) – ashein

답변

1

내가 바로 그것을 가지고,하지만 당신 때문에하면 fopen 함수에서 사용되는 "W"모드의 파일을 덮어 쓰기있어 확실하지. fopen([filename], "a")을 추가하여 데이터를 추가하십시오. 자세한 내용은 http://fr.php.net/manual/en/function.fopen.php을 참조하십시오.

+0

나는 그 중 하나가 바보였습니다. 다시 코딩하는 2 일간의 코드와 바브 (bobs)는 모든 종류의 코드 작성을 시도합니다. 실제로 id는 코드의 오른쪽 비트에서 함수를 호출하는 것을 잊어 버렸습니다. (Mega FAIL – Chalex