PHP gastenboek

Status
Niet open voor verdere reacties.

Demmit

Gebruiker
Lid geworden
18 mei 2008
Berichten
40
hallo,

ik probeer al een tijdje een simpel gasten boek te maken dat gekoppeld is aan SQLite.
ik heb al de volgende scripts:
INDEX:
PHP:
<html>
<head>
<title>Gastenboek</title>
</head>

<?php

	// Maak een SQLite3 database met PDO en geef een "database handle" terug (Object Oriented)

	try{

		$dbHandle = new PDO('sqlite:'.$_SERVER['DOCUMENT_ROOT'].'/../gastenboek.sqlite3');

	}catch( PDOException $uitzondering ){

		die($uitzondering->getMessage());

	}

	// Controleer of er al tabellen zijn
	$statement = $dbHandle->query('SELECT name FROM sqlite_master WHERE type = \'table\'');
	$result = $statement->fetchAll();
	if( sizeof($result) == 0 ){
		echo 'Geen tabel gevonden, die wordt nu aangemaakt.';

		// Maak tabel
		$sqlMaakTabel = 'CREATE TABLE gastenboek (ll_id INTEGER PRIMARY KEY AUTOINCREMENT, 
		naam CHAR(20), 
		email CHAR(50),
		bericht TEXT)';
		$dbHandle->exec($sqlMaakTabel); // remove or 'comment out' this line after first run
	}


	
	
?>








<body>
<h2>Het php-gastenboek</h2>
<ul>
	<li><a href="schrijf.php">
		Voeg iets toe</a></li>
	<li><a href="lees.php">
		Lees de berichten</a></li>
</ul>
<hr>
</body>
</html>


SCHRIJF:
PHP:
<html>
	<head>
		<title> Iets toevoegen </title>
	</head>
	<body>
		<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
		Naam : <input type="text" name="naam"><br>
		E-mailadres : <input type="text" name="email"><br>
		Bijdrage : <textarea cols="40" rows="6"
		Name="bijdrage"></textarea><br>
		<input type="hidden" name="datum"
		value="<?php echo date("d-m-Y - G:i");?>">
</hr>
<input type="submit" value= "Bijdrage verzenden">
<input type="reset" name="reset" value="Velden leegmaken"><br>
<a href="index.php">Terug naar de homepage</a>
</form>
</body>
</html>



alvast bedankt:thumb:
 
En wat moeten wij hiermee? Je plaatst de code en dat is het?

Blijkbaar gaat er iets fout anders stond je vraag hier niet, dus wat voor meldingen krijg of wat krijg je juist niet?
 
vreemd er hoord inderdaad nog een stukje tussen, :confused:

Mijn vraag was: weet iemand hoe als je in het bestandje schrijf.php iets invuld en je drukt op "verstuur bijdrage" de gegevens automatisch in de database komen?

ik heb gezocht op internet alleen daar is het probleem dat de meest voorkomende database MySQL is en dat werkt volgens mij net iets anders.

groeten Demmit
 
ik maak zelf gebruik van een gastenboek dat gewoon schrijft naar een andere php file ipv een database
zal ik hem hier neerzetten?
 
gastenboek.php:
PHP:
<html>
<head>
<link rel="stylesheet" href="../band.css" type="text/css" media="screen,projection" /> 
</head?
<body>

<?php
    require("posts.php");
    
    require("user_input.php");
?>
</body>
</html>

action.php:
PHP:
<?php
    
$datum = date("d.m.y H:i");
$bericht = htmlentities($_POST['bericht']);
$bericht = nl2br($bericht);
$bericht = stripslashes($bericht);

// defineer het bestand met berichten
$file = "posts.php";

// open het bestand
$fopenr = fopen ($file, "r"); 

// sla de inhoud op om de eerder toegevoegde berichten
// te onthouden en te herschrijven onder het nieuwe bericht
$msgs = fread ($fopenr, filesize ($file)); 

// open de file nogmaals maar dan nu om er in te schrijven
$fopenw = fopen($file, "w+");

// schrijf nieuwe bericht + alle oude in $file
fwrite($fopenw, "
\n\n<!-- bericht -->\n
<div class=\"gastenboek\">
<table><tr><td>
<b>".$_POST['naam']."</b> <a href=\"mailto:".$_POST['email']."\"> ".$_POST['email']."</a><br>\n
<blockquote><p>$bericht</p></blockquote>\n
<p>".$_POST['woonplaats']." - $datum</p></td></tr></table></div>$msgs
"); 

// sluit het bestand
fclose($fopenw);

require("gastenboek.php");
?>

posts.php is een lege file
voor posts.php moet je wel chmod 777 instellen (alle permissies aan)

user_input.php
PHP:
<form action="action.php" method="post" accept-charset="iso-8859-1"> 
<p> 
De gegevens die u via het volgende formulier invult, worden op het gastenboek geplaatst en zullen voor iedereen zichtbaar zijn. 
</p> 
<p> 
Naam: <br> 
<input name="naam" type="text" size="40" tabindex="1000"> 
</p> 
<p> 
E-mail: (optioneel)<br> 
<input name="email" type="text" size="40" tabindex="1001"> 
</p> 
<p> 
Woonplaats: (optioneel)<br> 
<input name="woonplaats" type="text" size="40" tabindex="1003"> 
</p> 
<p> 
Uw bericht: <br> 
<textarea name="bericht" rows="8" cols="40" tabindex="1004"></textarea> 
</p> 
<p> 
<input type="submit" name="submit" value="Verstuur" title="Verstuur dit formulier" tabindex="1005"> 
</p> 
</form> 
</font>
dit hoeft eigenlijk geen php file te zijn XD
als je deze files hebt moet het werken :)

gastenboek.php is de file die gebruikers te zien krijgen
posts.php is de file waar naartoe geschreven wordt
 
Laatst bewerkt:
Je kunt ook ff naar de mijne kijken; die schrijft ook naar een file:
ruigekonijnen.nl/temp/guestbook.zip

Er zit een voorbeeldje bij om de werking te zien :)
 
die schrijft gecodeerd naar een textbestandje? XD
ziet er een stuk ingewikkelder uit dan mijn code XD
wel interessant! k ga proberen alles te begrijpen XD
waarom heb je e-mail als verplicht veld genomen?
en waarom heb je zo'n kleine text input genomen?
ik vind m verder wel goed uitzien hoor
zitten in de code allemaal errormessages voor als er iets fout gaat. dat heb ik dan weer niet XD is wel handig!
MvG
tiran818
 
Email als verplicht was idd misschien niet zo'n handige keuze geweest :P Ik ging er vanuit dat het altijd nodig was, maar dat hoeft niet.

Wat de stijl betreft; ik heb een heel simpel voorbeeld gemaakt, maar je kunt de html helemaal aan je eigen wensen aanpassen als je dat wilt ;)

Succes met uitvogelen :)
 
dankjewel :)
ik wil vooral door hebben hoe dat gecodeerd opslaan werkt XD
mr dat komt wel goed
als ik weer es een dagje niks te doen heb :P
 
Ow, dat coderen is heel makkelijk, je kunt gewoon JSON gebruiken.

PHP:
$var = array ( 'a' => 1, '2' => 'b' );
$plat = json_encode ( $var );

Vervolgens krijg je een stukje tekst, dat je in het bestand plakt.

Daarna kun je het weer uitlezen door het te decoden:

PHP:
$var = json_decode ( $plat );

En dat is alles ;)

JSON werkt bovendien ook in javascript; het is een open format. Je kunt de file dus eigenlijk met heel veel verschillende talen inlezen.
 
ok grappig
is dus n speciale functie voor XD
is het dan niet heel makkelijk dat soort gecodeerde text te ontcijferen?
 
Het is niet bedoeld om niet gedecodeerd te kunnen worden ;) Het is gewoon een handige manier van opslaan, zodat ik snel kan saven/loaden naar een file, ondanks dat ik eigenlijk werk met arrays en objecten :)

Als je goed kijkt kun je de teksten van het gastenboek gewoon letterlijk in de file zien staan ;)
 
als ik het txt bestandje open zie ik een paar blokjes XD ziet er zo uit ongeveer so uit: [][][][] alleen dan dicht :P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan