Gå til innhold

enkelt flatfil cms, men litt problemer.


Anbefalte innlegg

jeg driver å lager en enkel versjon av et cms som bare kan basere seg på filer. jeg skal bare ha et textfelt brukeren kan fylle inn og der vil overskrift og innhold stå. det jeg lurer på er

1. hvordan kan jeg få opprettet en ny .txt (eller en annen type fil) for hver gang det lages en post. og gi denne filen navnet "antall andre eksisterende filer+1)

 

2. jeg vil så hente ut de fire siste nyhetene ved get_file_contents(), men jeg vet ikke hvordan jeg kan finne ut hvilken som er de siste. lurer også på i det hele tatt hvordan jeg skal få til å linke dynamisk til alle filene.

 

har gjort akkurat dette med databaser, men har ikke gjort det med filer.

er veldig takknemlig for all hjelp :)

Endret av Smidt
Lenke til kommentar
Videoannonse
Annonse

jeg har nå prøvd meg litt frem og kommet frem til at ved å bruke fopen() med parameteren x kan lage en fil.

jeg prøver videre å skrive til filen med fwrite()

koden jeg bruker er:

<?php 
//$handle = fopen("/hsphere/local/home/predicte/predicted.net/eide/cms/news1.txt", "w");

$filename =  'news2.txt';
$news =$_POST['news'];

  if (!$handle = fopen('$filename', 'x+')) {
        echo "Cannot open file ($filename)";
        exit;
  }

  if (fwrite($handle, $news) === FALSE) {
      echo "Cannot write to file ($filename)";
      exit;
  }
  
  echo "Postingen av en nyhet er vellykket";
  
  fclose($handle);


?>

 

det som skjer med denne koden er at en fil som heter $filename blir opprettet. jeg ser ikke helt hvor feilen ligger og håper noen kan hjelpe meg. :)

Lenke til kommentar

herlig, det funket som bare det. fikk chmod med i samme slengen, det var greit.

tror.

et annet problem jeg har er navnsetting på filene som blir laget automasisk, men da tenker jeg og ha en fil hvor antall filer er som totalt er laget blir skrevet. for hver fil som blir laget øker tallet i denne filen med 1. dvs at jeg ikke kan overskrive noen filer sant? virker det sikkert? (tenker ikke nå på hacking og sånt, men mot overskriving av filer)-

Lenke til kommentar

Jeg har selv lagd en lignende løsning, og den virker sånn som det her:

 

En bruker med admin-rettigheter Skriver tittel, ingress og brødtekst i et skjema. Har en fil, news.csv, som inneholder tiitel og ingress, som en database. Den inneholder også referanse til en fil med brødteksten i. news.csv inneholder også info om forfatter, dato, kategori, vedlegg, bilder osv.

 

Når du skriver en y artikkel, legges det en ny oppføring på toppen av news.csv, samtidig som det opprettes en ny fil med artikkelnr som filnavn.

 

Er du veldig interessert kan du få koden, send meg en PM så skal jeg sende den på en mail.

 

Husk at hvis er det er windows system skal \r\n brukes til å lage ny linje, og "x+b" brukes som paramentere til fopen(). Er det et linux system er det \n som er ny linje og paramentere er "x+". Er det mac server er det \r for ny linje.

Lenke til kommentar
ikke kjør fread først tror jeg gjorde susen for meg :)

jeg fikk ikke helt med meg hva jeg skulle gjøre?

bruke fread()?

med den kan jeg vel bare hente ut info fra filen?

 

det jeg har tenkt å gjøre er at for hver nyhet (og dermed også txt fil) som blir opprettet å

$antall_for = get_file_contents(antall.txt);

$antall = $antall_for + 1;

og så overskrive det som står i antall.txt

poenget med dette er at jeg kan lage systematiske navn for nyhetene som news$antall

der $antall blir hentet fra antall.txt

håper noen forstod forklaringen og kan hjelpe meg.

Lenke til kommentar
det som skjer med denne koden er at en fil som heter $filename blir opprettet. jeg ser ikke helt hvor feilen ligger og håper noen kan hjelpe meg.

 

Du bruker sinqlequotes. Forskjellen på singeqvotes og doublequotes er at innholdet i en singlequote ikke blir parset av PHP. Det tolkes som en string uansett. Hvis du bytter ut med doublequotes vil du se at PHP setter innholdet i variabelen $filename inn i stedet for variabelnavnet.

 

Slik:

 
if (!$handle = fopen("$filename", 'x+')) {
       echo "Cannot open file ($filename)";
       exit;
 }

 

ikke slik:

 
if (!$handle = fopen('$filename', 'x+')) {
       echo "Cannot open file ($filename)";
       exit;
 }

Lenke til kommentar

jeg har nå klart å rote sammen følgende kode og den skal

1. hente ut et tall fra antall.txt

2. legge til 1

3. slette det som står i antall.txt

4. skrive inn det nye tallet (som er et tall høyere)

<?php


$countfile = antall.txt;

$antall_for = file_get_contents("antall.txt");
echo"$antall_for<br>";
$antall_ny = $antall_for  + 1;
echo"$antall_ny";

  if (!$handle = fopen("antall.txt", "w")) {
        echo "Cannot open file (antall.txt)";
        exit;
  }
  if (fwrite("$handle", "$antall_ny") === FALSE) {
      echo "Cannot write to file (antall.txt)";
      exit;
  }
     
  fclose($handle);

?>

jeg får det ikke helt til å virke og før følgened feilmelding

fwrite(): supplied argument is not a valid stream resource in /hsphere/local/home/predicte/predicted.net/eide/cms/tantall.php on line 23

Cannot write to file (antall.txt)

det er denne linjen: if (fwrite("$handle", "$antall_ny") === FALSE) {

antall.txt er selvfølgelig chmodet

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