2012-03-27 6 views
0

Im пытается создать скрипт, который будет размещать уведомление, хранящееся в текстовом файле при создании/обновлении проекта. Если проект создан, ему необходимо создать файл, и если проект обновляется, ему необходимо обновить существующий файл txt.PHP txt file edit Issue

Пока у меня есть его, чтобы создать 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); 
}; 

An Идеи?

Чарльз - richini-design.co.uk

+0

Вам нужно немного сузить проблему. Вводит ли код в правильную ветку 'case'? Если это так, возникает ли какая-либо ошибка? –

+0

Разве это не ошибка в случае «нормального» случая; ... case 'internalUpdate'; '(добавить разделители текста)? – Skrol29

+0

Не вижу проблемы там, подумал, что вся тасовка с идентификаторами «ID» и «MD5» немного странна, вы можете сначала выполнить оператор insert и получить идентификатор с помощью 'mysql_insert_id()'. Не нужно указывать имя, поскольку идентификатор уже уникален. Я надеюсь, что есть причина, почему вы храните содержимое блога в отдельном файле (почему бы и нет в базе данных?) – ashein

ответ

1

Не уверен, что я получил это право, но вы перезаписать файл из режима «ш», используемый с FOPEN функцией. Попробуйте fopen([filename], "a"), чтобы добавить данные. См. http://fr.php.net/manual/en/function.fopen.php для получения дополнительной информации.

+0

Я был абсолютным идиотом. 2 дня повторного кодирования битов и бобов, пробующих все виды различного кодирования и т. Д., Когда на самом деле id просто забыл вызвать функцию в правом бите кода :(Mega FAIL – Chalex