Jump to content
Sign in to follow this  
oya

Legge inn i tekstdokument øverst

Recommended Posts

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";
}
?>

Edited by oya

Share this post


Link to post

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.

Share this post


Link to post

<?
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 ;)

Edited by eXZire

Share this post


Link to post

funker ikke. Har hjemmesiden på home.no.net... vet ikke helt hvilken versjon de har, men skulle jo anta at de har en ganske nyere versjon

Share this post


Link to post

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";
}
?>

Edited by eXZire

Share this post


Link to post

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 ;)

Share this post


Link to post

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.. ;)

Edited by eXZire

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...