Tutorials

Gastenboek

Ik ga proberen jullie een gastenboek te leren maken want, veel mensen willen dit als eerste weten en er zitten veel soorten dingen in

Pagina 1

Voorwoord

Na, ik wil jullie graag leren hoe je een gastenboek moet maken omdat ik merkte dat veel beginnende mensen een gastenboek willen hebben met smilies, ubb en het liefst ook nog kunnen reageren, dit laatste behandel ik nog niet maar als alle fouten hier uit zijn en het goed werkt, zal dat er zeker bij komen.

Het gastenboek bestaat uit de volgende pagina ’s
- Schrijf.php
- Lees.php
- Ubb.php

Ik hoop dat jullie er wat aan hebben, veel lees / script plezier!

Edit:
Ik heb een aantal updates geplaatst zo heb ik overal even iets beter gecontroleerd etc... en heb ik de uitleg van de ubb iets verbeterd...

Groeten,
Milo
Pagina 2

Schrijven

Op het gastenboek zit een schrijf pagina, wat hier eigenlijk gebeurt is het volgende: Er word gekeken of er al op verzenden is gedrukt,
zo nee: Formulier tonen
zo ja: Kijken of alle velden gevuld zijn
----zo ja: query uitvoeren, dus alles in de database zetten
----zo nee: error weergeven

Er wordt ook gebruik gemaakt van verschillende functies o.a.
Mysql_real_escape_string, voor deze functie verwijs ik je door naar: KLIK
!isset: kijken of er wel iets in een veld zit.



<?php
// Schrijf.php

// Database connectie maken met database
include('config.php');

// Connectie maken met de ubb pagina voor email check
include('ubb.php');

// Als er gepost is checken of er niks vergeten is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // Als de naam niet is ingevult
    if(!isset($_POST['naam']))
    {
		// Error
        echo 'U bent vergeten uw naam in te vullen';
    }
	// Anders
    else
    {
        // Als de email niet is ingevult
        if(!isset($_POST['email']))
        {
            echo 'U bent vergeten uw email in te vullen';
        }
		// Anders
        else
        {
            // Als email niet klopt
            if(check_mail($_POST['email']))
            {
                echo 'U heeft geen geldige email ingevult';
            }
			// Anders
            else
            {
                // Als bericht is ingeveult
                if(!isset($_POST['bericht']))
                {
                    echo 'U heeft geen bericht ingevult';
                }
				// Anders
                else
                {
                    // De mysql_query uitvoeren om alles in de db te zetten
                    $sql = mysql_query("INSERT INTO 
											gastenboek 
												(
                                                naam,
                                                email,
                                                bericht,
                                                datum
                                                )
                                        VALUES
                                            (
                                            '".mysql_real_escape_string($_POST['naam'])."'
                                            '".mysql_real_escape_string($_POST['email'])."'
                                            '".mysql_real_escape_string($_POST['bericht'])."'
                                            NOW()
                                            )
										");
										
					// Als de query is gelukt
                    if($sql)
                    {
                        echo 'Uw bericht is geplaatst<br>';
                        echo 'Klik <a href="Lees.php"> hier</a> om naar uw bericht te gaan';
                    }
					// Anders
                    else
                    {
						// MySql Error opvangen
						echo 'Er is een fout opgetreden bij de query: <br />';
						echo mysql_error();
                    }
                }
            }
        }
    }
}
// Anders
else
{
	// Het formulier
	echo '<form action="" method="post">';
		echo 'Naam: <input type="text" name="naam"><br>';
		echo 'E-mail: <input type="text" name="email"><br>';
		echo 'Bericht:<br>';
		echo '<textarea name="bericht"></textarea>';
		echo '<input type="submit" value="Verzenden">';
	echo '</form>';
}
?>
Pagina 3

Lezen

Om het simpel te houden heb ik bij deze pagina geen lay-out gemaakt, zodat je niet eerst een lay-out hoeft weg te denken / halen, en dan pas verder kan.

Op deze pagina word er gebruik gemaakt van de SELECT .. FROM query, begrijp je niet hoe dit zit?, dan verwijs ik je door naar Klik, hier word haarfijn uitgelegd hoe query ’s werken etc.

Verder wordt er ook gebruik gemaakt van de functie explode om de datum uit elkaar te halen, ik wist eerst niet dat er kortere functies voor waren maar daar ga ik even op googlen en dan toepassen



<?php
// Lees.php


// Database connectie maken met database
include('config.php');

// Connectie maken met de ubb pagina
include('ubb.php');

// Link naar schrijf pagina
echo 'Klik <a href="Schrijf.php">hier</a> om een bericht te plaatsen';

// Alles uit db halen laatste bericht als eerste.
$sql = mysql_query("SELECT
						*,
						DATE_FORMAT(datum, '%d-%m-%Y %H:%i') AS new_date
					FROM
						gastenboek
					ORDER BY
						datum
					DESC
					");

// Als de query is gelukt
if($sql)
{
	// Als er items zijn
	if(mysql_num_rows($sql) > 0)
	{
		// Items neerzetten
		while($rec = mysql_fetch_assoc($sql))
		{
			// Alles echoën
			echo 'Naam: '.$rec['naam'];
			echo 'E-Mail: '.$rec['email'];
			echo 'Gepost op: '.$rec['new_date'];
			echo 'Bericht: <br>'.ubb_gastenboek($rec['bericht']);
			
			// Lijntje
			echo '<br><hr><br>';
		}
	}
	// Anders
	else
	{
		// Geen berichten
		echo 'Er zijn nog geen gastenboek berichten.';
	}	
}
// Anders
else
{
	// MySql error
	echo 'Er is een fout opgetreden in de query: <br />';
	echo mysql_error();
}
?>
Pagina 4

Slot

Hoop dat jullie er wat aan hebben, commentaar graag zodat ik eventueel een betere nettere versie kan maken.

Ga niet vragen om smilies want die staan op een pc die kapot is :S

Gr, Milo

Succes
Pagina 5

Database

Om iets te kunnen uitlezen of ergens iets in te doen hebben we wel een database nodig

Wij gebruiken de volgende velden in tabel Gastenboek
Gastenboek
- id
- naam
- email
- datum
- bericht


CREATE TABLE `gastenboek` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`naam` VARCHAR( 30 ) NOT NULL ,
`email` VARCHAR ( 150 ) NOT NULL ,
`datum` DATETIME NOT NULL ,
`bericht` TEXT NOT NULL ) ENGINE = MYISAM;


en een config pagina om connectie te maken
[code]
<?php
// Config.php

$host = ""; // Je host
$user = ""; // Je MySQL gebruikersnaam
$pass = ""; // Je MySQL wachtwoord
$datb = ""; // Je MySQL database

// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Er is een fout bij het connectie maken met de DataBase");
mysql_select_db($datb) or die ("Er is een fout bij het selecteren van de DataBase");
?>
[code]

next >>
Pagina 6

Ubb

Voor de ubb parser word er gebruik gemaakt van function en str_replace().

Binnen function kan je in dit geval bijv dingen neerzetten die jij wilt verplaatsen voor wat anders, hier heb je dan weer str_replace voor nodig.

function functienaam($var)
{
$var = str_replace('huidig', 'nieuw', $var);

return $var;
}


De email_check, heb ik niet zelf gemaakt :(, maar die kan je hier: klik vinden


<?php
// ubb.php


// E-mail check
function check_mail($email)
{  
	return ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$email);  
}

// UBB Algemeen
function ubb_gastenboek($bericht)
{
	// De smilies  (Hier je afbeelding namen bijzetten)
	$bericht = str_replace (':D', '<img src="/* afbnaam */">', $bericht);
	$bericht = str_replace (':P', '<img src="">', $bericht);
	$bericht = str_replace (':)', '<img src="">', $bericht);
	$bericht = str_replace (':(', '<img src="">', $bericht);
	$bericht = str_replace ('(@', '<img src="">', $bericht);
	$bericht = str_replace (':S', '<img src="">', $bericht);
	$bericht = str_replace (';)', '<img src="">', $bericht);
	$bericht = str_replace (':@', '<img src="">', $bericht);

	// De tekst opmaak
	$bericht = str_replace ('[b]', '<b>', $bericht);
	$bericht = str_replace ('[/b]', '</b>', $bericht);
	$bericht = str_replace ('[u]', '<u>', $bericht);
	$bericht = str_replace ('[/u]', '</u>', $bericht);

	// Een reactie (quote)
	$bericht = str_replace ('[quote]', '<div class="quote">', $bericht);
	$bericht = str_replace ('[/quote]', '</div>', $bericht);

return $bericht;
}
?>

Reacties

0
Nog geen reacties.