ďťż

[php] Skrypt newsów Gdzie tkwi błąd

       

Podstrony


telcocafe

Napisałem taki skrypt newsów: http://www.bmatrix.elsat.net.pl/news/ , jednak z jakiegoś powodu nie działa. Skrypt w zamierzeniu ma działać na takiej zasadzie:

1. Wpisujemy dane do pliku add.htm, plik przesyła dane do pliku news.php
2. Plik news.php zapisuje dane do pliku newsy.txt
3. Plik pokaz.php odczytuje dane z pliku newsy.txt

No właśnie, skrypt ma tak działać, ale tak nie działa :/.




Nie znam się w ogólę na php
Tak ostatnio pisałeś.
PHO to język server-side więc ink nam nic nie da, musisz podać kod.

Ehh, rzeczywiście zapomniałem podać kodu:

add.htm:

<html> <head> <title>Dodaj news</title> </head> <body> <form action="news.php" method="post"> Tytul:<br> <input name="title_txt" type="text" size="40"><br> Data:<br> <input name="date_txt" type="text" size="40"><br> Tresc:<br> <textarea name="text_txt" rows="10" cols="40"></textarea><br> <input type="submit" value="Wyslij"> </form> </body> </html>

news.php:

<? function zapisz($tytul,$data,$tresc) { $tytul=$_POST["title_txt"]; $data=$_POST["date_txt"]; $tresc=$_POST["text_txt"]; $nazwa="newsy.txt"; $plik=fopen($nazwa,"w"); fwrite($plik,$tytul,$data,$tresc); fclose($plik); }

pokaz.php:

<html> <body> <? include 'newsy.txt'; ?> </body> </html>

news.php nie zapisuje bo jedynie stworzyleś funkcję do zapisu - ale jej nie wywołujesz.
fwrite($plik,$tytul,$data,$tresc);
Co to jest? Od kiedy funkcja fwrite przyjmuje cztery parametry? O ile wiem przyjmuje tylko trzy, z czego trzeci jest opcjonalny :>
fwrite ( resource uchwyt, string łańcuch [, int długość] )
> http://pl.php.net/ma...tion.fwrite.php

Nawet nie będę wspominał że na 8 linii kodu zrobiłeś, na moje oko, 7 pomyłek/błędów ;>

1. Jako parametr funkcji zapisz przyjmujesz $tytul, $data, $tresc - to po co później do tych zmiennych przepisujesz z tablicy $_POST ?
2. $tytul=$_POST["title_txt"]; => $tytul = $_POST['title_txt']; //szybszy kod...
3. $data=$_POST["date_txt"]; => $data = $_POST['date_txt']; //szybszy kod...
4. $tresc=$_POST["text_txt"]; => $tresc = $_POST['text_txt']; //szybszy kod...
5. $nazwa = "newsy.txt" a potem otwierasz $nazwa - czemu od razu tego nie zrobisz? I zamień te głupie cudzysłowia na apostrofy! Szybszy kod!
6. fwrite($plik,$tytul,$data,$tresc); // n/c
7. Masz swoją cudną funkcję której nigdy nie wywołałeś... ona taka samotna, biedna, opuszczona, niekochana :(
Użytkownik Einzeinbleth edytował ten post 29 czerwiec 2006, 15:40


Działa! Zmieniłem kod news.php na:

<? function zapisz($all) { $tytul=$_POST['title_txt']; $data=$_POST['date_txt']; $tresc=$_POST['text_txt']; $nazwa="newsy.txt"; $all="$tytul,$data,$tresc"; $plik=fopen($nazwa,"w"); fwrite($plik,$all); fclose($plik); } zapisz($all); ?>

Dzięki wszystkim.

EDIT:

Jeszcze jedno pytanko: co dopisać aby skrypt nie nadpisywał tego pliku tylko dodawał do niego tekst? Bo jak chcę napisać nowego "newsa" to kasuje się treść starych.
Użytkownik pociol1 edytował ten post 29 czerwiec 2006, 16:23
Ustaw odpowiedni tryb w fopen().

Tak masz:

Tryb: 'w' Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.

Tak ustaw:

Tryb: 'a' Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.

A czy jest możliwość trybu takiego jak 'a' ale żeby wskaźnik pliku był utworzony na początku?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.