Avatar billede mr-mycom Nybegynder
13. september 2005 - 20:18 Der er 12 kommentarer

Kunne tilføje kommentare

Ja, jeg står med et lillebitte newsscript, som hverken kræver MySQl eller noget. Jeg vil bare gerne have sådan at man kan skrive en comment..? Hvordan gør jeg? Jeg bruger fopen til at hente nyhederne, som bliver skrevet til en .txt fil.
Avatar billede nielle Nybegynder
13. september 2005 - 20:35 #1
F.eks. sådan?

$handle = fopen ("dinFil.txt", "a");  // Åben filen for "append".
fwrite($handle, "Din kommentar - placeres sidst i filen.");
fclose($handle);
Avatar billede stalle Nybegynder
15. september 2005 - 12:17 #2
Helt så simpelt er det vist ikke, da jeg forstår det således at filen indeholder mere end én nyhed. Altså ville du skulle håndtere både hvilken nyhed, og hvilke kommentarer der er til nyheden. Endvidere ville jeg, tror jeg, gemme kommentarer i en seperat fil.
Avatar billede mr-mycom Nybegynder
15. september 2005 - 15:31 #3
Ja, alle nyhederne ligger i en .txt fil som hedder news.txt. jeg ader så nyhed via php site, og den bliver skrevet til news.txt, så på index.php har jeg en kode der bruger fopen news.txt og så viser den nyhederne..
Avatar billede nielle Nybegynder
15. september 2005 - 17:16 #4
Hvis kommentarer til en enkelt nyhed, inde mellem en masse andre, ikke bare skal placeres sidst i tekst-filen, så bliver du nødt til at beskrive strukturen for os.
Avatar billede mr-mycom Nybegynder
15. september 2005 - 19:09 #5
Det er her jeg skriver nyheden..:


<?
if($action == "edit" && isset($HTTP_POST_VARS['password'])) {
    //obviously you should change this password on the next line
    if($HTTP_POST_VARS['password'] == "editpass") {
        //First let's recompile that line with the pipe symbols so we can reinsert it
        $line = $HTTP_POST_VARS['date'] . "|" . $HTTP_POST_VARS['name'];
        $line .= "|" . $HTTP_POST_VARS['news'];
        $line = str_replace("\r\n","<BR>",$line);
        $line .= "\r\n";
        $data = file('news.txt');
        $data[$id] = $line;
        //the next line makes sure the $data array starts at the beginning
        reset($data);
        //now we open the file with mode 'w' which truncates the file
        $fp = fopen('news.txt','w');
        foreach($data as $element) {
            fwrite($fp, $element);
        }
        fclose($fp);
        echo "Item Edited!<BR><BR>\n";
        echo "<a href=\"$PHP_SELF\">Go Back</a>\n";
        exit;
    } else {
        echo "Bad password!\n";
        exit;
    }
}
if($action == "edit") {
    $data = file('news.txt');
    $element = trim($data[$id]);
    $pieces = explode("|", $element);
    //the next line is to reverse the process of turning the end of lines into breaking returns
    $news = str_replace("<BR>","\r\n",$pieces[2]);
    echo "Make the changes you would like and press save.<BR>\n";
    echo "<FORM ACTION=\"$PHP_SELF?action=edit\" METHOD=\"POST\" NAME=\"editform\">\n";
    echo "Name:<BR>\n";
    echo "<INPUT TYPE=\"text\" SIZE=\"30\" NAME=\"name\" value=\"".$pieces[1]."\"><BR>\n";
    echo "The News:<BR>\n";
    echo "<TEXTAREA NAME=\"news\" COLS=\"40\" ROWS=\"5\">".$news."</TEXTAREA><BR><BR>\n";
    echo "Password:<BR>\n";
    echo "<INPUT TYPE=\"password\" SIZE=\"30\" NAME=\"password\"><BR>\n";
    echo "<INPUT TYPE=\"hidden\" NAME=\"date\" VALUE=\"".$pieces[0]."\">\n";
    echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$id\">\n";
    echo "<INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Save\"><BR>\n";
    echo "</FORM>\n";
    exit;
}
if($action == "delete" && isset($HTTP_POST_VARS['password'])) {
    //obviously you should change this password on the next line
    if($HTTP_POST_VARS['password'] == "deletepass") {
        $data = file('news.txt');
        //this next line will remove the single news item from the array
        array_splice($data,$id,1);
        //now we open the file with mode 'w' which truncates the file
        $fp = fopen('news.txt','w');
        foreach($data as $element) {
            fwrite($fp, $element);
        }
        fclose($fp); 
        echo "Item deleted!<BR><BR>\n"; 
        echo "<a href=\"$PHP_SELF\">Go Back</a>\n";
        exit;
    } else {
        echo "Bad password!\n";
        exit;
    }
}
if($action == "delete") {
    echo "<H2>You are about to delete the following news item.</H2>\n";
    $data = file('news.txt');
    $element = trim($data[$id]);
    $pieces = explode("|", $element);
    echo $pieces[2] . "<BR>" . "<b>Posted by " . $pieces[1] . " on " . $pieces[0] . "</b>\n";
    echo "<BR><BR>\n";
    echo "Are you sure you want to delete this news item? If so, enter the password and click on Delete.<BR>\n";
    echo "<FORM ACTION=\"$PHP_SELF?action=delete\" METHOD=\"POST\" NAME=\"deleteform\">\n";
    echo "Password:<BR>\n";
    echo "<INPUT TYPE=\"password\" SIZE=\"30\" NAME=\"password\"><BR>\n";
    echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$id\">\n";
    echo "<INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Delete\"><BR>\n";
    echo "</FORM>\n";
    exit;
}
echo "<H1><u>Current News</u></H1>\n";
$data = file('news.txt');
//next line removed to make everything else easier in the admin script
//$data = array_reverse($data);
foreach($data as $key=>$element) {
    $element = trim($element);
    $pieces = explode("|", $element);
    echo $pieces[2] . "<BR>" . "<b>Posted by " . $pieces[1] . " on " . $pieces[0] . "</b>\n";
    echo " <a href=\"$PHP_SELF?action=delete&id=$key\">Delete</a>\n";
    echo " <a href=\"$PHP_SELF?action=edit&id=$key\">Edit</a>\n";
    echo "<BR><BR>\n";
}
echo "<HR>\n";
echo "<H1><u>Add News</u></H1>\n";
if($HTTP_POST_VARS['submit']) {
    if($HTTP_POST_VARS['password'] == 'pass') {
        if(!$HTTP_POST_VARS['name']) {
            echo "You must enter a name";
            exit;
        }
        if(!$HTTP_POST_VARS['news']) {
            echo "You must enter some news";
            exit;
        }
        if(strstr($HTTP_POST_VARS['name'],"|")) {
            echo "Name cannot contain the pipe symbol - |";
            exit;
        }
        if(strstr($HTTP_POST_VARS['news'],"|")) {
            echo "News cannot contain the pipe symbol - |";
            exit;
        }
        $fp = fopen('news.txt','a');
        if(!$fp) {
            echo "Error opening file!";
            exit;
        }
        $line = date("m.d.y") . "|" . $HTTP_POST_VARS['name'];
        $line .= "|" . $HTTP_POST_VARS['news'];
        $line = str_replace("\r\n","<BR>",$line);
        $line .= "\r\n";
        fwrite($fp, $line);
        if(!fclose($fp)) {
            echo "Error closing file!";
            exit;
        }
        echo "<b>News added!</b>\n"; 
    } else {
        echo "Bad Password";
    }
}
?>
<FORM ACTION="<?=$PHP_SELF?>" METHOD="POST" NAME="newsentry">
Your name:<BR>
<INPUT TYPE="text" SIZE="30" NAME="name"><BR>
The News:<BR>
<TEXTAREA NAME="news" COLS="40" ROWS="5"></TEXTAREA><BR><BR>
News Password:<BR>
<INPUT TYPE="password" SIZE="30" NAME="password"><BR>
<INPUT TYPE="submit" NAME="submit" VALUE="Post it!"><BR>
</FORM>

Og sådan her loader jeg den på siden:

<?PHP
$data = file('news.txt');
$data = array_reverse($data);
foreach ($data as $element)
{
    $element = trim($element);
    $pieces = explode("|", $element);
    echo "<b>Posted by " . $pieces[1] . "</b> on " . $pieces[0] . "<BR>" . $pieces[2] . "<BR><BR>";
}
?>
Avatar billede nielle Nybegynder
15. september 2005 - 19:17 #6
Det var nu mere strukturen af tekstfilen jeg efterspurgte :^)
Avatar billede stalle Nybegynder
15. september 2005 - 19:17 #7
Med den struktur news.txt har, vil jeg mene det ikke lader sig gøre, og tilføje kommentarer, der knytter sig til de enkelte nyheder.
Avatar billede stalle Nybegynder
15. september 2005 - 19:19 #8
nielle - Den er bygget op med en masse |'s til at adskille forskellige sektioner, uden at man kan se hvad der er hvad.

Der bliver så talt op i et array, og ud fra det skriver man nyheden til siden
Avatar billede mr-mycom Nybegynder
15. september 2005 - 22:37 #9
Præsic som stalle siger. Den er bygget op med |. Men det er ikke muligt at kunne tilføje kommentare?
Avatar billede nielle Nybegynder
15. september 2005 - 22:50 #10
Du skal i hvert fald have en eller anden slags id på nyhederne, hvis der skal kunne kobles kommentarer på dem. Ellers er der ikke noget at "hænge" kommentarene på.

Og jeg vil da stadig væk gerne se et eksempel på en tekst-fil. Ikke hele filen, blot nok til at få et indtryk af hvordan strukturen er.
Avatar billede mr-mycom Nybegynder
19. september 2005 - 21:43 #11
strukturen kan se på www.kreller.dk/news.txt
Avatar billede nielle Nybegynder
19. september 2005 - 22:04 #12
Takker. :^)

Du bliver som sagt nødt til at indføre en eller anden form for unikt id pr. nyhed i din fil. Ellers kan du ikke sammenkoble kommentarer med den nyhed som de høre til.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester