Problem ze skryptem komentarzy ^_^

Wszystko o językach skryptowych takich jak PHP i Perl, serwerach WWW, CGI, bazach danych i języku SQL.
Awatar użytkownika
fuma
Przyjaciel CBA
Posty: 11168
Rejestracja: 01 sie 2005, 14:57:56
Lokalizacja: z jajka niespodzianki :P
Płeć: Mężczyzna
User Agent: Firefox Windows 1024x768

Problem ze skryptem komentarzy ^_^

Post autor: fuma »

---------- 19:28 08.09.2005 ----------

Tak jak w temacie jest napisane mam problem ze skryptem komentarzy (oczywiście nie ja go pisałem). Dopiero raczkuje jeśli chodzi o php i jedyne co potrafię to funkcja echo no i include() :wink: A tak na serio to mam ten prosty skrypt komentarzy ale przy odświerzaniu strony dodaje mi się pusty komentarz. Oczywiście co się z tym wiąże można bez problemu dodać pusty komentarz klikają na przycisk "Dodaj Komentarz". Mam taką prośbę. Czy jest ktoś chętny do przerobienia tego skryptu :?:

Kod: Zaznacz cały

<?

$DATADIR="data/";
$FORMAT="<TABLE WIDTH=100% cellspacing=0><TR BGCOLOR=#232323><TD>%imie% &#40;%email%&#41;</TD><TD ALIGN=RIGHT>%data%</TD></TR><TR><TD COLSPAN=2 >%tekst%</TD></TR></TABLE>";

// --------------------------------------------------------

$commentID="a$commentID";

function displayComments&#40;&#41;
&#123;
    global $commentID, $start, $DATADIR, $FORMAT;

    if&#40;strstr&#40;$commentID, "/"&#41;&#41;
        return;

   if&#40;!file_exists&#40;$DATADIR.$commentID&#41;&#41;
        return;

    $file=fopen&#40;$DATADIR.$commentID, "r"&#41;;
    flock&#40;$file, 1&#41;;

    $i=0;

    while&#40;!feof&#40;$file&#41;&#41;
    &#123;
        $imie=chop&#40;fgets&#40;$file, 1000&#41;&#41;;
        $email=chop&#40;fgets&#40;$file, 1000&#41;&#41;;
        $data=chop&#40;fgets&#40;$file, 1000&#41;&#41;;
        $comment=chop&#40;fgets&#40;$file, 100000&#41;&#41;;

        if&#40;feof&#40;$file&#41;&#41;
            break;

        $display=$FORMAT;

        if&#40;$email&#41;
            $mailto="<A HREF=\"mailto:$email\">$email</A>";
        else
            $mailto="Brak e-maila";
        

        $display=str_replace&#40;"%imie%", $imie, $display&#41;;
        $display=str_replace&#40;"%email%", $mailto, $display&#41;;
        $display=str_replace&#40;"%data%", $data, $display&#41;;
        $display=str_replace&#40;"%tekst%", $comment, $display&#41;;

        echo&#40;$display&#41;;

        $i++;
    &#125;

    flock&#40;$file, 3&#41;;
    fclose&#40;$file&#41;;
&#125;

function displayForm&#40;&#41;
&#123;
    global $REQUEST_URI, $commentID;
    $id=substr&#40;$commentID, 1&#41;;
    $len=strlen&#40;$REQUEST_URI&#41;-strlen&#40;strchr&#40;$REQUEST_URI, "?"&#41;&#41;;
    $url=substr&#40;$REQUEST_URI, 0, $len&#41;;
    ?>
        <FORM ACTION=<?=$url?> METHOD=POST>
        <INPUT TYPE=HIDDEN NAME=COMMENTACTION VALUE=add>
        <INPUT TYPE=HIDDEN NAME=commentID VALUE="<?=$id?>">
        <TABLE>
        <TR><TD>Nick:</TD><TD><INPUT TYPE=TEXT NAME=f_imie SIZE=35></TD>
        <TR><TD>Email:</TD><TD><INPUT TYPE=TEXT NAME=f_email SIZE=35></TD>
        <TR><TD>Tre&#339;&#230;:</TD><TD><TEXTAREA NAME=f_tresc COLS=28 ROWS=7></TEXTAREA></TD>
        <TR><TD></TD><TD><INPUT TYPE=SUBMIT VALUE="DODAJ KOMENTARZ"></TD></TR>
        </TABLE>
        </FORM>
    <?
&#125;

if&#40;$COMMENTACTION=="add"&#41;
&#123;
    $file=fopen&#40;$DATADIR.$commentID, "a"&#41;;
    flock&#40;$file, 2&#41;;

   $f_tresc=str_replace&#40;"\n", "<BR>", $f_tresc&#41;;
   $f_tresc=str_replace&#40;"\r", "", $f_tresc&#41;;
   $f_imie=str_replace&#40;"\n", "<BR>", $f_imie&#41;;
   $f_imei=str_replace&#40;"\r", "", $f_imie&#41;;
   $f_email=str_replace&#40;"\n", "<BR>", $f_email&#41;;
   $f_email=str_replace&#40;"\r", "", $f_email&#41;;

   fputs&#40;$file, $f_imie&#41;;
    fputs&#40;$file, "\n"&#41;;
   fputs&#40;$file, $f_email&#41;;
    fputs&#40;$file, "\n"&#41;;
   fputs&#40;$file, date&#40;"H:i d-m-Y"&#41;&#41;;
    fputs&#40;$file, "\n"&#41;;
   fputs&#40;$file, $f_tresc&#41;;
    fputs&#40;$file, "\n"&#41;;

    flock&#40;$file, 3&#41;;
    fclose&#40;$file&#41;;
&#125;

?>
Nie szukałem na google bo niemam zielonego pojęcia jak sformułować zapytanie :wink:

---------- 06:48 09.09.2005 ----------

No i przeszukłem forum strony skąd mam ten skrypt no i nic. A gościu napisał żeby jemu nie wysyłać emaili :?
Awatar użytkownika
michalmet
Posty: 94
Rejestracja: 07 lip 2005, 10:03:11
Lokalizacja: Somewhere in Poland....
Płeć: Niewybrana
User Agent: Firefox Windows
Kontakt:

Post autor: michalmet »

Ja bym po prostu dodał sprawdzanie, czy pola edycji nie są puste.
Przed tym fragmentem, gdzie powtarzają się funkcje fputs dodaj:

Kod: Zaznacz cały

if &#40;$f_tresc!=""&#41;
  &#123;  fputs&#40;$file, $f_imie&#41;;
      // itd.
  &#125; else
  &#123; echo "Nie wpisałeś komentarza!";&#125; 
Równie dobrze, możesz zrobić to sprawdzanie, czy zostało wpisane imię, mail usera.

pozdro
Forum dla programistów - polecam ;)

www.animavilis.[regulamin forum: punkt 2.13] - strona mojego zespołu 8) wciąÂ¿ w fazie tworzenia...
Awatar użytkownika
fuma
Przyjaciel CBA
Posty: 11168
Rejestracja: 01 sie 2005, 14:57:56
Lokalizacja: z jajka niespodzianki :P
Płeć: Mężczyzna
User Agent: Firefox Windows

Post autor: fuma »

Niestety ale nie działa. Znaczy działa. Wyskakuje komunikat o niewypełnionych polach ale pusty komentarz jest i tak dodawany :cry: W każdym bądź razie dziękuje za próbę pomocy. :roll:
Awatar użytkownika
michalmet
Posty: 94
Rejestracja: 07 lip 2005, 10:03:11
Lokalizacja: Somewhere in Poland....
Płeć: Niewybrana
User Agent: Firefox Windows
Kontakt:

Post autor: michalmet »

Masz może dostęp do bazy danych? Kiedyś napisałem sobie prosty skrypt... i mi działał :)
Forum dla programistów - polecam ;)

www.animavilis.[regulamin forum: punkt 2.13] - strona mojego zespołu 8) wciąÂ¿ w fazie tworzenia...
Awatar użytkownika
fuma
Przyjaciel CBA
Posty: 11168
Rejestracja: 01 sie 2005, 14:57:56
Lokalizacja: z jajka niespodzianki :P
Płeć: Mężczyzna
User Agent: Firefox Windows

Post autor: fuma »

michalmet pisze:Masz może dostęp do bazy danych? Kiedyś napisałem sobie prosty skrypt... i mi działał
Nie mam. :cry: A zewnętrznych nie chcę używać bo są wolne. No cóż dzięki za dobre chęci poszukam jeszcze w google i pokombinuje.
Awatar użytkownika
Lars
Posty: 47
Rejestracja: 24 lip 2005, 11:43:22
Płeć: Niewybrana
User Agent: Internet Explorer Windows 800x600

Post autor: Lars »

Kod: Zaznacz cały

if &#40;$f_tresc!=""&#41;
  &#123;  fputs&#40;$file, $f_imie&#41;;
     // itd.
  &#125; else
  &#123; echo "Nie wpisałeś komentarza!";&#125; 
zamiast tego wyżej:


Kod: Zaznacz cały

if&#40;empty&#40;$_POST['f_tresc']&#41;&#41; &#123; die&#40;'Pusty tekst!'&#41;; &#125; 
michalmet - dziś się używa zmiennych superglobalnych, to nie
php3 :P
Awatar użytkownika
fuma
Przyjaciel CBA
Posty: 11168
Rejestracja: 01 sie 2005, 14:57:56
Lokalizacja: z jajka niespodzianki :P
Płeć: Mężczyzna
User Agent: Firefox Windows

Post autor: fuma »

No więc Lars to działa ale...... Fajnie by było gdyby zamiast na nowej stronie to ten napis "Pusty tekst" wyświetlał się jako alert. W każdym bądź razie dzięki.
Awatar użytkownika
michalmet
Posty: 94
Rejestracja: 07 lip 2005, 10:03:11
Lokalizacja: Somewhere in Poland....
Płeć: Niewybrana
User Agent: Firefox Windows
Kontakt:

Post autor: michalmet »

Masz na myśli okienko dialogowe? Jeśli tak, to musisz to połączyć z JS... a tutaj już Ci niestety nie pomogę...
Forum dla programistów - polecam ;)

www.animavilis.[regulamin forum: punkt 2.13] - strona mojego zespołu 8) wciąÂ¿ w fazie tworzenia...
Awatar użytkownika
fuma
Przyjaciel CBA
Posty: 11168
Rejestracja: 01 sie 2005, 14:57:56
Lokalizacja: z jajka niespodzianki :P
Płeć: Mężczyzna
User Agent: Firefox Windows

Post autor: fuma »

Spróbuje to załatwić inaczej. Ale mimo wszystko wielkie dzięki za pomoc :mrgreen:
daniel93
Posty: 132
Rejestracja: 08 sie 2005, 22:53:38
Płeć: Niewybrana
User Agent: Internet Explorer Windows
Kontakt:

Post autor: daniel93 »

Ja się nieznam ale morz zamiast wywoływać nową stronę to morz link do javascrip .
http://www.dioda.cba.pl portal elektroniczny
Awatar użytkownika
fuma
Przyjaciel CBA
Posty: 11168
Rejestracja: 01 sie 2005, 14:57:56
Lokalizacja: z jajka niespodzianki :P
Płeć: Mężczyzna
User Agent: Firefox Windows

Post autor: fuma »

daniel93 pisze:Ja się nieznam ale morz zamiast wywoływać nową stronę to morz link do javascrip .
Wystarczy wykorzystać alert napisany w JS (przynajmniej mi się tak wydaje). Ale i tak zamierzam to inaczej zrobić. :wink:
ODPOWIEDZ