Gå til innhold

Postsystem med ?p= i flatfil


Anbefalte innlegg

Videoannonse
Annonse

Haha, kanskje litt dårlig forklart. Here we go again :)

 

Du oppretter en tråd. Med tittel, undertittel og en tekst.

 

Alle disse trådene får sin egne ID, denne hentes ut fra en .txt fil som teller oppover. Derfor vil den første tråden ha ID=1 og den andre vil ha 2 osv.

 

Men så lurer jeg på. Hvordan kan man lagre hvilke tråder som hører til hvilke ID-numre? Jeg veit at man har gjort lignende i andre PHP og forum programmer.

Lenke til kommentar

#1; MySQL

 

(eller _ma_ du ha tekstfil?)

 

Hvordan kan man lagre hvilke tråder som hører til hvilke ID-numre? Jeg veit at man har gjort lignende i andre PHP og forum programmer.

Er det ikke i samme linjen som traden da?

 

foreach( $fil as $linje) {

$x = explode( '-_-_-', $linje );

$id = $x[0];

$trad = $x[1];

}

 

elns?

Endret av Ståle
Lenke til kommentar

den looper gjennom tekstfilen $fil = file( 'tekst.txt' );

og lager et array av linjen, hver del av arrayer er delt opp av -_-_-

 

feks

id-_-_-trad-_-_-_noe

214-_-_-hei dett e er en test trad-_-_-

 

$x[0] == 214

$x[1]== hei dett e er en test trad

Lenke til kommentar

Jeg vil anbefale deg å bruke mysql, det er en mye bedre og sikrere måte enn å bruke .txt filer...

Det er også mye enklere og utforme og inkludere koden i websiden.

 

offtopic: Ståle du burde melde deg som moderator... det ser ut til at du har peiling på dette, og du er ganske aktiv i forumet!

Endret av Microsoftbruker
Lenke til kommentar

Ok, har gjort litt mer nå, men står fast.

 

Start.php

Klikk for å se/fjerne innholdet nedenfor
<?php
session_start();

//Some config
$_POST['title'] = $title;
$_POST['text'] = $text;

//Get the ID
$iddd = ("id.txt"); 
//her finner vi filen og opner den 
$besokende = file($iddd); 
//her legger vi til 1 besøkende 
$besokende[0]++; 
//her opner vi telleren 
$ny = fopen($iddd , "w"); 
//her forteller vi telleren om den nye besøkende 
fputs($ny , "$besokende[0]"); 
//lukker filen 
fclose($ny); 

//Start the script
if(isset($_POST['post']))
{
if(empty($_POST['title']) or empty($_POST['text']))
{
	echo "You must enter a title and text";
	unset($_POST['post']);
	header ( "Loaction index.php ");
	die;
}
else
{
       if(!$databasefile = fopen("database.txt","a"))
	{
		die("Couldn't open file. Please contact admin");
	}

$infotext = $besokende[0]" ||| ". $title ." --- ". $text . " 1337\n";

   if(!fwrite($databasefile,$infotext))
       {
       die("Couldn't write to file. Please contact admin");
       }
   fclose($databasefile);
   echo "The post has been added <br />";
   echo "Read it LINKHERE";
}
}
else
{
header ( "Loaction index.php ");
die;
}
?>

 

Readit.php

 

Her står jeg fast.

 

Poenget er at nå som hver post begynner med et unikt tall skal det være $_GET verdien.

 

Har derfor tatt utgangspunkt i det script jeg fikk for en stund siden:

 

Klikk for å se/fjerne innholdet nedenfor
<?php
session_start;
// "Config"
$p = $_GET['p']; // ?p=
$ex = "txt"; // Filendelse
$exn = "php" // Filendelse2
$main = "index"; // Hovedsida (hvis ?side= er tom
$error = 404; // Finnes ikke



// Hvis side er tom
if (empty($p)) {
include("$main.$ex"); // Hovedsiden inkluderes
}

// Hvis ?side=noe og noe.php finnes blir den inkludert her:
else if (file_exists("$p.$ex")) {
include("$p.$ex");
}

// Hvis ?side=noe og noe.php ikke finnes blir 404 siden inkludert:
else if (!file_exists("$p.$ex")) {
include("$error.$ex");
}

?>

 

?p=[iDEN SKAL KOMME HER]

 

Da må jeg gjøre noe foreach, det har jeg skjønt. Men jeg har både splitt på ID, TITTEL og TEXT. Hvordan gjør jeg det da?

Endret av TheClown
Lenke til kommentar

Kommet meg noe vidre. Men hva er feil her:

 

<?php
session_start;

//Open file and get info
$file = ("database.txt"); 
//her finner vi filen og opner den 
$info = file($file);
$info = $alltext;

foreach($alltext as $linje) 
{
$x = explode( '1337', $linje );
$id = $x[0];
$trad = $x[1];
}

 

Warning: Invalid argument supplied for foreach() in /mounted-storage/home20a/sub001/sc20063-GJYD/www2/thomas/script/readit.php on line 10
Her er ID!Her er teksten

Endret av TheClown
Lenke til kommentar

<?php
session_start();

//Open file and get info
$file = file("database.txt"); 
//her finner vi filen og opner den 
foreach($file as $linje) 
{
$x = explode( '1337', $linje );
$id = $x[0];
$trad = $x[1];
}

 

kanskje.

 

Det er heller ikke sa lurt a bruke tall som seperatorer, siden hva hvis en nyhet inneholder 1337. ;)

Lenke til kommentar

Nå skal jeg dele opp linjene igjen, men får samme feilmelding

 

foreach($seplinje as $titelogtext)

{

$x2 = explode( '|||', $tittelogtext );

$id = $x2[0];

$trad = $x2[1];

}

 

ERR: Poenget var jo at den skulle gå gjennom hele .txt fila og dele opp hver eneste linje etter 1337. Men den deler jo bare første linje. Hvordan lager man en enkel loop som gjør om det?

Endret av TheClown
Lenke til kommentar

Det er det jeg har gjort. Hvis du leser postit.php

 

$infotext = $besokende[0]." ||| ". $title ." --- ". $text . " &&%%%&\n";

 

Med tekst:

 

2 ||| Det var en gang thomas --- Dette er en magisk rar mognogo otototahah Det ahahahahahah &&%%%&

3 ||| Hjelp --- Assa, nå trenger jeg hjelp &&%%%&

 

Men jeg fikk ikke til å dele ved \n siden den ikke blir skrevet noe sted og foreach fant den ikke. Men nå skulle jeg dele den ved |||

Endret av TheClown
Lenke til kommentar

nar du laster inn filen i $file, og .txtfilen er delt i linjer

er $file et array.

 

det foreach() gjor, er a ga gjennom et array, key for key og gjore ting med hvert element.

 

sa du trenger bare a explode() for a finne ut tingene du har per linje :)

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