Gå til innhold

Nyhetsscript - lage selv - PHP, flat files


Gjest Slettet-IHWlGMJn

Anbefalte innlegg

Gjest Slettet-IHWlGMJn

Heisann

 

Jeg har lyst på et veldig enkelt nyhetsscript og tenkte jeg kanskje kunne prøve å lage et selv. Sikkert mye lettere å bare finne noe på nett, men har litt lyst til å prøve meg på det..

 

Hvordan jeg vil ha det:

Det skal være veldig enkelt og basert på php og flatfiles(Har forstått at det kalles det om du lagrer det som f.eks txt-filer). Én "admin" skal kunne poste nyheter. Disse nyhetene poster han\hun fra en adminside. Nyhetene skal ha en dato da den ble postet og ellers bare ren tekst.

 

Jeg lurer på hvordan man burde legge opp siden der man logger inn. Og hvordan burde man lagre nyhetene? En fil? Eller kanskje en fil for hver nyhet, lagret etter dato(f.eks: 194516112006.txt)?

 

Jeg er på ingen måte en php-ekspert, men må vel kunne si at jeg kan det helt basice

All hjelp taes i mot med takk :)

Endret av Slettet-IHWlGMJn
Lenke til kommentar
Videoannonse
Annonse

Cutenews ville vært det enkleste, det er veldig enkelt å customize.

 

Men hvis du vil lage ditt eget newssystem går det også. :p

Hvis du har tilgang på mysql er det mye enklere, synes jeg, enn flat filer. Det er også mye mer stabilt hvis veldig mange folk besøker siden din samtidig. Det er også mye sikrere, for hvis du har CHMODDET nyheter.txt til 777 kan alle endre den.

 

(Jeg vet ikke om hosten har installert den nyeste PHP ver. så du egentlig bare trenger å CHMODDE den til 644)

 

Du trenger PHP fil kommandoer, som fopen() som åpner filer og skriver eller leser fra dem.

 

Når du lagrer nyhetene, kan du vel gjøre noe sånt:

||overskrift||nyhether||dato||

og så bruke explode() for å lese ut overskrift, nyheten og datoen.

Lenke til kommentar

vet ikke helt hvordan det hadde funket, men hva med å lage et system med mapper der du har en mappe for hvert år, med undermapper for hver måned og undermapper for hver dag og filer etter [klokkeslett].txt eller noe?

da har man alt man trenger av info, og så kan man la skriptet søke igjennom mappene etter de 5 eller 10 siste filene og inkludere de?

 

eller hadde det blitt en fryktelig treig og tungvindt måte i forhold til å bare bruke en fil med skilletegn? er vel hastighet og belastning på server som har mest å si..

Lenke til kommentar

Tungvindt, har du tilgang til SQL, bruk det.

Og forslaget til Stale2k er noe av det samme som CN(cutenews) gjør, alle nyheter i ei fil, og skiller de forskjellige elementene med noe. Bør da skilles med tegn som ikke forekommer i selve nyheten. Skille du med "||", og du skriver "Fisk || Kjøtt -> Ett fett", så vil alt i resten av scriptet forskyves ett hakk. Overskriften blir plutselig hovedinnholdet etc.

Mange som bruker **--** el., har jeg sett.

Lenke til kommentar
Gjest Slettet-IHWlGMJn

Jeg har tilgang til sql, ja, men siden dette er mer noe jeg gjør for egenlære så skulle jeg gjerne prøvd meg på flatfiles først. Så prøver jeg meg sikkert på sql ved en senere anledning.

 

Vil det ikke være mulig å kanskje lage en mappe, "nyheter", der man har rettigheter til å skrive filer. Så lagrer man nyhetene i enkeltfiler der filnavnet er datoen, første linje i fila er en overskrift, mens resten av fila er nyheten. Disse filene trenger man da ikke ha skriverettigheter til..

Da slipper man dette med deletegn i alle fall, men jeg vet ikke om det er mulig å skrive filer til en mappe uten at man da også vil få skriverettigheter til filene man skriver?

 

Tror jeg skal prøve fopen() og explode() litt ut nå. Har brukt de litt før, men er en stund siden nå..

Lenke til kommentar

Skal vi se.

Jeg har laget et CMS i php (flatfiler), her er min metode:

 

Jeg lagret alle nyheter i én fil:

0|Tittel1|ingress1|brødtekst1|Navn1|timestamp_her
1|Tittel2|ingress2|brødtekst2|Navn2|timestamp_her
2|Tittel3|ingress3|brødtekst3|Navn3|timestamp_her
3|Tittel3|ingress3|brødtekst3|Navn3|timestamp_her

 

For hver gang du adder en nyhet, plusses integeren (tallet) på med 1.

 

Du kan hente de ut på denne måten:

<?php
$mainfile = "minfil57.db";
$news = @file($mainfile);
$i = 0;
$s = @count($news);

echo "\nDet er $s nyheter i databasen.<br />\n";

if (isset($_GET['les'])) {
  $id = $_GET['les'];
  $exp = @explode('|', $news[$id]);
  if ($exp[0] == $id) {
      echo "
<h1>$exp[1]</h1>
<p>$exp[3]</p>
<p>Postet av $exp[4], den $exp[5]</p>
<br />
       ";
  }
} else {
   while($i < $s) {
       $exp = explode('|', $news[$i]);
       echo "
<br />
<h1>$exp[1]</h1>
<p>$exp[2]</p>
<p>Postet av $exp[4], den $exp[5] <a href=\"?les=$exp[0]\">Les mer / kommenter</a></p>
<br />
       ";
       $i++;
   }
}
?>

 

Var noe sånt, jeg er for trøtt til å php'e seriøst nå.

Når du skal skrive til fil:

<?php
$mainfile = "minfil57.db";
$new = @file_get_contents($mainfile);
$id = @explode('|', $new);
$id[0]++;
$tid = time();
$bla = str_replace("\r\n", '<br />', $bla);
$bla = str_replace('|', "|", $bla);
$ff = @fopen('minfil57.db', 'w');
fwrite($ff, "$id|$bla|$bla|$tid\n".$new);
fclose($ff);
?>

 

Som sagt, kan godt være helt feil, fikk ikke testet den heller.

Lykke til!

 

EDIT: Fikset litt... igjen :ermm:

Endret av THROBiX
Lenke til kommentar
Gjest Slettet-IHWlGMJn

Kom inn for å si at jeg har starta litt for meg selv her..

 

Til nå har jeg bare et system som leser nyhetsfilene mine.. å gjøre det slik at den leser filnavnet for så å gjøre det om til en dato burde ikke by på store problemer, men jeg har ikke helt tenkt på hvordan jeg skal gjøre det ennå.

 

Det ser slik ut:

http://www.norsf.net/test/news/les.php

 

Stikker vel å legger meg snart, så jeg tviler på at jeg gjør no mer foreløpig..

 

@ THROBiX

Kan ta en titt på det der imårra. Orker ikke sette meg inn i no nytt kl.2 på natta :p

Du har ikke en link til der scriptet er i bruk?

Og jeg ser du bruker .db. Er det noen fordel(/ulempe med noe annet) ved det? Eller er det bare for ordens skyld?

Endret av Slettet-IHWlGMJn
Lenke til kommentar

hva med en fil som ser ut noe i denne duren?

<?php
$nyhet[1]['tittel'] = "tittel1";
$nyhet[1]['inngress'] = "inngress her. masse tekst";
$nyhet[1]['brodteskt'] = "brødtekst.. mer tekst.";
$nyhet[1]['tid'] = "1 august 1542 12.04";

$nyhet[2]['tittel'] = "tittel2";
$nyhet[2]['inngress'] = "annet inngress her. masse tekst";
$nyhet[2]['brodteskt'] = "brødtekst.. mer tekst.";
$nyhet[2]['tid'] = "2 august 1542 12.04";
?>

vet ikke helt om arrayene er skrevet riktig, men dere skjønner poenget..

ville det funket bra tror dere?

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...