Form skal huske det indtastede
Hej.Jeg har dette kommentar-script. Nogle gange glemmer brugerne at udfylde alle påkrævede felter, hvorved der vises en fejlbesked. Når en fejlbesked vises, slettes alt i formen, hvilket er ret uhensigtsmæssigt. Hvordan får man formen til at huske alt det, der er indtastet indtil der trykkes send?
comments.php (med formen):
<?PHP
//napper postNo med det samme så det altid er til at få fat i
if (isset($_GET['postNo'])) {
$postNo = $_GET['postNo'];
} else {
$postNo = $_POST['postNo'];
}
include("commentFunctions.inc.php");
//writes a header
writeCommentHeader();
?>
<body onload="if(document.formnavn)document.formnavn.theName.focus()">
<h2>
<?PHP echo $GLOBALS['title']; ?>
</h2>
<?PHP
//Fejlbesked hvis felter mangler at blive usfyldt.
if (isset($_POST['send'])) {
if ($_POST['theComment'] == "" || $_POST['theName'] == "") {
echo "<div class\"box\"><p class=\"error\">Skriv venligst mindst dit navn og en kommentar -<br>ellers er der ikke megen pointe med at trykke på send-knappen...</p></div>";
} else {
insertComment($postNo);
}
}
//vis kommentarerne for posten med postNo
getComments($postNo);
?>
<br>
<br>
<form name="formnavn" action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post" target="_top" style="display:inline; margin:0px;">
<b>
<span class="titel">Navn:</span><span class="stjerne">*</span><br />
<input name="theName" type="text" style="border:1px solid #999;" size="30" />
<br />
<span class="titel">Email:</span><br />
<input name="theEmail" type="text" style="border:1px solid #999;" size="30" />
<br />
<span class="titel">Website:</span> <br />
<input name="theURL" type="text" style="border:1px solid #999;" size="30" /> * <span style="font-size:9px;">= Skal udfyldes.</span>
<br />
<span class="titel">Kommentar:</span></b><span class="stjerne">*</span><br />
<textarea name="theComment" style="border:1px solid #999;word-wrap:break-word;" rows="10" cols="65"></textarea>
<br />
<input type="hidden" name="postNo" value="<?PHP echo $postNo ?>" />
<input type="submit" style="font-size: 12px; width:110px; border: 1px solid #000000; background-color: #e9e9e9;cursor:pointer;" name="send" value="Tilføj kommentar" />
<input type="reset" style="font-size: 12px; width:50px; border: 1px solid #000000; background-color: #e9e9e9;cursor:pointer;" value=" Ryd " />
</form><br />
<br>
<br>
<table width="300" border="0" cellpadding="0" align="center">
<tr>
<td style="text-align:center;"><input name="button" type="button" onClick="window.close()" value=" Luk vindue " class="submit_knap"></td>
</tr>
</table>
</body>
</html>
commentFunctions.inc.php (selve scriptet):
<?PHP
/*
TABLE DUMP:
DROP TABLE IF EXISTS `comments`;
CREATE TABLE `comments` (
`commentID` int(11) NOT NULL auto_increment,
`comment` text,
`URL` text,
`email` varchar(100) default NULL,
`name` varchar(40) default NULL,
`postNo` varchar(100) NOT NULL default '',
`theDate` datetime default NULL,
PRIMARY KEY (`commentID`)
) TYPE=MyISAM;
*/
//KONFIGURERBARE VARIABLER
#Der bliver sendt en email til denne adresse hver gang der
#bliver skrevet en ny kommetar */
$GLOBALS['email'] = "mail@e-mail.dk";
#Dette er den titel man ser øverst i kommentarvinduet */
$GLOBALS['title'] = "Kommentarer:";
#Den absolutte sti til den mappe på webserveren kommentarscriptet ligger i
#For eksempel http://www.website.dk/comments/
$GLOBALS['root'] = "http://www.website.dk/comments/";
#Addressen på databasen f.eks sql01.dk
$GLOBALS['database_adress'] = "";
#Disse variabler skulle give sig selv
$GLOBALS['database_navn'] = "******";
$GLOBALS['database_bruger'] = "******";
$GLOBALS['database_password'] = "******";
// FUNKTIONER
function writeCommentHeader() {
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"DTD/xhtml1-transitional.dtd\">\n";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"da\">\n";
echo "<head>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />";
echo "<link href=\"/comments/comments.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
echo "<title>Tilføj eller læs kommentarer</title>\n";
echo "<base target=\"_blank\" />\n";
echo "</head>\n";
echo "<body>\n\n";
}
function sendCommentMail($from, $body) {
$subject = "Ny kommentar fra " . $from;
mail($GLOBALS['email'], $subject, $body, "From: mail@e-mail.dk\r\n");
}
function insertComment($postNo) {
if (isset($_POST['theComment']) && isset($_POST['theName']) && isset($postNo)) {
if ($_POST['theComment'] != "" && $_POST['theName'] != "" && is_numeric($postNo)) {
$aComment = htmlspecialchars(mysql_escape_string($_POST['theComment']));
$aName = htmlspecialchars(mysql_escape_string($_POST['theName']));
$aURL = htmlspecialchars(mysql_escape_string($_POST['theURL']));
$anEmail = htmlspecialchars(mysql_escape_string($_POST['theEmail']));
sendCommentMail($_POST['theName'], $_POST['theComment']);
$query = ("INSERT INTO comments (comment, URL, email, name, postNo, theDate) VALUES ('$aComment', '$aURL', '$anEmail', '$aName', '" . $postNo . "', NOW())");
//executeSQL lukker selv linket til databasen
executeSQL($query);
}
}
}
//Make links clickable:
function url2link($url,$chr_limit = 70,$add = '...') {
return preg_replace("!(http:/{2}[\w\.]{2,}[/\w\-\.\?\&\=\#]*)!e", "'<a href=\"\\1\" class=\"orange\" title=\"\\1\" target=\"_blank\">'.(strlen('\\1')>=$chr_limit ? substr('\\1',0,$chr_limit).'$add':'\\1').'</a>'", $url);
}
function getComments($postNo) {
setlocale(LC_ALL, 'da_DK.ISO_8859-1');
$comments = executeSQL("SELECT name, email, comment, URL, UNIX_TIMESTAMP(theDate) as thisDate FROM comments WHERE postNo = '" . $postNo . "' ORDER BY theDate");
//hvis der ikke er nogen kommentarer kører løkken ikke
while ($data = mysql_fetch_array($comments)) {
$danskTid = (int)strftime("%e", $data['thisDate']) . strftime(". %b. %Y", $data['thisDate']) . " kl. " . strftime("%H:%M:%S", $data['thisDate']);
$comment = stripslashes($data['comment']);
$comment = nl2br($comment);
$comment = wordwrap($comment, 65, "\n", 1);
$comment = url2link($comment);
echo "<div class=\"box\">\n";
echo "<p class=\"date\">" . $danskTid . "</p>\n";
echo "<p>" . $comment . "</p>";
echo "<span class=\"small\">Skrevet af</span><span class=\"titel\"><b>" . stripslashes($data['name']) . "</b></span>\n";
if ($data['email'] != "") {
echo " | <a class=\"plain\" title='Email' href=\"mailto:" . $data['email'] . "\"> @ </a>\n";
}
if ($data['URL'] != "") {
echo " | <a class=\"plain\" title='Website' href=\"" . $data['URL'] . "\"> www </a>\n";
}
echo "</div><br />\n\n";
}
}
function getNumOfComments($itemNo) {
$numOfComments = executeSQL("SELECT COUNT(postNo) AS numOfCom FROM comments WHERE postNo = '$itemNo'");
//En eller flerer kommentarer
$tag = "Kommentarer";
$data = mysql_fetch_array($numOfComments);
if ($data['numOfCom'] == 1) {
$tag = "Kommentar";
}
echo "<a href=\"#\" onclick=\"kommentar=window.open('" . $GLOBALS['root'] . "comments.php?postNo=" . $itemNo . "','commentWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=470,height=510'); return false;\" title=\"Tilføj eller læs kommentarer\" class=\"orange\">" . $tag . " (" . $data['numOfCom'] . ")</a>";
}
function executeSQL($strSQL, $close="true") {
//åbner forbindelsen
$link = mysql_connect($GLOBALS['database_adress'], $GLOBALS['database_bruger'], $GLOBALS['database_password']);
if (!$link) {
//hvis forbindelsen fejler får brugeren en fejlmeddelelse og funktionen går ikke videre
echo "<p>" . mysql_error() . "</p>";
}
//ellers vælges databasen
else {
if(!mysql_select_db($GLOBALS['database_navn'], $link)) {
//hvis der er fejl sker der ikke mere, blot lukkes databasen med mysql_close()
echo "<p>" . mysql_error() . "</p>";
}
//ellers udføres en query
else {
$result = mysql_query($strSQL);
if (!$result) {
//evt. fejl smides efter brugeren
echo "<p>" . mysql_error() . "</p>";
}
}
if ($close == "true") {
if (!mysql_close()) {
echo "<p>" . mysql_error() . "</p>";
}
}
return $result;
}
}//slut på executeSQL
?>
