emotki i czytanie rekordów od końca

Odpowiedz Nowy wątek
2006-12-26 22:02
0

emotki i czytanie rekordów od końca

chciałem ze sobą połączyć 3 skrypty ale coś mi nie wyszło:

  • komentarze
  • emotki
  • czytanie rekordów od końca (czyli żeby świeże komentarze były u góry a nie na dale jak zawsze)

problem polega na tym że nie działa to jak należy. Może ktoś by znalazł tu błąd:

<?
if ($message)
{
function emotki($ciag)
{
$znak=array(" :> "," :P "," :] ");
$znak_zmien=array('<img src="chytry.gif" alt=":>">','<img src="jezyk1.gif" alt=":P">','<img src="krzywy.gif" alt=":]">'); //etc...
$ciag=str_replace($znak,$znak_zmien,$ciag);
return $ciag;
}
        $name = strip_tags($name);
        $message = strip_tags($message);
        $message = ereg_replace("\r\n\r\n", "\n<P>", $message);
        $date = date("Y.m.d -- H:i:s");
        $message = "<B>$name</B> -- $date<P> $message <BR><HR>";

    $message=emotki($message);
        $fp = fopen ("komentarz.txt", "a");
        fwrite ($fp, $message);
        fclose ($fp);
    Header('Location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    Die();
        }
?>

<FORM method="post">
<b>Twoje imie (lub ksywa):</b><BR><INPUT name="name" type="text" size="55"><BR>
<b>Twoj komentarz:</b><BR><TEXTAREA name="message" rows=10 cols=55 wrap=virtual>
</TEXTAREA><BR>
<INPUT name="submit" type="submit" value="Dodaj komentarz">
</FORM>
<HR>
<table border="2" cellspacing="30" cellpadding="20" width="100%">
<tr>
<td>
<?

@ $wp = fopen("komentarz.txt", 'r');

 if (!$wp)
 {
   echo 'nie ma jeszcze zadnego komentarza';
   exit;
 }

 while (!feof($wp))
 {
   $spis = fgets($wp, 999);
   echo $spis.'<br />';
 }

 fclose($wp);

?>
</td>
</tr>
</table>
<A href="#top"><P ALIGN="right">do góry</P></A>

Pozostało 580 znaków

2006-12-27 13:13
0

Ale co Ci tu dokładnie nie działa?


homepage
<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>

Pozostało 580 znaków

2006-12-27 15:27
0
  • emotki
  • czytanie rekordów od końca (czyli żeby świeże komentarze były u góry a nie na dale jak zawsze)

Pozostało 580 znaków

2006-12-27 22:20
0

komentarze:
-zamiast wykonywac x razy echo najlepiej polaczyc te komentarze do jednej zmiennej, a potem wyswietlic jej zawartosc.

emotki:
czy ten kod jest urwany? co to ma byc ta druga linijka?

Pozostało 580 znaków

2006-12-28 00:01
0

no ja juz sam nie wiem co tu z tego wyszło :-( próbowałem takie trzy skrypty ze soba jakoś połączyć:

1- komentarze

<?
if ($message)
{
        $name = strip_tags($name);
        $message = strip_tags($message);
        $message = ereg_replace("\r\n\r\n", "\n<P>", $message);
        $date = date("Y.m.d -- H:i:s");
        $message = "<B>$name</B> -- $date<P> $message <BR><HR>";
        $fp = fopen ("komentarz.txt", "a");
        fwrite ($fp, $message);
        fclose ($fp);
    Header('Location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    Die();
        }
?>

<FORM method="post">
<b>Twoje imie (lub ksywa):</b><BR><INPUT name="name" type="text" size="55"><BR>
<b>Twoj komentarz:</b><BR><TEXTAREA name="message" rows=10 cols=55 wrap=virtual>
</TEXTAREA><BR>
<INPUT name="submit" type="submit" value="Dodaj komentarz">
</FORM>

<HR>
<[email protected]("komantarz.txt", "a");?>

2 - emotki:

function emotki($string)
{
$emotikony = array(":-)" => "1.gif", ":-|" => "2.gif", ":-(" => "3.gif", ":-]" => "4.gif");
foreach($emotikony as $text => $grafika) $string = str_replace($text,'<img src="'.$grafika'"/>',$string);

return $string;

}

3 - odczyt pliku od tyłu:

<?

@ $wp = fopen("komentarz.txt", 'r');

 if (!$wp)
 {
   echo 'nie ma jeszcze zadnego komentarza';
   exit;
 }

 while (!feof($wp))
 {
   $spis = fgets($wp, 999);
   echo $spis.'<br />';
 }

 fclose($wp);

?>

ale nic z tego nie wyszło:(
może ktoś to połączy żeby działało. Bo ja nie wiem jak :-(

Pozostało 580 znaków

2006-12-28 01:46
0

komentarze:

  • zobacz druga linijke. mamy tam instrukcje warunkowa, ktora sprawdza wartosc logiczna zmiennej $message. w zwiazku z tym, ze zmienna ta nie byla nigdzie wczesniej utworzona, jej wartosc logiczna to false, czyli dalsza czesc tego skryptu nei jest wykonywana.

emotki:
tak bez wnikania, to kod chyba dobrze jest napisany. brakuje tylko wykorzystania tej funkcji przy odczytywaniu komentarzy

odczyt pliku od tylu:
sposob w jaki odczytujesz plik nie ma nic do rzeczy. wazne jest w jaki sposob wyswietlasz te dane.
nie potrzebnie wyswietlasz dane od razu po ich odczytaniu. naduzywasz przez "echo" (wydulza to czas dzialania skryptu), a kolejnosc tych komentarzy jest zgodna z kolejnosci odczytywania ich z pliku (tego nie chcemy). musisz zastapic linijke z wyswietlajaca komentarz, kodem, ktory bedzie dodawal do jednej zmiennej kazdy komenatrz, tak, zeby byly w naszej ustalonej kolejnosci. dopiero po wykonaniu petli while zostanie wyswietlona zawartosc tej zmiennej.

sorry ze nie daje ci gotowego rozwiazania, ale:

  1. nie chce mi sie
  2. jezeli chcesz sie nauczyc czegos z php musisz sam myslec.

Pozostało 580 znaków

2006-12-28 12:38
0

co do komentarzy to chyba poprawką dla !register_globals może być linijka na początku:

$message = empty($_POST['message']) ? false : $_POST['message'];

Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-12-28 17:57
0
$wp = fopen("komentarz.txt", 'r');

proponuje zamienic na

$wp = file("komentarz.txt");
$wp = array_reverse($wp);
//wypisanie danych

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0