webForumDet fria alternativet

PHP-dagbok/gästbok-hur svårt är det?

PHP

12 svar · 725 visningar · startad av Knäcke

Medlem sedan jan. 200597 inlägg
Frågan#1

Jag skulle vilja ha en dagbok och gästbok i php. Problemet är att jag inte har någon kunskap om php så jag undrar om det är svårt? Eller kan jag som nybörjare klara av detta med?
Jag har lite koll på script och kodning men inte så jag kan skapa egna.

Är det hopplöst tror ni? Ser att minsta 10-åringar minsann har både dagböcker och gallerier/gästböcker i php så jag borde ju kunna med ;)

Alla tips är välkomna-php är ju bara SÅ snyggt dessutom!

Medlem sedan dec. 2004225 inlägg
#2

Mja, för att göra det så enkelt som möjligt, kan vi väl börja med att skapa databas-tabellen. Den kan se ut som följande:

ID - [i]int[/i] - autoincrement
Name - [i]varchar[/i]
Email - [i]varchar[/i]
Guestbook - [i]longtext[/i]
Written - [i]datetime[/i]
IP - [i]varchar[/i]

Nu när vi har tabellen är det bara att sätta igång och koda. Vi börjar med formuläret:

<form method="post" action="">
<p>

<table cellspacing="0" cellpadding="2" style="border: none;">
<tr>
<td><b>Namn:</b></td>
<td><input type="text" name="name" size="30" /></td>
</tr>
<tr>
<td><b>Email:</b></td>
<td><input type="text" name="email" size="30" /></td>
</tr>
<tr>
<td><input type="hidden" name="type" value="1" /></td>
<td><textarea name="guestbook" cols="30" rows="50" style="width: 300px; height: 120px;"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" value="Skriv i gästboken" /></td>
</tr>
</table>

</p>
</form>

Vilket är väldigt enkelt uppbyggt. Som du ser har jag en hidden-input med. Detta för att förenkla senare när du lägger till datan i tabellen. Du får se...
Så, då sparar vi helt enkelt koden i databasen.

if($_POST[type] == 1) {

	$written = date("Y-m-d H:i:s");
	$ip = getenv("REMOTE_ADDR");

	mysql_query("INSERT INTO guestbook (Name, Email, Guestbook, Written, IP) VALUES ('$_POST[name]','$_POST[email]','$_POST[guestbook]','$written','$ip')") or die(mysql_error());
	Header("Location: guestbook.php?");

}

Som du ser så har jag en if-sats som kollar om den inputen som var hidden har värdet 1, och det har den, alltså kör den koden mellan klamrarna {}. Och koden är inte så mycket att skriva om, den lägger helt enkelt till data i tabellen och sedan skickar vidare besökaren till guestbook.php? så att formulärdatan försvinner. Om du inte haft Headern där så hade datan lagts till igen om du uppdaterat sidan (enkelt beskrivet).
Nå, då ska vi loopa ut alla poster, detta görs t.ex. genom att skriva såhär:

$S_GUESTBOOK = mysql_query("SELECT * FROM guestbook ORDER BY ID DESC") or die(mysql_error());
while($row = mysql_fetch_array($S_GUESTBOOK)) {

	echo '
	<table cellspacing="0" cellpadding="2" style="border: none; width: 400px;">
	<tr>
	<td style="width: 200px;"><a href="mailto:'.$row['Email'].'">'.$row['Name'].'</a></td>
	<td>'.$row['Written'].'</td>
	</tr>
	<tr>
	<td colspan="2">'.$row['Guestbook'].'</td>
	</tr>
	</table>
	<br />
	';

}

Så! Nu har du en färdig gästbok! Tänk på att det INSERT-koden ska ligga överst på sidan, innan all HTML-kod. Annars får du strul med Headern.

Medlem sedan jan. 200597 inlägg
#3

Tack men dessvärre verkar detta lite väl knepigt för mig....Har pluggat lite C och html men kan inte koda själv. Vad ska de olika koderna här ovan ha för filtillägg? Och hur många filer ska det vara? Eller ska jag bara klistra in i min html kod?

Jag har kikat lite på php på "hotscripts.com". Där finns ju olika gästböcker-men jag förstår inte i vilken ordning jag ska göra allt-samt vilka filer som ska skickas upp var. Kan du guida mig lite längre fram på vägen?

Medlem sedan juni 20034 013 inlägg
#4

Kanske min lilla guide kan vara till hjälp:
http://www.tydal.nu/se/dev/mysql.html

Medlem sedan juni 20034 013 inlägg
#5

Filerna ska ha tillägget .php

Filerna är helt vanliga html-filer, men med inslag av php-kod mellan <? och ?>

Exempel:

Vanlig html-fil: (test.html)

<html>
<body>
<h1>Hej!</h1>
</body>
</html>

Php-fil: (test.php)

<html>
<body>
<h1>
<? // Här kommer lite php-kod
echo("Hej!");
?>
</h1>
</body>
</html>

Medlem sedan dec. 2004225 inlägg
#6

Jaha, självklart. Ovanstående kod räcker med att du klistrar in i ett dokument som heter guestbook.php, däremot är det att rekommendera att du har databaskopplingen i en separat fil så du slipper skriva den 10 ggr om, i varje dokument du använder den i, sen är det så enkelt att man bara inkluderar den på respektive sida du ska använda. Så här kan guestbook.php se ut:

<?
include('config.php'); // Filen med databaskopplingen i
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
<head>

	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<!-- no cache headers -->
	<meta http-equiv="Pragma" content="no-cache" />
	<meta http-equiv="Expires" content="-1" />
	<meta http-equiv="Cache-Control" content="no-cache" />
	<!-- end no cache headers -->
	<meta name="keywords" content="" />
	<meta name="description" content="" />
	<meta http-equiv="MSThemeCompatible" content="Yes" />
	<title>Gästbok</title>

	<!-- javascript elements -->
	<script type="text/javascript">

	</script>

	<!-- css elements -->
	<style type="text/css">

	</style>

</head>
<body>

<?
if($_POST[type] == 1) {

	$written = date("Y-m-d H:i:s");
	$ip = getenv("REMOTE_ADDR");

	mysql_query("INSERT INTO guestbook (Name, Email, Guestbook, Written, IP) VALUES ('$_POST[name]','$_POST[email]','$_POST[guestbook]','$written','$ip')") or die(mysql_error());
	Header("Location: guestbook.php?");

}
?>

<form method="post" action="">
<p>

<table cellspacing="0" cellpadding="2" style="border: none;">
<tr>
<td><b>Namn:</b></td>
<td><input type="text" name="name" size="30" /></td>
</tr>
<tr>
<td><b>Email:</b></td>
<td><input type="text" name="email" size="30" /></td>
</tr>
<tr>
<td><input type="hidden" name="type" value="1" /></td>
<td><textarea name="guestbook" cols="30" rows="50" style="width: 300px; height: 120px;"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" value="Skriv i gästboken" /></td>
</tr>
</table>

</p>
</form>

<br />

<?
$S_GUESTBOOK = mysql_query("SELECT * FROM guestbook ORDER BY ID DESC") or die(mysql_error());
while($row = mysql_fetch_array($S_GUESTBOOK)) {

	echo '
	<table cellspacing="0" cellpadding="2" style="border: none; width: 400px;">
	<tr>
	<td style="width: 100px;"><a href="mailto:'.$row['Email'].'">'.$row['Name'].'</a></td>
	<td>Postades '.$row['Written'].'</td>
	</tr>
	</table>

	<table cellspacing="0" cellpadding="2" style="border: none; width: 400px;">
	<tr>
	<td colspan="2">'.nl2br($row['Guestbook']).'</td>
	</tr>
	</table>
	<br />
	';

}
?>

</body>
</html>

Och config.php kan se ut så här:

<?
$databas = 'databas'; // namnet på den databas tabellen guestbook ligger i
$anvandarnamn = 'username; // användarnamnet för mysql-databasen
$losenord = 'password'; // lösenordet för mysql-databasen
mysql_connect('localhost', $anvandarnamn, $losenord) or die (mysql_error());
mysql_select_db($databas) or die (mysql_error());
?>

Bara att fråga om det är något annat, lycka till!

Medlem sedan jan. 200597 inlägg
#7

Tack-nu har jag lite att bita i :) Ser fortfarande knepigt ut men det är bara att kasta sig in i det så tror jag det klarnar. KOmmer tillbaka med resultat-tack snälla sålänge :)

Medlem sedan jan. 200597 inlägg
#8

:q Nääe jag fattar inte detta alls :(
Vilka filer ska sparas var? Jag har MySQL men vad ska jag skicka upp dit? Är van att förhandstitta innan jag skickar upp via ftp men hur förhandskikar man på php-filer?
Jag har ingen som helst kunskap om MySQL och förstår inte hur det fungerar....Vare sig hur man skickar upp filer eller vilka filer som ska skickas upp...

Råd typ
1.....
2......
3....

hade kanske fått mig att förstå ;) Hjääälp för jag vill så gärna lära mig detta :D

Medlem sedan juni 20034 013 inlägg
#9

För att kunna förhandskika på php-filer måste du ha php installerat hemma. Det enklaste är därför att du bara laddar upp dem och kikar på dem online.

Vad det gäller MySQL så är det inga filer du skickar upp, utan istället "pratar" man med MySQL och säger åt den att göra saker. Detta gör du enklast med php-kod.

Kanske enklare att ta det här över ICQ? Jag har 1431981

Medlem sedan jan. 200597 inlägg
#10

Laddar upp dem var? Och hur hittar jag var jag ska lägga mina filer på SQL? Ska jag inte ens skicka upp några filer till SQL fattar jag än mindre.... :( Fattar fortfarande inte...tyvärr...

Använder inte ICQ längre men min MSN är svenska_knackehaxan@hotmail.com

Medlem sedan juni 20034 013 inlägg
#11

Php-filer är precis som html-filer. Du laddar upp dem i den katalog du vill ha dem och sen skriver du adressen till dem i webbläsaren för att titta på dem.

Du styr SQL från PHP, så du skriver alltså SQL-koden i Php. Så egentligen behöver du inte bry dig om MySQL så mycket, utan det är php-kod allting.

Jag har ttydal@hotmail.com men vad jag kan se är du inte online nu.

Medlem sedan dec. 2004225 inlägg
#12

Såg just att jag gjort en tabbe genom att skriva ut html-kod innan Headern, så här ska det se ut:

<?
include('config.php'); // Filen med databaskopplingen i

if($_POST[type] == 1) {

	$written = date("Y-m-d H:i:s");
	$ip = getenv("REMOTE_ADDR");

	mysql_query("INSERT INTO guestbook (Name, Email, Guestbook, Written, IP) VALUES  ('$_POST[name]','$_POST[email]','$_POST[guestbook]','$writte
n','$ip')") or die(mysql_error());
	Header("Location: guestbook.php?");

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
<head>

	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<!-- no cache headers -->
	<meta http-equiv="Pragma" content="no-cache" />
	<meta http-equiv="Expires" content="-1" />
	<meta http-equiv="Cache-Control" content="no-cache" />
	<!-- end no cache headers -->
	<meta name="keywords" content="" />
	<meta name="description" content="" />
	<meta http-equiv="MSThemeCompatible" content="Yes" />
	<title>Gästbok</title>

	<!-- javascript elements -->
	<script type="text/javascript">

	</script>

	<!-- css elements -->
	<style type="text/css">

	</style>

</head>
<body>

<form method="post" action="">
<p>

<table cellspacing="0" cellpadding="2" style="border: none;">
<tr>
<td><b>Namn:</b></td>
<td><input type="text" name="name" size="30" /></td>
</tr>
<tr>
<td><b>Email:</b></td>
<td><input type="text" name="email" size="30" /></td>
</tr>
<tr>
<td><input type="hidden" name="type" value="1" /></td>
<td><textarea name="guestbook" cols="30" rows="50" style="width: 300px; height: 120px;"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Skriv i gästboken" /></td>
</tr>
</table>

</p>
</form>

<br />

<?
$S_GUESTBOOK = mysql_query("SELECT * FROM guestbook ORDER BY ID DESC") or die(mysql_error());
while($row = mysql_fetch_array($S_GUESTBOOK)) {

	echo '
	<table cellspacing="0" cellpadding="2" style="border: none; width: 400px;">
	<tr>
	<td style="width: 100px;"><a href="mailto:'.$row['Email'].'">'.$row['Name'].'</a></td>
	<td>Postades '.$row['Written'].'</td>
	</tr>
	</table>

	<table cellspacing="0" cellpadding="2" style="border: none; width: 400px;">
	<tr>
	<td colspan="2">'.nl2br($row['Guestbook']).'</td>
	</tr>
	</table>
	<br />
	';

}
?>

</body>
</html>
Medlem sedan jan. 200597 inlägg
#13

Oklidoki-jag kämpar vidare-ni e snälla ni :) Addar tydal nu-kommer online lite senare så kan vi kanske ta en 1 2 3 ;) Men jag börjar fatta litegrann :)

277 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)