Andre3 Skrevet 25. august 2004 Del Skrevet 25. august 2004 Jeg har laget en gjestebok i php men får ikke til å vise antall meldinger innlagt. Så vil jeg gjerne har at en side kun vise 10 innlegg. Er det noen som kan hjelpe meg? Lenke til kommentar
Tha_Zaynt Skrevet 25. august 2004 Del Skrevet 25. august 2004 bruker du database eller tekstfil til å lagre meldingene i? Lenke til kommentar
Andre3 Skrevet 25. august 2004 Forfatter Del Skrevet 25. august 2004 Nei det gjør jeg ikke. Har database men fatter ingenting av det Lenke til kommentar
Loomy Skrevet 26. august 2004 Del Skrevet 26. august 2004 (endret) bruker du database eller tekstfil til å lagre meldingene i? Nei det gjør jeg ikke Bruker du db eller fil(er) til å lagre innleggene? Endret 26. august 2004 av Loomy Lenke til kommentar
knutoh Skrevet 26. august 2004 Del Skrevet 26. august 2004 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
Andre3 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 Ja det var litt dårlig forklart av meg. Men alt lagres i ei textfil. Lenke til kommentar
kakkle Skrevet 26. august 2004 Del Skrevet 26. august 2004 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
Andre3 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 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
kakkle Skrevet 26. august 2004 Del Skrevet 26. august 2004 (endret) 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 26. august 2004 av kakkle Lenke til kommentar
Andre3 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 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
kakkle Skrevet 26. august 2004 Del Skrevet 26. august 2004 (endret) Er det .inc filen ? Kan du kopiere innholdet i .inc filen, og lime det inn her ? Greit å se hvordan den er bygd opp... EDIT: Endret hele posten :-) Endret 26. august 2004 av kakkle Lenke til kommentar
Andre3 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 <!--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
kakkle Skrevet 26. august 2004 Del Skrevet 26. august 2004 (endret) 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 26. august 2004 av kakkle Lenke til kommentar
Andre3 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 Hvrodan skal jeg ellers gjøre det? Lenke til kommentar
kakkle Skrevet 26. august 2004 Del Skrevet 26. august 2004 (endret) 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 27. august 2004 av kakkle Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå