Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja fopen r+ i a
Forum PHP.pl > Forum > PHP
david8213
Napisałem skrypt który ma za zadanie dodawanie wiadomości.
Gdy używam r+ za każdym razem funkca nadpisuje mi pierwszy wpis w pliku message.txt
Chcę zeby wpisy pojawiały się od góry do dołu (czyli r+) a to nie działa.
Parametr "a" działa poprawnie z tym że nowe wpisy pojawiają się na dole strony.

Gdzie jest błąd że r+ nie działa poprawnie?
Czy nie można stosować r+ z tablicami ?


Kod
index.php
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<META HTTP-EQUIV="Content-Language" CONTENT="pl">
<body  background="bg.jpg">
<style>
a { text-decoration: none; font-family: Verdana, 'Arial CE', 'Helvetica CE', Arial, Helvetica; font-size: 10px; color: #000000 }
a:hover { text-decoration: none; font-family: Verdana, Arial CE, Helvetica CE, Arial, Helvetica; font-size: 10px; color: #003399 }
td { text-decoration: none; font-family: Verdana, 'Arial CE', 'Helvetica CE', Arial, Helvetica; font-size: 10px; color: #000000 }
</style>




<form action="back.php" method="post">
<br><br><br><br><table border=1 borderColor=#000000 cellSpacing=1 cellPadding=5 rules=1 align=center bgColor=#DCDCDC width="550"><tr><td><center><a>Dodaj wiadmo¶ć

<br><br>
<textarea name="mess" rows="4" cols="30" WRAP=physical></textarea><br>
<input SIZE="29" type="text" name="podpis" value="podpis" MAXLENGTH="10">

<input type="submit" value=" Wy¶lij " style="BACKGROUND-COLOR: #FF8040;  FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF" ><br><br></td></tr></table>
</form>


<?php


$file = file("message.txt");

foreach($file as $value) {

$exp = explode("|",$value);


echo "<center><br><table border width=550><tr><td><b><a title=".$exp[3].">&nbsp;".$exp[0]."</a></b></td>";
echo "<td><div align=right>".$exp[2]."&nbsp;";
echo "<tr><td colspan=2 ><a><div style=margin-left:5 style=margin-right:5>".$exp[1]."</a></td>";
echo "</td></tr></table>";


}

?>


Kod
back.php

<?php
$podpis = trim($_POST['podpis']);
$mess = trim($_POST['mess']);
$date = date("d,m,Y - H:i:s");
$REMOTE_ADDR = $_SERVER[REMOTE_ADDR];
$REMOTE_HOST = $_SERVER[REMOTE_HOST];

$dane = $podpis."|".$mess."|".$date."|".$REMOTE_ADDR."|".$REMOTE_HOST."\n";

    $file = "message.txt";
    $fp = fopen($file, "a");
    flock($fp, 2);
    fwrite($fp, $dane);
    flock($fp, 3);
    fclose($fp);
    echo "<center><p><h2>Dodano wpis</h2></p>";


?>


<center>

<p><p>
?>
<script LANGUAGE="JavaScript">
if(top.frames.length==0) {
document.write("<B></B>");
window.clear;
window.location.href="index.php";
}
else
{ document.write("index.php"); }
</SCRIPT>
nospor
bo r+ nadpisuje a nie dopisuje. lekka róznica

Jak chcesz cos dopisac na początek pliku to musisz zawartosc pliku pobrac do zmiennej, dopisac nowy tekst na początek tej zmiennej a nastepnie tę zmienna zapisac spowrotem do tego pliku
david8213
Dzięki. Poradziłem sobie zmieniając poniżej

Kod
<?php
$podpis = trim($_POST['podpis']);
$mess = trim($_POST['mess']);
$date = date("d,m,Y - H:i:s");
$REMOTE_ADDR = $_SERVER[REMOTE_ADDR];
$REMOTE_HOST = $_SERVER[REMOTE_HOST];

$dane = $podpis."|".$mess."|".$date."|".$REMOTE_ADDR."|".$REMOTE_HOST."\n";

    $file = "message.txt";
    $fp = fopen($file, "r+");
    $dane=$dane.fread($fp, filesize($file));
    rewind($fp);
    fputs($fp, $dane);
    fclose($fp);

?>


<center>

<p><p>
?>
<script LANGUAGE="JavaScript">
if(top.frames.length==0) {
document.write("<B></B>");
window.clear;
window.location.href="index.php";
}
else
{ document.write("index.php"); }
</SCRIPT>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.