Gå til innhold

antall meldinger i gjestebok


Anbefalte innlegg

Videoannonse
Annonse

Han seier jo at han HAR database men fatter ingen ting av det... Då må jo svaret være at han ikkje klarer å bruke database og dermed bruker textfiler...

 

Men det hadde vore greit å veta om inlegga blir lagra i EI tekst-fil eller ei fil per inlegg...

 

Det kan bli vanskelig visst alle inlegga er i ei fil utan at det er skreve som XML. Hadde det vore i XML-utgave hadde det bare vore å parse det heile med PHP

Lenke til kommentar

Hvis hvert innlegg lagres på en linje. Kan du bare telle ant linjer for å få antall meldinger.

Eks:

Antall meldinger:

$readfile = file("gjestebok.txt");
$antallmeldinger = count($readfile);
print "Det er $antallmeldinger i gjesteboka";

For å vise ti meldinger pr side:

$mldprside = 10;
if(isset($_GET["start"])) {
 $start = $_GET["start"];
}
else {
 $start = 0;
}
$readfile = file("gjestebok.txt");
$antallmeldinger = count($readfile);
if($start + antprside > $antallmeldinger) {
 $antprside = $antallmeldinger - $start;
}
$teller = $start;
while($teller < $antprside) {
 $linjesomskalskrivesut = $readfile[$teller];
 // Skriv ut hilsninger
 $teller++;
}
$neste = $start+$antprside;
$forrige = $start-$antprside;
print "<a href='?start=$forrige'>forrige side</a>";

 

Det spørs egentlig veldig hvordan tekstfilen er byg opp. Dersom det er en hilsen pr. linje, separert av et skilletegn, kan du hente hver verdi slik(legges inn i et array):

$felt = explode("skilletegn", $readfile[$teller]); // Legges inn i whileløkka

 

Koden er ikke testet, og inneholder sikkert masse feil, men jeg mener det bør fungere i prinsippet.

 

/Kakkle

Lenke til kommentar

Faktisk så ser jeg her at den lagres i en .inc fil <?php include("innlegg.inc");?> Skulle jeg da ha endret den til txt fil? En ting til jeg lurer på, om du vet hvordan man lager en side der man kan redigere/slette innlegg?

Lenke til kommentar

trenger ikke bytte navn til .txt. Bare bytt om på filnavnet i scriptet til innlegg.inc.

Hvordan er innleggene lagt inn i tekstfilen ? 1 innlegg pr. linje, eller et felt pr linje ?

eks på innlegg pr linje:

id|navn|email|home|hilsen|dato

12|arne|[email protected]|arne.com|hei|12.04.2007

13|arne|[email protected]|arne.com|hei, igjen|13.04.2007

 

Her er det "|" som skiller feltene...

 

Eksempel på felt pr linje:

12

arne

[email protected]

arne.com

hei

12.04.2007

13

arne

[email protected]

arne.com

hei, igjen

13.04.2007

 

Her er det "\n"(linjeskift) som skiller feltene.

 

Prøv først å få til dette før du lager rediger / slette funksjon. Etter du har gjort gjort dette, kan du kanskje klare å endre og slette innlegg selv. Tips. Se på sidene på php.net om filbehandling:

http://no.php.net/manual/en/ref.filesystem.php

 

EDIT: La inn hva som er skilletegn

/Kakkle

Endret av kakkle
Lenke til kommentar

Slik er det lagt inn:

 

$innlegg = "<!--innlegg start-->\n";

$innlegg .= "<center><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n

<center><tr valign=\"top\">\n

<td align=\"left\" width=\"150\" bgcolor=\"#EEEBFF\"><p><font face=\"verdana\" size=\"2\">Navn: <b>$navn</b></p></td>\n

<td align=\"left\" width=\"290\" bgcolor=\"#EEEBFF\"><p><font face=\"verdana\" size=\"1\">$dato Klokken $klokke</p></td>\n

</tr>\n

</table>\n

<center><table border=\"0\">\n

<tr valign=\"top\">\n

<td align=\"left\" width=\"440\"><p><font face=\"verdana\" size=\"2\">$ferdig_hilsen</p></td>\n

</tr>\n

</table>\n

<center><table border=\"0\">\n

<tr valign=\"top\">\n

<td align=\"left\" width=\"250\"><a href=\"$hjemmeside\"><p> <img src=\"inc/g_br.gif\"></a>

<a href=\"mailto:$mail\"><img src=\"inc/g_em.gif\"></p></a></td>\n

</tr>\n

</table>\n";

$innlegg .= "<br>\n";

$innlegg .= "<!--/innlegg slutt-->\n";

Lenke til kommentar

<!--innlegg start-->

<center><table border="0" cellspacing="0" cellpadding="0">

 

<center><tr valign="top">

 

<td align="left" width="150" bgcolor="#EEEBFF"><p><font face="verdana" size="2">Navn: <b>André</b></p></td>

 

<td align="left" width="290" bgcolor="#EEEBFF"><p><font face="verdana" size="1">26/08-04 Klokken 14.33</p></td>

 

</tr>

 

</table>

 

<center><table border="0">

 

<tr valign="top">

 

<td align="left" width="440"><p><font face="verdana" size="2">Test</p></td>

 

</tr>

 

</table>

 

<center><table border="0">

 

<tr valign="top">

 

<td align="left" width="250"><a href="http://www.kibk.com"><p> <img src="inc/g_br.gif"></a>

<a href="mailto:[email protected]"><img src="inc/g_em.gif"></p></a></td>

 

</tr>

 

</table>

<br>

<!--/innlegg slutt-->

Lenke til kommentar

Siden <!--innlegg start--> er før hvert innlegg, kan du telle antall forekonster av denne tenksten, for å få antall innlegg, men da må du først åpne filen med funksjonen file(), og telle antall <!-- innlegg start-->

 

Paging blir vanskelig når du inkluderer filen.

 

Antall filer:

$readfile = file("innlegg.inc");
$ant = count($readfile);
antpost=0;
for($i=0; $i<$ant;$i++) {
 if(stripos($readfile[$i], "<!-- innlegg start-->")) {
    antpost++;
 }
}
print "Det er $antpost innlegg i gjesteboka";

Kanskje det funker...

/Kakkle

Endret av kakkle
Lenke til kommentar

Du bør kanskje bare lagre dataen i ei fil, f.eks slik:

navn|email|url|hilsen|dato

her skiller da | mellom de forskjellige feltene. Kan bruke hvilken som helst separator, men husk at dersom noen bruker denne separatoren i tekstfelt, eller noe, kan det føre til feil i lesing fra filen. Du bør derfor velge noe som ikke er vanlig å skrive inn, som du eventuelt kan erstatte. | kan for eksempel erstattes med l eller I. Selv om det ikke blir det samme.

 

Når det gjelder id, kan du velge å ha en id, eller kun bruke linjenr. linjenr, vil det bli endret dersom du sletter en post el.

 

Lagre data:

$navn = str_replace("|", "l", $_POST["navn"]);
$email = str_replace("|", "l", $_POST["email"]);
$url = str_replace("|", "l", $_POST["url"]);
$hilsen = str_replace("|", "l", $_POST["hilsen"]);
$dato = date("d/m -Y");
$innlegg = "$navn|$email|$url|$hilsen|$dato\n"; //Husk \n til slutt, slik at det kommer linjeskift etter dato.
$writefile = fopen("innlegg.txt", "a"); // a er append, eller legg til
fputs($writefile, "$innlegg");
fclose($writefile);

Dette forutsetter et form som sender info med post, og har felt med navn, "navn", "email", "url", "hilsen". Dersom filen ikke finnes fra før, blir den opprettet.

 

Filen innlegg.txt må ha lese og skrive rettigheter for alle (chmod 0777).

 

Skrive ut innleggene:

if(!file_exists("innlegg.txt")) {
 print "Ingen innlegg er lagt inn";
}
else {
$readfile = file("innlegg.txt");
$ant = count($readfile);
$i = $ant-1; // i settes til antall innlegg, for å skrive ut det siste innlegget først.
while($i > 0) {
 $felt = explode("|", $readfile[$i]);
 $navn = $felt[0];
 $email = $felt[1];
 $url = $felt[2];
 $hilsen = $felt[3];
 $dato = $felt[4];
 print "<p>$navn<br>$dato<br>$email<br>$url<br>$hilsen</p><hr>";
 $i--;'
}
}

 

Trur det skal fungere. Men det er ikke testet, og er nok noen småfeil noenplasser.

Anbefaler deg å prøve å finne ut av sletting og redigering selv. Tips. Se på funksjonene, fopen, fputs, fclose, str_replace hos www.php.net

 

/Karl M

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...