Autor Zpráva
Truuhlik
Profil
Mám jednoduchý skript, který mi odeslaná data s formuláře zapisuje do jednoho souboru.
Problém je v tom, že se to zapisuje pod sebe, takže nejnovjější text je poslední a já potřebuju aby byl vždy nahoře jako první. Může mi někdo poradit jak na to? (nepoužívám databázi)


Toto je ten skript:
<?php
$adresa = $_POST['adresa'];
$titulek = $_POST['titulek'];
$datum = date(dmY);
$clanek = $_POST['clanek'];
$autor = $_POST['autor'];
$kontrola = $_POST['kontrola'];

if ($adresa!="" and $titulek!="" and $clanek!="" and $autor!="" and $kontrola=="10"){
echo "<h3>Odesláno</h3>";
if (isset ($adresa) && isset($titulek) && isset($datum) && isset($clanek) && isset($autor)){
$fp = fopen("file.html", "a");
fwrite($fp, "<a href='file.html' title='$datum'>".$titulek."</a><br>".$clanek);
fclose($fp);
}
}
else {
echo "<h3>Neodesláno</h3>";
}
?>
srigi
Profil
V tvojom pripade sa zda jedinou moznostou nacitat cely subor do premennej, premennu zretazit so vstupnym textom a vysledny string zapisat do noveho suboru.

BTW ten skript je sialene nezabezpeceny, uvazoval si co sa stane, ked do pola $_POST['clanek'] zapise navstevnik PHP kod?
Truuhlik
Profil
V tvojom pripade sa zda jedinou moznostou nacitat cely subor do premennej, premennu zretazit so vstupnym textom a vysledny string zapisat do noveho suboru.
BTW ten skript je sialene nezabezpeceny, uvazoval si co sa stane, ked do pola $_POST['clanek'] zapise navstevnik PHP kod?

Ano s tím $_POST['clanek'] tam o tom vím, to ještě musím nějak ošéfovat. Spíš jsem se tě chtěl zeptat - nenapsal bys mi jednoduchou kostru jak to udělat s tím seřazením? Já už si s tím nevím rady.
Truuhlik
Profil
Fakt byste mi někdo nemohl napsat nějaký jednoduchý kód? Já si s tím nevím rady.
tragi
Profil *
zkus pred fwrite soupnout prikaz rewind($fp);
keeehi
Profil
fopen("file.html", "r+");
99%
Truuhlik
Profil
tragi a keeehi děkuju za snahu. Takže zkusil jsem šoupnout ten příkaz rewind($fp); před to fwrite, ale pořád mi to zapisuje nejnovější pod předchozí.

A ta druhá možnost fopen("file.html", "r+"); to mi vyhovuje, ale problém je v tom, že to vymaže to předchozí a zůstane tam zase jenom to nové.

Jsem v koncích.
keeehi
Profil
tak se zkus podívat sem, jestli by ti něco nějak pomohlo.

nebo:
$filename = "file.html";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fwrite($handle, $contents."<a href='file.html' title='$datum'>".$titulek."</a><br>".$clanek);
fclose($handle);
Truuhlik
Profil
tak se zkus podívat sem, jestli by ti něco nějak pomohlo.
nebo:
12345 $filename = "file.html";$handle = fopen($filename, "r");$contents = fread($handle, filesize($filename));fwrite($handle, $contents."<a href='file.html' title='$datum'>".$titulek."</a><br>".$clanek);fclose($handle);

takže jsem to vyzkoušel - ono se tam ani nic nezapsalo - tak jsem zkusil dát r+ - pak už se to zapsalo ale nějak divně mi to vždycky jedenkrát zkopírovalo předchozí text
keeehi
Profil
Truuhlik
Tady je řešení. I když je dost nešťastné, funguje.
$filename = "file.html";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
$handle = fopen($filename, "w+");
fwrite($handle, $contents."<a href='file.html' title='$datum'>".$titulek."</a><br>".$clanek);
fclose($handle);
Truuhlik
Profil
keeehi moc díky z kód, zapisovat to zapisuje tak jak má, jenom se mi pořád nechce zapisovat nejnovější text jako první - pořád jde ten nejnovější text dolů - čili první text je nejstarší a poslední je nejnovější
keeehi
Profil
sry oprav 6. řádek na toto
fwrite($handle, "<a href='file.html' title='$datum'>".$titulek."</a><br>".$clanek.$contents);

pak už to bude fungovat ;)
Truuhlik
Profil
sry oprav 6. řádek na toto
1 fwrite($handle, "<a href='file.html' title='$datum'>".$titulek."</a><br>".$clanek.$contents);
pak už to bude fungovat ;)
děkuju, děkuju, děkuju - už to fajčí jako o život - ještě jednou díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: