Gå til innhold

Shoutbox fyller opp siden


Anbefalte innlegg

Heisann.

 

Bruker ett simpelt shoutbox script:

"addshout.php"

<?php

 /* -------------------------------------------------------

                          ShoutBox v1.1
                    By: Mark Lethbridge, 2007

    -------------------------------------------------------

    Install notes:
    Only thing that needs to be changed in this file is the 
    line: $shoutbox_page = "index.php";
    You simple change "index.php" into the correct page
    that the shoutbox will appear in.

    -------------------------------------------------------- */

  $fp = fopen("shouts.txt","a");
  fwrite($fp,$_POST['user'].":".$_POST['shout']."\n");
  fclose($fp);
  $shoutbox_page = "index.php";
  header("Location: $shoutbox_page");

?>

 

"index.php"

<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>

<//------- Start copying from this point -------->

<table class="shoutBox">
<tr><td class="shoutBox">
<p class="heading"><b>.:Brøleboksen:.</b></p>
<p>
<?php 

 $fp = fopen("shouts.txt","r");
 while(($shout = fgetcsv($fp,1000,":")) !== FALSE) {
  
    echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
 }

 fclose($fp);
?>
</p>
<hr>
<center>
<form name="shoutForm" method="POST" action="addShout.php">
Name: <input type="text" name="user" size="15"><br>
Shout: <input type="text" name="shout" size="15"><br>
<input type="submit" value="Brøl det ut!">
</center>
</form>
</td></tr>
</table>

<//------- Finish copying from this point -------->

</body>
</html>

 

Alt blir lagret i en txt fil...

 

Problemet er at etterhvert så blir det en del som blir lagt ut, mens shoutboxen bare fortsetter og bre seg nedover siden... Kan man sette inn en sperre så bare de 5 siste viser?

Lenke til kommentar
Videoannonse
Annonse

Vel, Ståle... I ditt eksempel, vil vel $shout være ukjent, pluss at hvis den hadde vært kjent, så ville bare de 5 første innleggene bli vist...

 

Prøv dette:

$file = file("shouts.txt");
$last = array_reverse($file);
for($i=0;$i<5;$i++) {
   $shout = explode(":", $last[$i]);
   echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
}

evt

$file = file("shouts.txt");
$ant = count($file);
for($i=$ant;$i>$ant-5;$i--) {
   $shout = explode(":", $file[$i-1]);
   echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
}

Alt utestet....

Endret av kakkle
Lenke til kommentar

Hehe...

 

Har du litt mer informasjon om hva som skjer ? Jeg vil tro at den øverste koden er greiest.

Evt for å debugge, kan du skrive ut :

echo "<pre>";
echo print_r($last);
echo "</pre>";

etter $last = $last = array_reverse($file);

og se om du får ut hver linje fra den siste til den første...

Hver linje bør vel se noe ala dette ut:

Bruker: Rop

 

EDIT: Testet det kjapt hos meg, og funker kjempefint.

 

Du byttet ut:

 $fp = fopen("shouts.txt","r");
while(($shout = fgetcsv($fp,1000,":")) !== FALSE) {

   echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
}

fclose($fp);

med:

$file = file("shouts.txt");
$last = array_reverse($file);
for($i=0;$i<5;$i++) {
  $shout = explode(":", $last[$i]);
  echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
}

Jeg ville også lagt denne delen inn i test som sjekker om filen finnes:

if(file_exists("shouts.txt")) {
 $file = file("shouts.txt");
 $last = array_reverse($file);
 for($i=0;$i<5;$i++) {
    $shout = explode(":", $last[$i]);
    echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
 }

Endret av kakkle
Lenke til kommentar

Tror nok jeg setter det sammen litt feil her...

 

<?php

 /* -------------------------------------------------------

                          ShoutBox v1.1
                    By: Mark Lethbridge, 2007

    -------------------------------------------------------

    Install notes:
    Only thing that needs to be changed in this file is the 
    line: $shoutbox_page = "index.php";
    You simple change "index.php" into the correct page
    that the shoutbox will appear in.

    -------------------------------------------------------- */

$file = file("shouts.txt");
$last = array_reverse($file);
echo "<pre>";
echo print_r($last);
echo "</pre>";
for($i=0;$i<5;$i++) {
 $shout = explode(":", $last[$i]);
 echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
}
if(file_exists("shouts.txt")) {
$file = file("shouts.txt");
$last = array_reverse($file);
for($i=0;$i<5;$i++) {
   $shout = explode(":", $last[$i]);
   echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
}
?>

Lenke til kommentar

Okei.. du har misforstått litt her. Filen du skal endre på, er index.php, og ikke addshout.php.

 

Legg merke til hvilken del du skal bytte ut

 

Og den siste koden jeg la inn, er en kode som er istedetfor den jeg skrev først. For å sjekke at filen finnes. Dersom filen ikke finnes, så får du opp en feilmelding, uten denne sjekken.

 

og den print_r og <pre> saken, var kun ment for å sjekke at variabelen inneholder noe...

 

Uansett. Glem nå alt som jeg skrev over og les under ;) :

 

i filen index.php, bytt ut:

<?php

$fp = fopen("shouts.txt","r");
while(($shout = fgetcsv($fp,1000,":")) !== FALSE) {

   echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
}

fclose($fp);
?>

med:

<?php
if(file_exists("shouts.txt")) {
 $file = file("shouts.txt");
 $last = array_reverse($file);
 for($i=0;$i<5;$i++) {
   $shout = explode(":", $last[$i]);
   echo "<b>".$shout[0]." : </b>".$shout[1]."<br>";
 }
}
?>

 

Bare spør igjen, dersom det var utydelig. Bedre å spørre en gang for mye enn en gang for lite.

 

Spør også dersom du har problemer med å forstå hva som skjer. Alltid veldig greit å skjønne hva som skjer i koden. Da blir det enklere å bruke lignende i andre sammenhenger.

 

EDIT: Manglet en } i koden :(

 

Det gjør forresten ikke noe om filen ikke finnes, den vil bli opprettet, så snart noen legge inn "et rop" :)

 

EDIT 2: Ser forresten at mitt forrige innlegg om "delen i testen" er dårlig formulert, så det beklager jeg. Skulle også spesifisert hvilken fil du skulle editere...

Endret av kakkle
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...