Als je pas bezig bent met php en je weet niet wat je zou moeten gaan maken om php beter te leren dan zou je het beste kunnen beginnen met een gastenboek. Als je namelijk goed gaat nadenken kom je erachter dat zeer veel scripts in feite gastenboeken zijn of een afgeleide van een gastenboek. Met een gastenboek als begin kun je dus heel ver komen. Mede hierom ga ik uitleggen hoe je een gastenboek kan scripten in php.

Stap 1: Het maken van de database tabel.

Als eerste gaan we bedenken wat we allemaal nodig hebben in de databasetabel. Ik zou als basis de volgende elementen op kunnen noemen:

  • id
  • naam
  • bericht

Uitleg

“id” hebben we nodig om de berichten te kunnen sorteren.
“naam” hebben we nodig omdat het handig is om te weten wie het bericht achterliet.
“bericht” hebben we nodig omdat mensen in een gastenboek natuurlijk berichten moeten kunnen achterlaten.

De tabel zal er dus als volgt uitzien:

  1.  
  2. CREATE TABLE gast_berichten (id int(13) UNSIGNED NOT NULL AUTO_INCREMENT,naam varchar(50) NOT NULL,bericht TEXT NOT NULL,PRIMARY KEY(id))
  3.  
  4. TYPE=MyISAM;

Het meeste spreekt wel voor zich denk ik, de laatste 2 regels kunnen onduidelijk zijn denk ik.
PRIMARY KEY wil zeggen dat het aangegeven veld de unieke sleutel in de tabel is.
TYPE=MyISAM zorgt ervoor dat de tabel null waardes accepteert.

Deze tabel kunnen we nu invoeren in bijv. phpmyadmin.

Stap 2: Het voorbereidende werk in php
Om in latere stappen dubbel werk te voorkomen maken we nu eerst een config bestand. Hierin leggen we o.a de database connectie vast. Het config bestand noemen we “config.php” en kan er als volgt uitzien:

  1.  
  2. // De database server$_config['db']['host'] = "localhost";// De gebruikersnaam van de database$_config['db']['user'] = "root";// Het wachtwoord van de database$_config['db']['pass'] = "";// De naam van de database
  3.  
  4. $_config[‘db’][‘name’] = "gast_berichten";
  5.  
  6. mysql_connect($_config[‘db’][‘host’],$_config[‘db’][‘user’],$_config[‘db’][‘pass’]);
  7.  
  8. mysql_select_db($_config[‘db’][‘name’]);

Uitleg over dit script staat in het script zelf op de commentaar regels.
Dit bestand gaan we later in ieder script includen.

Stap 3: Het invoeren van berichten
Om bezoekers berichten te laten invoeren moeten we een formulier maken dat zijn gegevens naar de database post. Hiervoor maken we het bestand invoeren.php aan. Dit bestand ziet er als volgt uit:

  1. // Includen van het config bestand zodat de connectie met de database wordt gemaakt.
  2. include ("config.php");
  3.  
  4. /*      Met de volgende if/else constructie kijken we
  5. *       of iemand op de knop versturen heeft gedrukt
  6. *       of niet. Dit doen we door te kijken of
  7. *       $_POST['submit'] gedefinieerd is.
  8. *       
  9. *       Als deze gedefinieerd is heeft er iemand
  10. *       op de knop gedrukt en anders niet.
  11. */
  12.  
  13. if (isset($_POST[‘submit’]))
  14. {
  15. /*     
  16. *       Hier heeft dus iemand op de knop gedrukt
  17. */
  18.  
  19. /*
  20. *       Kijken of de waardes "naam" en "bericht"
  21. *       gevuld zijn, zo niet dan geven we een
  22. *       bericht terug
  23. */
  24.         if (!empty($_POST[‘naam’]) OR !empty($_POST[‘bericht’]))
  25.         {
  26. /*
  27. *       Alles is ingevuld dus we kunnen verder
  28. *       Hieronder zie je de query waarmee het
  29. *       bericht en de naam in de database
  30. *       gezet worden.
  31. */
  32.                 mysql_query("INSERT INTO gast_berichten (naam,bericht) VALUES (‘". $_POST[‘naam’] ."’,'". $_POST[‘bericht’] ."’)") or die (mysql_error());
  33.                 echo "Het bericht is succesvol toegevoegd";
  34.         }
  35.         else
  36.                 echo "Er is iets niet ingevuld, probeer het opnieuw";
  37. }
  38. else
  39. {
  40. /*     
  41. *       Hier is niet op de knop gedrukt en laten we
  42. *       dus het formulier zien. Omdat we geen
  43. *       actie opgeven bij het <form> element
  44. *       zal het formulier naar zichzelf gaan posten.
  45. */
  46.  
  47. echo "<form method=\"post\">\n";
  48. echo "<table>\n";
  49. echo "<tr>\n";
  50. echo "<td>Naam</td>\n";
  51. echo "<td><input type=\"text\" name=\"naam\" /></td>\n";
  52. echo "</tr>\n";
  53. echo "<tr>\n";
  54. echo "<td>bericht</td>\n";
  55. echo "<td><textarea name=\"bericht\" cols=\"40\" rows=\"10\"></textarea></td>\n";
  56. echo "</tr>\n";
  57. echo "<tr>\n";
  58. echo "<td> </td>\n";
  59. echo "<td><input type=\"submit\" name=\"submit\" value=\"Toevoegen\" /></td>\n";
  60. echo "</tr>\n";
  61. echo "</table>\n";
  62. echo "</form>\n";
  63.  
  64. }

Stap 4: Het tonen van de ingevoerde berichten
Om de ingevoerde berichten te tonen hebben we een script nodig dat de database uitleest, dit ziet er als volgt uit:

  1. // Includen van het config bestand zodat de connectie met de database wordt gemaakt.
  2.  
  3. include ("config.php");/*
  4.  
  5. *       Maken van de query die de berichten uit de database haalt
  6.  
  7. */
  8.  
  9. $query = mysql_query("SELECT naam,bericht FROM gast_berichten ORDER BY id DESC") or die (mysql_error());
  10.  
  11. /*
  12.  
  13. *       Een while loop maken welke door alle berichten heen loopt
  14.  
  15. */
  16.  
  17. while ($list = mysql_fetch_assoc($query))
  18.  
  19. {
  20.  
  21. /*
  22.  
  23. *       De gegevens van ieder bericht op het scherm tonen
  24.  
  25. */
  26.  
  27. echo "
  28. <hr />\n";
  29.  
  30. <h5>". $list[‘naam’] ."</h5>
  31. \n";
  32.  
  33. // nl2br zorgt ervoor dat de enters in een bericht getoond worden.
  34.  
  35. echo nl2br($list[‘bericht’]);
  36.  
  37. echo "
  38. <hr />\n";
  39.  
  40. }