我正在尝试从.txt文件中删除div框 但它会删除所有文件..
addtodos.php
function getTodos($userID) {
if (!file_exists("./data/todos/$userID.txt")) {
file_put_contents("./data/todos/$userID.txt", "", FILE_APPEND);
}
$wholeFile = file_get_contents("./data/todos/$userID.txt");
$allLines = explode(PHP_EOL, $wholeFile);
for($i = 0; $i < count($allLines) - 1; $i++) {
$contactValues = explode("|", $allLines[$i]);
$todos = new stdClass;
$todos->todosID = trim($contactValues[0]);
$todos->currentDate = trim($contactValues[1]);
$todos->text = trim($contactValues[2]);
$allTodos[] = $todos;
}
if(isset($allTodos)) {
return $allTodos;
}
}
function deletTodo ($userID, $ID) {
$todos = getTodos($userID);
file_put_contents("data/todos/$userID.txt" , "" );
$ChangeIDs = 0;
for ($i = 0; $i < count($todos); $i++) {
if($todos[$i]->contactID == $ID) {
$ChangeIDs = 1;
}
else{
$todosID = $todos[$i]->todosID - $ChangeIDs;
$todosDate = $todos[$i]->currentDate;
$todosText = $todos[$i]->text;
$newContactDetails = $todosID ." | ". $todosDate ." | ". $todosText;
file_put_contents("data/todos/$userID.txt" , $newContactDetails.PHP_EOL , FILE_APPEND );
}
}
}
deletTodos.php
<?php
session_start();
include "Model/addTodos.php";
$userID = $_SESSION["userID"];
$todosID=$_POST["todosID"];
deletTodo ($userID, $todosID);
header("location: todos.php");
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>
todos.php
<?php
session_start();
unset($_SESSION["rand"]);
unset($_SESSION["count"]);
include "Model/user.php";
include "Model/addTodos.php";
if(isset($_SESSION["userID"]) == false) {
header("Location: login.php");
}
$userID = $_SESSION["userID"];
$allUsers = getUsers();
$userName = $allUsers[$userID-1]->username;
$userPoints = $allUsers[$userID-1]->points;
$todos = getTodos($userID);
$NextTodosId = getNextTodosId($userID);
date_default_timezone_set("asia/jerusalem");
$date = date("F j, Y, g:i a");
if(isset($_POST["todos"])) {
// Validation......
$text = $_POST["todos"];
$contact2Save = "$NextTodosId | $date | $text" . PHP_EOL;
file_put_contents("Data/todos/$userID.txt", $contact2Save, FILE_APPEND);
header("Location: todos.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css.css" />
</head>
<body>
<div class="header">
<div class="leftHeader">
<a href="index.php">Home</a> |
<a href="chat.php">Chat</a> |
<a href="numGuess.php">Guessing Game</a> |
<a href="calc.php">Calculator</a> |
<a href="todos.php">Todos</a>
</div>
<div class="rightHeader">
<h3>
Hello <?php echo"<div class=\"userName\">$userName ($userPoints points)</div>"; ?>
<a href="logout.php">Logout</a>
</h3>
</div>
</div>
<div class="content">
<div class="todosbox2">
<form method="POST" action="todos.php">
<input type="text" name="todos" class="todos" placeholder="Enter new mission">
<input type="submit" value="Add" class="numGuessSubmit" name="submitCalculate">
</form>
</div>
<div class="todosbox">
<?php
for($i = 0; $i < count($todos); $i++) {
$todosID = $todos[$i]->todosID;
$todosDate = $todos[$i]->currentDate;
$todosText = $todos[$i]->text;
echo "<div class=\"todo1\">
<$todosDate><br/>
<h3><b>$todosText</b></h3><br/>
<a href=\"doneTodos.php\">Done</a> |
<a href=\"deletTodos.php?todosID=$todosID\">Delete</a>
</div>";
}
?>
</div>
</div>
</body>
</html>
我的文字文件:
1 | 2014年7月13日,下午7:26 | asdsd
2 | 2014年7月13日,下午7:39 | asdasd
3 | 2014年7月13日,下午7:40 | ASDA
答案 0 :(得分:0)
file_put_contents("data/todos/$userID.txt" , "" );
你的函数deletTodo中apptodos.php中的这一行负责你的空文件。评论或删除该行。
如果你想删除一行,你必须得到你的txt文件,如&#34; function getTodos($ userID)&#34;并遍历每一行。在迭代时,您可以检查&#34; $ todosID&#34;。如果您发现带有ID的行只是跳到下一行,那么您就不会读取并保存它。在文件末尾使用file_put_content并将其全部写回txt文件。
也许您有可能为此选择数据库。使用数据库然后使用文件系统要容易得多。
未经测试的例子:
function deletTodo ($userID, $todosID) {
$wholeFile = file_get_contents("./data/todos/$userID.txt");
$allLines = explode(PHP_EOL, $wholeFile);
$allTodos = array();
for($i = 0; $i < count($allLines) - 1; $i++) {
$contactValues = explode("|", $allLines[$i]);
$todos = new stdClass;
if (trim($contactValues[0]) == $todosID)
continue;
$todos->todosID = trim($contactValues[0]);
$todos->currentDate = trim($contactValues[1]);
$todos->text = trim($contactValues[2]);
$allTodos[] = $todos;
}
file_put_contents("data/todos/$userID.txt" , print_r($allTodos, true));
}