-1

こんにちはすべてphpに不慣れです、私はphpでファイル処理を試します、つまり、データベースにないテキストファイルに情報を保存します。これは基本的にデータをテキストファイルに挿入し、ファイル内のデータを削除しますが、私はここでテキストファイルの最後のレコードを削除するのに苦労しているのは、私のコードです。

    <html>
<head>
<title>
Registration
</title>
<style type="text/css">
table{font-family:calibri;color:black;font-size:11pt,font-style:normal;background-color:white;border-collapse:collapse;border:2px solid navy}
</style>
<script type="text/javascript" src="frnt.js">
</script>
</head>
<body bgcolor="aqua">
<form name="myform" action="writ.php" method="post" onsubmit="return validation()">
<table border="0px"align="center" cellpadding="5" cellspacing="5">
<tr>
<th colspan="2" align="center">Registration</th>
</tr>
<tr>
<td>UserName:</td>
<td><input type="text" name="nme" maxlength='20'>
</td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="mail" maxlength='20'>
</td>
</tr>
<tr>
<td>Mobile:</td>
<td><input type="text" name="mobile" maxlength='10'>
</td>
</tr>
<tr>
<td>Education:</td>
<td><input type="text" name="edu" maxlength='10'>
</td>
</tr>
<tr>
<td>College:</td>
<td><input type="text" name="clg" maxlength='15' >
</td>

</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Submit" name="submit"><input type="reset" value="Reset">
</td>
</tr>
</table>
</form>
</body>
</html>

そして、このページはwrit.phpにリダイレクトされ、このコードは

<html>
    <body>
    <form method = "post">
        <?php

        $body = $_POST['nme'];
        $body1 = $_POST['mail']; 
        $body2 = $_POST['mobile'];
        $body3 = $_POST['edu'];
        $body4 = $_POST['clg'];
        $file_name = "test.txt";               
        $fp = fopen ($file_name, "a"); 

        fwrite ($fp,"Name:".$body."\r");
        fwrite ($fp,"Email:".$body1."\r");
        fwrite ($fp,"Mobile:".$body2."\r");
        fwrite ($fp,"Education:".$body3."\r");
        fwrite ($fp,"College:".$body4."\r\r");


            if(fwrite)  {
                echo "your data added successfully <br><br>";
                echo "<a href='back .php'>Go back to view your page</a>";
            }

        ?>
    </form>
    </body>
    </html>

そして、これはテキストファイル内のデータ全体を削除しています

<?php
$v=filesize("test.txt");
echo "<br />";

$file = fopen("test.txt", "a+");
$d=ftruncate($file,0) or die ('could not open'); 
if($d)  {
echo "deleted the whole data's successfully<br><br>";
echo"<a href='frm.php'>Add data to a file </a><br><br>";
echo"<a href='test.txt'>View the file </a><br><br>";
}
fclose($file);
?>

最後に、このコーディングに問題があります

<?php 
$file="test.txt";
$str = fopen("test.txt","r");
$s = fgets($str);

$parts = explode("\r",$s);
$content = file_get_contents($file);
$c=count($parts);
$dd=$c-8;
for($i=$c;$i>$dd;$i--)  {

$content = str_replace($parts[$i],'', $content);
/*$content = str_replace($parts[7],'', $content);
$content = str_replace($parts[8],'', $content);
$content = str_replace($parts[9],'', $content);
$content = str_replace($parts[10],'', $content);
*/
$fh = fopen($file, 'w');
$d=fwrite($fh, $content);
}
//unset($parts[$i],'');
if($d)  {
echo"Last data deleted successfully <br><br>";
}

?>

上記のコーディングでは、テキストファイルのストアに同じ電子メールIDを複数回入力すると問題が発生しますが、ファイルの最後のレコードを削除しようとすると、同じ名前の電子メールも削除されます!!!! そしてこれを解決する方法。助けてください!とても有難い:)

4

1 に答える 1

1

これに変更fopen("test.txt", "a")するfopen("test.text", "w")と、txt内にあるすべてのものが削除されます。「w」は次のことを意味します。書き込み専用です。ファイルポインタをファイルの先頭に置き、ファイルをゼロの長さに切り捨てます。ファイルが存在しない場合は、作成してみてください。( PHP.net fopenによると)

于 2012-12-07T13:51:38.100 に答える