[PHP] Hjälp med diverse frågor om GB

Permalänk
Medlem

[PHP] Hjälp med diverse frågor om GB

Hej alla!

Är rätt nybörjare på PHP så jag skulle behöva lite hjälp med att få ihop nått! Så här ser koden ut:

<HTML>
<HEAD>
<TITLE>Skriv i min fina gästbok</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFCC">
<H1>Välkommen till min gästbok</H1>
<HR>
<!-- Allt här ovan kan du lätt redigera så att det passar din
hemsida - nu börjar php-koden -->
<?
$filename = "guestbook.txt";
// se till att filnamnet här ovan stämmer med den textfil du gjort

if ($name) {
$message = str_replace("<", "<", $message);
$message = str_replace(">", ">", $message);
$message = str_replace("\n", "<br>\n", $message);

// Se till att http:// finns i url:en.
if (!(substr($url, 0, 7) == "http://"))

$url = "http://" . $url;

// Öppna filen i "append"-läge
if ($fd = (fopen($filename, "a"))) {
// Skriv i filen
fwrite($fd, "Från: <b>$name</b><br>\n");
fwrite($fd, "E-post: <a href=\"mailto:$email\">$email</a><br>\n");
fwrite($fd, "URL: <a href=\"$url\">$url</a><p>\n");
fwrite($fd, $message);
fwrite($fd, "\n<hr>\n");
fclose($fd);
} else {
print("<B>ERROR: cannot open $filename for writing\n");
}

}

// Öppna filen i "read"-läge
if ($fd = (fopen($filename, "r"))) {
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
// Skriv ut filen i html-dokumentet
print($contents);
} else {
print("<B>ERROR: cannot open $filename for reading\n");
}
?>
<FORM ACTION="guestbook.php" METHOD="POST">
// se till att filnamnet ovan är korrekt.
<TABLE>
<TR>
<TD>Namn: </TD>
<TD>
<INPUT type=text size=50 name=name>
</TD>
</TR>
<TR>
<TD>E-post: </TD>
<TD>
<INPUT type=text size=50 name=email>
</TD>
</TR>
<TR>
<TD>URL: </TD>
<TD>
<INPUT type=text size=50 name=url>
</TD>
</TR>
</TABLE>
<TEXTAREA NAME="message" ROWS="15" COLS="80" STYLE="width:100%">
</TEXTAREA>
<P>
<INPUT type=submit VALUE="Lägg till!">
</FORM>
</BODY>
</HTML>

Som ni ser är detta ett gästbok men jag vill lägga till vissa funktioner.

* Först vill jag att användaren som besöker gästboken ska kunna ta bort inlägg, en knapp ska finnas vid varje inlägg som tar bort inlägget! Jag är medveten om att alla kommer kunna ta bort inlägg men så vill jag ha det!

* Det andra jag vill är något enklare! Senaste inlägg ska visas först helt enkelt!

Vore tacksam för alla råd och tips och som sagt jag är nybörjare på PHP så gärna lite utförligare svar önskas!

Tack på förhand!

/A

Visa signatur

Support: Klicka på Den Här Datorn i din översta vänstra hörn!
Kund: Från din eller min sida sett?

Permalänk
Medlem

Att använda text-filer till en avancerad gästbok är som att begå självmord, URK! Det funkar verkligen inte! DU måste skaffa dig en databas, mysql kanske(?).. vet du inte hur man gör.. så sök, för det där kommer inte funka i längden..! (säger inte att det är omöjligt, för inget är det..)

www.mysql.com
www.php.net/mysql

Visa signatur

~ When there's no more room in hell, the dead will walk the earth. ~

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Shark^
Att använda text-filer till en avancerad gästbok är som att begå självmord, URK! Det funkar verkligen inte! DU måste skaffa dig en databas, mysql kanske(?).. vet du inte hur man gör.. så sök, för det där kommer inte funka i längden..! (säger inte att det är omöjligt, för inget är det..)

www.mysql.com
www.php.net/mysql

Det kommer som max vara 10 inlägg per dag och txt filen ska rensas dagligen i princip! Behöver ingen databas för det! Jag ska själv inte rensa txt filen utan användare som inte är så hemma på datorer!

Visa signatur

Support: Klicka på Den Här Datorn i din översta vänstra hörn!
Kund: Från din eller min sida sett?

Permalänk
Medlem

Det är svårare att göra det där än att lära dig använda en databas, men lösningsförslag likförbannat:

DET HÄR GÄLLER FÖR BÅDA
a. Se till att veta hur många rader som tas upp för varje inlägg = x
b. Loopa igenom filen och stoppa sjok om x rader i varsitt array-element

1. Visa dem baklänges
a. Kör array_reverse
b. Skriv ut skiten
c. Skicka med ett ID för varje knapp brevid inlägget

2. Ta bort den aktuella positionen i arrayen som skickas med när du trycker på knappen.

Det där var luddigt, osäkert och lika läskigt som textfiler.

EDIT:

Tänk om strukturen i textfilen. Läs på lite lätt om XML vetja. Har du php5? Isåfall tycker jag du ska kika på SQLite.

Annars, spara liknande det här i textfilen:

namn:Jonas Carlsson; email:jonasc@gmail.com; url:http://jonasc.net; medelande:Bla bla bla bla bla Bla bla bla LOREM JÄKLA IPSUM;

Det blir lite lättare att splitta upp inläggen då.

Visa signatur

Brass knuckles and a 2x4

Permalänk
Medlem

jonasc, eftersom det inte finns en bestämd längd.. så är nog regex att föredra (preg_match_all)

84jr0 det är inte omöjligt att fixa, men det är inget jag då sätter mig ner och gör gratis.. men checka in preg_match_all .. och jag förutsätter att du vet hur arrays funkar.. och ett tips är att lägga in nått unikt i koden som du kan söka på! nått som du inte behöver ändra.. en html kommentar med i gästboken när du sparar

<!-- start //-> inlägg 1 <!-- slut //-> <!-- start //-> inlägg 2 <!-- slut //->

då skulle du kunna plocka ut inläggen med preg_match_all och ett regex liknande..

"/<!-- start \/\/->(.*?)<!-- slut \/\/->/"

Visa signatur

~ When there's no more room in hell, the dead will walk the earth. ~

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Shark^
jonasc, eftersom det inte finns en bestämd längd.. så är nog regex att föredra (preg_match_all)

84jr0 det är inte omöjligt att fixa, men det är inget jag då sätter mig ner och gör gratis.. men checka in preg_match_all .. och jag förutsätter att du vet hur arrays funkar.. och ett tips är att lägga in nått unikt i koden som du kan söka på! nått som du inte behöver ändra.. en html kommentar med i gästboken när du sparar

<!-- start //-> inlägg 1 <!-- slut //-> <!-- start //-> inlägg 2 <!-- slut //->

då skulle du kunna plocka ut inläggen med preg_match_all och ett regex liknande..

"/<!-- start \/\/->(.*?)<!-- slut \/\/->/"

Jodå, jag är på din våglängd
Dock tror jag inte trådskaparen är det, om man inte vill ha en databas lär man inte vara intresserad av att gnugga reg exps? Jag tycker inte att säga till nån som fortfarande gör gästböcker på det sättet att han ska ta och lära sig reguljära uttryck istället är så jäkla konstruktivt. Reguljära uttryck har en rätt hög inlärningströskel, håller du inte med om det?

Visa signatur

Brass knuckles and a 2x4

Permalänk
Hedersmedlem

jonasc: Fast nu har ju shark^ hjälpt honom en bra bit på traven när det gäller splittning av inläggen, så regexp behöver han ju inte tänka på...

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Shark^
jonasc, eftersom det inte finns en bestämd längd.. så är nog regex att föredra (preg_match_all)

84jr0 det är inte omöjligt att fixa, men det är inget jag då sätter mig ner och gör gratis.. men checka in preg_match_all .. och jag förutsätter att du vet hur arrays funkar.. och ett tips är att lägga in nått unikt i koden som du kan söka på! nått som du inte behöver ändra.. en html kommentar med i gästboken när du sparar

<!-- start //-> inlägg 1 <!-- slut //-> <!-- start //-> inlägg 2 <!-- slut //->

då skulle du kunna plocka ut inläggen med preg_match_all och ett regex liknande..

"/<!-- start \/\/->(.*?)<!-- slut \/\/->/"

Tackar för hjälpen ska se om jag kan klura fram det! Har aldrig programerat PHP men har skrivit lite VB-script...

Visa signatur

Support: Klicka på Den Här Datorn i din översta vänstra hörn!
Kund: Från din eller min sida sett?

Permalänk

kollade inte riktigt på koden, men ett litet tips är att du har "Allt här ovan kan du lätt redigera så att det passar din hemsida - nu börjar php-koden"-kommentaren inut php-taggarna, så syns de inte sedan i koden

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av vigge89
kollade inte riktigt på koden, men ett litet tips är att du har "Allt här ovan kan du lätt redigera så att det passar din hemsida - nu börjar php-koden"-kommentaren inut php-taggarna, så syns de inte sedan i koden

På den riktiga versionen har jag tagit bort dessa komentarer, koden är som några kanske känner igen från IDG! Den är oxå lite ändrad och ska funka som en informations sida där alla ska kunna läsa men bara vissa ska kunna skriva in informationen!

Visa signatur

Support: Klicka på Den Här Datorn i din översta vänstra hörn!
Kund: Från din eller min sida sett?

Permalänk

Har en liten gästbok som använder sig av en sql databas, som du kan användaifall du inte får textfilerna att funka om du vill. Den har smiley-funktion, loggar besökarens ip och vem som helst kan ta bort inlägg i gästboken. Smileys får du fixa själv och ändra namnen i länkningen.

Tabellen gastbok innehåller fälten "id, namn, epost, inlagg, ip, datum".. För att skapa tabellen kör du bara följande SQL-sats eller skapar den "manuellt"

CREATE TABLE `gastbok` (
`id` int(11) NOT NULL auto_increment,
`namn` varchar (100) NOT NULL,
`epost` varchar (100) NOT NULL,
`inlagg` text NOT NULL,
`ip` varchar (100) NOT NULL,
`datum` datetime NOT NULL,
PRIMARY KEY (`ID`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

gastbok.php

<?php <?php // Skriv in dina databas uppgifter $mysql_server = "hostname"; $mysql_user = "user"; $mysql_password = "password"; $mysql_database = "databas"; $conn = mysql_connect($mysql_server, $mysql_user, $mysql_password); mysql_select_db($mysql_database, $conn); ?> <?php if (isset($_GET['delete'])) { $sqlconn = "DELETE FROM gastbok WHERE id = " .$_GET['delete']; mysql_query($sqlconn); } ?> <?php if (isset($_POST['newmess'])) { $datum = date("Y-m-d H:i:s"); $ip = $_SERVER['REMOTE_ADDR']; $sql="INSERT INTO gastbok(namn,epost,inlagg,ip,datum) VALUES ('$_POST[namn]','$_POST[epost]','$_POST[inlagg]','$ip','$datum')"; mysql_query($sql) or die (mysql_error()); } ?> <table width="500" border="0"> <tr> <td> :) = <img src="smilies/lol.gif" width="15" height="15" title="Gapskratt"> </td> <td> :D = <img src="smilies/biggrin.gif" width="15" height="15" title="Jätteglad min"> </td> <td> :d = <img src="smilies/smile.gif" width="15" height="15" title="Glad min"> </td> <td> ;) = <img src="smilies/wink.gif" width="15" height="15" title="Blinkande glad min"> </td> </tr> <tr> <td> :B = <img src="smilies/cool.gif" width="15" height="15" title="Cool"> </td> <td> :X = <img src="smilies/mad.gif" width="15" height="15" title="Arg min"> </td> <td> :( = <img src="smilies/sad.gif" width="15" height="15" title="Ledsen min"> </td> <td rowspan="2"> :| = <img src="smilies/neutral.gif" width="15" height="15" title="Tänker"> </td> </tr> </table> <br><b>Gästbokskod:</b><br> Text Ger <b>Text</b><br> Text Ger <i>Text</i><br> Text Ger <u>Text</u><br><br> <form method="post" action="gastbok.php" name="matain" onSubmit="return skicka_OnClick();"> Namn:<br><input type="text" name="namn"><br> Epost:<br><input type="text" name="epost"><br> Inlägg:<br><textarea name="inlagg" rows="5" cols="30"></textarea><br> <br> <input type="submit" name="newmess" value="Skicka"> <input type="reset" value="Reset"> <br> <br> </form> <script language="JavaScript"> function skicka_OnClick() { var nam = document.matain.namn.value; var epo = document.matain.epost.value; var inl = document.matain.inlagg.value; if((nam.length != 0) && (epo.length != 0) && (inl.length != 0)) { return true; } else { alert("Alla fält är inte ifyllda!"); return false; } } </script> <?php include("smileys.php"); $sql = "SELECT * FROM gastbok ORDER BY datum DESC"; $result = mysql_query($sql) or die (mysql_error()); while ($data = @mysql_fetch_array($result)) { ?> <a href="mailto: <?=$data['epost']?>"><? echo $data['namn']?></a> <?php echo ' | '; echo $data['ip'].' | '; echo $data['datum'].' | '; ?> <a href="gastbok.php?delete=<?=$data['id']?>">Radera inlägg </a><br> <?php echo code($data["inlagg"]).'<br><br>'; } ?>

smilies.php

<? function code ($press) { $text = $press; $text = str_replace("\n","<br>",$text); $text = str_replace(":)","<img src='smilies/lol.gif' width='15' height='15'>",$text); $text = str_replace(":D","<img src='smilies/biggrin.gif' width='15' height='15'>",$text); $text = str_replace(":d","<img src='smilies/smile.gif' width='15' height='15'>",$text); $text = str_replace(";)","<img src='smilies/wink.gif' width='15' height='15'>",$text); $text = str_replace(":B","<img src='smilies/cool.gif' width='15' height='15'>",$text); $text = str_replace(":X(","<img src='smilies/mad.gif' width='15' height='15'>",$text); $text = str_replace(":(","<img src='smilies/sad.gif' width='15' height='15'>",$text); $text = str_replace(":S","<img src='smilies/confused.gif' width='15' height='15'>",$text); $text = str_replace(":|","<img src='smilies/neutral.gif' width='15' height='15'>",$text); $text = str_replace("[b]","<b>",$text); $text = str_replace("[/b ]","</b>",$text); $text = str_replace("[i]","<i>",$text); $text = str_replace("[/i ]","</i>",$text); $text = str_replace("[u]","<u>",$text); $text = str_replace("[/u ]","</u>",$text); return $text; } ?>

Edit: oops blev lite fel i smileys.php
Forumet använder ju sig också av [b] [ / b ] fast utan mellanslag. Så jag sätter dem med mellenslag så inte bold t.ex skrivs ut i forumet.

EDIT: Hade ju glömt skriva in databas kopplingen också.

Visa signatur

Så du söker den perfekta sidan om webbradio? Surfa då vidare till
http://www.radioworld.se
där finns allt du behöver veta om hur du drar upp en ström!

Permalänk
Medlem

Ska klura lite på sorteringen men hur fixar man en knapp som tar bort inlägget om man råkat skriva fel eller åtminstone redigera?

Visa signatur

Support: Klicka på Den Här Datorn i din översta vänstra hörn!
Kund: Från din eller min sida sett?

Permalänk
Citat:

Ursprungligen inskrivet av 84jr0
Ska klura lite på sorteringen men hur fixar man en knapp som tar bort inlägget om man råkat skriva fel eller åtminstone redigera?

Frågar du om mitt nu eller?

Visa signatur

Så du söker den perfekta sidan om webbradio? Surfa då vidare till
http://www.radioworld.se
där finns allt du behöver veta om hur du drar upp en ström!

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MittroSpaung
Frågar du om mitt nu eller?

Du kör med mysql verkar det som... jag kan inte göra så tyvärr på min webbserver

Visa signatur

Support: Klicka på Den Här Datorn i din översta vänstra hörn!
Kund: Från din eller min sida sett?

Permalänk
Citat:

Ursprungligen inskrivet av 84jr0
Du kör med mysql verkar det som... jag kan inte göra så tyvärr på min webbserver

Skaffa server på www.1go.dk ^^. Gratis och du får Mysql/php stöd. Textfiler är inte att föredra när man ska göra sånt där.

Visa signatur

Så du söker den perfekta sidan om webbradio? Surfa då vidare till
http://www.radioworld.se
där finns allt du behöver veta om hur du drar upp en ström!

Permalänk
Hedersmedlem

MittroSpaung: Som jag har förstått det så skapar han gästboken till någon annan och inte till honom själv...

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av m0REc
MittroSpaung: Som jag har förstått det så skapar han gästboken till någon annan och inte till honom själv...

Stämmer bra det! Att säga att det är gästbok är kanske lite fel! Bara vissa utvalda ska kunna skriva in där och alla andra ska kunna läsa! Sidan där man kan skriva är lösenords skyddad!

Visa signatur

Support: Klicka på Den Här Datorn i din översta vänstra hörn!
Kund: Från din eller min sida sett?