Scripts

Gastenboek

Dit in je DB zetten: CREATE TABLE `gastenboek` ( `bericht_id` INT NOT NULL AUTO_INCREMENT, `datum` DATE NOT NULL, `tijd` TIME NOT NULL, `tekst` TEXT NOT NULL, `naam` VARCHAR(255), `email` VARCHAR(255), `website` VARCHAR(255), PRIMARY KEY (`bericht_id`), INDEX (`datum`, `tijd`) ); Bron: Boek WEBDESIGN MET PHP 5 door Ward van der Put van Easy Computing.

gastenboek
gastenboek zelf:
[code]
<?php
echo "<h1>Gastenboek</h1>\n";
echo "<p><a href=\"nieuw.php\">Schrijf ook iets in het gastenboek</a></p>\n";

// MySQL-selectiequery opstellen:
$sql  = 'SELECT * ';                   // Selecteer alle gegevens
$sql .= 'FROM `gastenboek` ';          // uit de tabel 'gastenboek'
$sql .= 'ORDER BY `bericht_id` DESC '; // en sorteer ze aflopend.

// Aflopend sorteren op de datum en tijd:
// $sql .= 'ORDER BY `datum` DESC , `tijd` DESC ';

// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen met mysql_connect():
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
// Database 'test' selecteren:
mysql_select_db("test") or die(mysql_error());
// Query uitvoeren en een resultaatset opslaan:
$resultaat = mysql_query($sql) or die(mysql_error());

// Alle records weergeven:
while ($rij = mysql_fetch_assoc($resultaat)) {

    // Alinea met de datum, tijd en tekst:
    echo '<p style="border-top: dotted 2px gray;">';
    echo '<span style="color: gray;">[';

    $datum = $rij["datum"];
    // Datum eventueel converteren van YYYY-MM-DD naar DD-MM-YYYY:
    if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $datum, $substring)) {
        echo "$substring[3]-$substring[2]-$substring[1]";
    } else {
        echo $datum;
    }

    echo ' om ';
    echo $rij["tijd"];
    echo "]</span> ";
    echo nl2br($rij["tekst"]);
    echo "</p>\n";

    // Alinea met de ondertekening:
    echo '<p style="margin-left: 25%">'; 
    $naam = $rij["naam"];
    if ((is_null($naam)) or (strlen($naam) < 1)) {
        echo "Anoniem";
    } else {
        echo $naam;
        $emailadres = $rij["email"];
        if (strlen($emailadres) >= 7) {
            $emailadres = geenSpam($emailadres);
            echo "<br>&lt;" . $emailadres . "&gt;";
        }
        $website = $rij["website"];
        if (strlen($website) >= 5) {
            echo '<br><a href="http://' . $website . '">'; 
            echo $website;
            echo '</a>';
        }
    }
    echo "</p>\n";
}

// Resultaatset vrijgeven:
mysql_free_result($resultaat);
// Databaseverbinding sluiten:
mysql_close($verbinding);

function geenSpam($string, $nadruk = FALSE)
{
    if ($nadruk) {
        $string = str_replace("@", " <strong>apenstaartje</strong> ", $string);
        $string = str_replace(".", " <strong>punt</strong> ", $string);
    } else {
        $string = str_replace("@", " apenstaartje ", $string);
        $string = str_replace(".", " punt ", $string);
    }
    return $string;
}
?>
[/code]

Nieuw.php:
[code]
<?php
$melding    = ""; // Variabele voor foutmeldingen
$tekst      = "";
$naam       = "";
$emailadres = "";
$website    = "";

// Formulier alleen verwerken als op de knop met de naam 'submit' 
// EN de waarde 'Toevoegen' is geklikt:
if (isset($_POST['submit'])) {
    if ($_POST['submit'] == "Toevoegen") {
        $datum      = date("Y-m-d");
        $tijd       = date("H:i:s");
        $tekst      = $_POST['t'];
        $naam       = $_POST['n'];
        $emailadres = $_POST['e'];
        $website    = $_POST['w'];
        // HTML-tags verwijderen uit de tekst met strip_tags() en
        // pas DAARNA de tekst omzetten in HTML met htmlentities():
        $tekst = strip_tags($tekst);
        $tekst = htmlentities($tekst);
        // Het voorvoegsel "http://" verwijderen uit de URL van de website:
        $website = eregi_replace("^http://", "", $website);
        // Overige invoer omzetten in HTML-tekens, vooral voor 
        // de naam, want voor een e-mailadres of URL hoeft dat niet:
        $naam       = htmlentities($naam);
        $emailadres = htmlentities($emailadres);
        $website    = htmlentities($website);

        // Alleen een tekst van minimaal 4 tekens 
        // en maximaal 500 woorden toevoegen:
        define("MINIMUMAANTAL_TEKENS", 4);
        define("MAXIMUMAANTAL_WOORDEN", 500);
        $aantal_tekens  = strlen($tekst);
        $aantal_woorden = str_word_count($tekst);
        if (($aantal_tekens >= MINIMUMAANTAL_TEKENS) and ($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
            // MySQL-toevoegquery opstellen:
            $sql  = "INSERT INTO `gastenboek` ";
            $sql .= "(`bericht_id`, `datum`, `tijd`, `tekst`, `naam`, `email`, `website`) ";
            $sql .= "VALUES ";
            $sql .= "('', '$datum', '$tijd', '$tekst', '$naam', '$emailadres', '$website') ";
            $sql .= "; ";
            // Databaseverbinding openen en query uitvoeren:
            require_once('mysql_connect.inc.php');
            $verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
            mysql_select_db("test") or die(mysql_error()); 
            $toegevoegd = mysql_query($sql) or die(mysql_error());
            mysql_close($verbinding);

            // Browser omleiden naar het gastenboek
            // als de bijdrage is toegevoegd:
            if ($toegevoegd) {
                header("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/gastenboek.php");
                exit;
            }
        } else {
            // Foutmelding weergeven:
            if (!($aantal_tekens >= MINIMUMAANTAL_TEKENS)) {
                $melding .= "De tekst is te kort.";
            }
            if (!($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
                $melding .= "Uw tekst telt " . $aantal_woorden . "&nbsp;woorden. ";
                $melding .= "Kort de tekst in tot maximaal " . MAXIMUMAANTAL_WOORDEN . "&nbsp;woorden. ";
            }
        }

    }
}

// Een eventuele foutmelding opmaken als een alinea:
if (strlen(trim($melding)) > 1) {
    $melding = '<p class="w">' . $melding . "</p>\n";
}
?>
<h1>Schrijf in het gastenboek</h1>
<?php echo $melding; ?>
<p>Voer uw tekst voor het <a href="gastenboek.php" title="Gastenboek">gastenboek</a> in en klik op Toevoegen. <br>
U hoeft geen naam, e-mailadres of website op te geven.</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <table border="0" cellpadding="0" cellspacing="2">
    <tr>
      <td colspan="2" valign="top"><label for="t"><span style="text-decoration: underline">T</span>ekst voor het gastenboek:</label></td>
    </tr>
    <tr>
      <td colspan="2"><textarea accesskey="t" cols="50" id="t" name="t" rows="10"><?php echo htmlentities($tekst); ?></textarea></td>
    </tr>
    <tr>
      <td><label for="n"><span style="text-decoration: underline">N</span>aam:</label></td>
      <td><input accesskey="n" id="n" name="n" type="text" size="47" value="<?php echo htmlentities($naam); ?>"></td>
    </tr>
    <tr>
      <td><label for="e"><span style="text-decoration: underline">E</span>-mailadres:</label></td>
      <td><input accesskey="e" id="e" name="e" type="text" size="47" value="<?php echo $emailadres; ?>"></td>
    </tr>
    <tr>
      <td nowrap><label for="w">URL <span style="text-decoration: underline">w</span>ebsite:</label></td>
      <td><input accesskey="w" id="w" name="w" type="text" size="47" value="<?php echo $website; ?>"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td align="right" nowrap>
        <input class="knop" name="submit" type="submit" value="Toevoegen"> &nbsp;
        <input class="knop" name="submit" type="submit" value="Wissen">
        <script type="text/javascript">
        <!--
        document.write("<input class=knop onclick=\"window.location.href = 'gastenboek.php'\" type=button value=Annuleren>");
        -->
        </script>
      </td>
    </tr>
  </table>
</form>
[/code]

Reacties

0
Nog geen reacties.