Gå til innhold

Legge inn i tekstdokument øverst


Anbefalte innlegg

Har et lite script for å legge inn nyheter på en hjemmeside. Vil ha de nyeste øverst, men de kommer nederst slik scriptet er nå. Noen som kan hjelpe meg til å få det til.

 

<?
if (empty($login))
{
exit();
}

if(strcmp($login,"xxxxxxx")==0 && strcmp($passwd,"xxxxxxx")==0)
{
?>
<? $today = date("d.m.y");?>
<?
$fp =fopen ("sider/news.txt", "aw");
fputs ($fp,"$today - $text <br><br>");
fclose ($fp);
print ("<p>Du har skrevet $text på news</p>");
?>
<a href="index.php?id=index">Tilbake</a>
<?
}
else
{
echo "Feil brukernavn og passord";
}
?>

 

Ferdig kode ble slik (for de som ikke orker å scrolle ned):

 

<?
if (empty($login))
{
exit();
}

if(strcmp($login,"xxxxxxx")==0 && strcmp($passwd,"xxxxxxx")==0)
{

$today = date("d.m.y");

$fila = file("sider/news.txt");
foreach($fila as $rad) {
$minne .= $rad;
};

$fp = fopen ("sider/news.txt", "w+");
fputs ($fp, $today . " - " . $text . "<br><br>" . $minne);
fclose ($fp);
print ("<p>Du har skrevet $text på news</p>");
?>
<a href="index.php?id=index">Tilbake</a>
<?
}
else
{
echo "Feil brukernavn og passord";
}
?>

Endret av oya
Lenke til kommentar
Videoannonse
Annonse

r+ vil ikke fungere, noe som står beskrevet i manualen:

Open for reading and writing; place the file pointer at the beginning of the file.

mao vil fila overskrives fra starten av fila.

 

for å få inn innhold øverst i en fil, må du åpne fila, lese den inn i minnet (f.eks vha file() ) og deretter skrive nytt innhold til fila fra toppen og legge inn det gamle innholdet etter dette.

Lenke til kommentar

<?
if (empty($login))
{
exit();
}

if(strcmp($login,"xxxxxxx")==0 && strcmp($passwd,"xxxxxxx")==0)
{

$today = date("d.m.y");

$minne = file("sider/news.txt");
$minne = implode("", $minne);

$fp = fopen ("sider/news.txt", "w+");
fputs ($fp, $today . " - " . $text . "<br><br>" . $minne);
fclose ($fp);
print ("<p>Du har skrevet $text på news</p>");
?>
<a href="index.php?id=index">Tilbake</a>
<?
}
else
{
echo "Feil brukernavn og passord";
}
?>

Burde gjøre susen? :p Om du har eldre PHP versjon enn 4.3.0 kan det hende den ikke funker, pga at implode'en slik den brukes her antageligvis ikke fungerer i eldre versjoner ;)

 

edit: Seriøs skriveleif i koden :p Edit2: Jævla +tegn i w'en som kom for tidlig ;)

Endret av eXZire
Lenke til kommentar

EDIT: Denne vil nå funke, men anbefaler heller at du bruker den lenger opp :p

<?
if (empty($login))
{
exit();
}

if(strcmp($login,"xxxxxxx")==0 && strcmp($passwd,"xxxxxxx")==0)
{

$today = date("d.m.y");

$fila = file("sider/news.txt");
foreach($fila as $rad) {
$minne .= $rad;
};

$fp = fopen ("sider/news.txt", "w+");
fputs ($fp, $today . " - " . $text . "<br><br>" . $minne);
fclose ($fp);
print ("<p>Du har skrevet $text på news</p>");
?>
<a href="index.php?id=index">Tilbake</a>
<?
}
else
{
echo "Feil brukernavn og passord";
}
?>

Endret av eXZire
Lenke til kommentar

et par småtterier:

*) bruk <?php istedet for <?

*) husk at login og passord må hentes fra $_GET eller $_POST

*) strenger kan sammenlignes med ==, strcmp blir å skyte spurv med uzi

*) file_get_contents eller join("",file("filename")) for å hente ut filinnhold som streng

 

fjartan: alle har små huller ;)

Lenke til kommentar

join er alias for implode.. brukte det på det første skriptet, trodde da det ikke gikk pga gammel php versjon eller noe, så gikk derfor til foreach'en :p (Viste seg jo at det var en litt for rask + i "w+" ;) som var feilen, ikke implode. Må visst begynne å lese igjennom innlegg igjen gitt ;) )

 

edit: just for the record: Vil bare si at jeg personlig ville gjort ting annerledes, bl.a. tatt inn det Torbjørn sier, men jeg gadd ikke endre på hele skriptet.. ;)

Endret av eXZire
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...