Jeg antager at din tabel kun indeholder kolonnerne nr navn, email, dato, besked
Jeg tillod mig at sige din dato er af type TIMESTAMP istedet for, for så skal man bare send en NULL værdi over, og så sætter den sig selv efter hvad klokken og datoen er nu.
Men det umiddelbart sådan jeg lige hurtigt vil gøre det.
Du skal lige være opmærksom på at jeg ikke har test om det virker endnu, efter som jeg ikke lige ville oprete en database og tabel til dette.
<?php
// Brug PEAR klassen QuickForm og DB
// Kan hentes fra
www.pear.php.netrequire_once 'HTML/QuickForm.php';
require_once 'DB.php';
// Saette vaerdier til databasen
$user = 'foo';
$pass = 'bar';
$host = 'localhost';
$db_name = 'clients_db';
// Lav en forbindelse til din database
$dsn = "
mysql://$user:$pass@$host/$db_name";$db = DB::connect($dsn);
// Undersøg om det er sket en fejl
if (DB::isError($db)) {
die ($db->getMessage());
}
// Vi snupper lige en forberedt regel til at undersøge om det er en valid email
function checkEmail($elementName, $email, $domainCheck = false) {
if (preg_match('/^[a-zA-Z0-9\._-]+\@(\[?)[a-zA-Z0-9\-\.]+'.
'\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/', $email)) {
if ($domainCheck && function_exists('checkdnsrr')) {
list (, $domain) = explode('@', $email);
if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
return true;
}
return false;
}
return true;
}
return false;
} // checkMail()
// Instansiere objectet
$form = new HTML_QuickForm('informationer');
// Tilføj til form
$form->addElement('header', null, 'Indtast noget om dig selv');
$form->addElement('text', 'name', 'Skriv dit navn:', array('size' => 50, 'maxlength' => 255));
$this->form->addElement('text', 'email', 'Din mailadresse', array('size' => 50, 'maxlength' => 255));
$this->form->addElement('textarea', 'note', 'Komentarer', 'cols="50" rows="10"');
$form->addElement('submit', null, 'Send');
// Tilføj regler
$form->applyFilter('name', 'trim');
$form->addRule('name', 'Skriv venligst dit navn', 'required', null, 'client');
$this->form->addRule('email', 'Du skal skrive en mail adresse', 'required');
$this->form->registerRule('checkmail', 'function', 'checkEmail');
$this->form->addRule('email', 'Det er ikke en gyldig mailadresse', 'checkmail');
// Forsøg at validere det indsendte materiale
if ($form->validate()) {
// Nu henter vi det returnerede data ind i scriptet
// Sætter lige htmlspecialchars på, så folk ikke prøver
// at lave sjove ting med databasen, eller siden.
$name = htmlspecialchars($form->exportValue('name'));
$email = htmlspecialchars($form->exportValue('email'));
$note = htmlspecialchars($form->exportValue('note'));
$sql = "INSERT INTO bog VALUES('', '$name', '$email', \N, '$note')";
$result = $db->query($sql);
// Undersøg om det er sket en fejl
if (DB::isError($db)) {
die ($db->getMessage());
}
echo "Er lagt ind i databasen";
}
// Skriv
$form->display();
echo "<table>";
// Du har nok lyst til lige at få dato til at se pænere ud bagefter
$sql = "SELECT navn, email, dato, besked FROM bog ORDER BY nr DESC";
$res = $db->query($sql);
// Vis hver enkelt række
while ($row = $res->fetchRow()) {
echo "<tr><td valign=top><br>";
echo "<b><span class=bodytext> Fra: <a href=\"mailto:$row[1]\">$row[0]</a></b>";
echo "</td></tr>";
echo "<tr><td valign=top><span class=bodytext>$row[3]";
echo "<br></tr></td>";
echo "<tr><td valign=top>";
echo "<b><span class=bodytext>Indlæg skrevet den: $row[2]</b><br>";
echo "</tr></td>";
}
echo "</table>";
// Så lukker vi lige databasen ordentligt af
$db->disconnect();
?>