Problem med script inkl. XML og PHP
Hej,Jeg kan desværre ikke selv finde løsningen på nedenstående problem og håber I kan hjælpe. XML og JavaScript er stadig nyt for mig. Sandsynligvis er det bla. encodingen der giver problemer, men det har ikke være mig muligt at finde en løsning.
Andet problem er at få udskrevet fejlmeddelelserne i <error> og tredje problem er at få vist de sidste tre indtastninger.
AjaxPostFormUpdate.php:
<?php
header ("content-type: text/xml; charset=iso-8859-1");
echo "<reply>";
require_once('XXX.php');
$tabelnavn = "XXX";
$id = $_POST['id'];
$errors = false;
if (preg_match('/^[[:alpha:][:space:]æøåÆØÅ\.\-\(\)]{2,40}$/', $_POST['fornavn'])) {
$fornavn = ucwords($_POST['fornavn']);
} else {
$errors = true;
echo '<error>Fornavn skal bestå af bogstaver, eller tegnene .-.</error>'; }
if (preg_match('/^[[:alpha:][:space:]æøåÆØÅ\.\-\(\)]{2,50}$/', $_POST['efternavn'])) {
$efternavn = ucwords($_POST['efternavn']);
} else {
$errors = true;
echo '<error>Efternavn skal bestå af bogstaver, eller tegnene .-.</error>'; }
if (!errors) {
if ($id > 0) { // Opdater en post
$query_ret = mysql_query("UPDATE `$tabelnavn` SET Fornavn='$fornavn', Efternavn='$efternavn' WHERE Id ='$id'");
} else { // Indsæt en ny post
$query_indtast = mysql_query("INSERT INTO `$tabelnavn` (Fornavn, Efternavn) VALUES ('$fornavn', '$efternavn')");
}
} else {
echo "Fejl:";
/* Her skulle evt. fejlmeddelelserne <error> skrives */ }
echo "Sidste tre:";
/* Her skulle skrives de sidste tre indtastninger vha følgende:
$query_sidste = mysql_query("SELECT * FROM `$tabelnavn` ORDER BY Id DESC LIMIT 3"); ?>
<table>
<thead>
<tr>
<th>Efternavn:</th>
<th>Fornavn:</th>
<th>Ret:</th>
</tr>
</thead>
<?php while ($row = mysql_fetch_assoc($query_sidste)) {
?>
<tbody>
<tr>
<td><?php echo $row['Efternavn']; ?></td>
<td><?php echo $row['Fornavn']; ?></td>
<td><?php echo '<a href="#" onclick="setForm(\''.$row['Efternavn'].'#'.$row['Fornavn'].'#'.$row['Id'].'\'); return false;">ret</a>'; ?></td>
</tr>
</tbody>
<?php } ?>
</table><br />
*/
echo "</reply>";
?>
test.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" >
<title>Ajax Post Demo</title>
<style type="text/css">
.t1 { border-collapse: collapse; border: lightgray }
td {
padding: 2px 4px 2px 4px ;
}
</style>
<script type="text/javascript">
function setForm(data) {
var ar = data.split("#");
document.getElementById("efternavn").value = ar[0];
document.getElementById("fornavn").value = ar[1];
document.getElementById("hiddenid").value = ar[2];
document.getElementById("gem").value = " Ret ";
}
</script>
<script type="text/javascript">
var msgArea;
var Form1Request;
function AjaxRequest() {
var xhr;
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Trying Internet Explorer
}
catch(e) // Failed
{
try {
xhr = new XMLHttpRequest(); // Other browsers.
}
catch(e2) {
xhr = null;
}
}
return xhr;
}
function SendForm1Ajax() {
Form1Request = new AjaxRequest();
msgArea.nodeValue="Please Wait";
var param = "fornavn=";
param += document.getElementById("Form1FirstName").value;
param += "&efternavn=";
param += document.getElementById("Form1LastName").value;
param += "&id=";
param += document.getElementById("hiddenid").value;
Form1Request.onreadystatechange = Form1Reply;
Form1Request.open("POST", "AjaxPostFormUpdate.php", true);
Form1Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
Form1Request.send(param);
}
function Form1Reply() {
msgArea.nodeValue += "..";
if(Form1Request.readyState == 4) {
if(Form1Request.status == 200) {
var reply = Form1Request.responseXML.getElementsByTagName("reply")[0].firstChild.nodeValue;
msgArea.nodeValue=reply;
var error = Form1Request.responseXML.getElementsByTagName("error")[0].childNodes[0].nodeValue;
msgArea.nodeValue=error;
}
else
msgArea.nodeValue="Error " + Form1Request.status + " - " + Form1Request.statusText;
}
}
function init() {
msgArea = document.getElementById("MsgAreaID").firstChild;
Form1Request = new AjaxRequest();
if (Form1Request)
msgArea.nodeValue=String.fromCharCode(160);
else
msgArea.nodeValue="Error: Your Browser does not support XMLhttpRequest";
}
window.onload = init;
</script>
</head>
<body>
<p id="MsgAreaID" style="color: red; text-size; 150%">
Error: Javascript not active
</p>
<table id="demoTable" class="t1" border="1">
<tr>
<td>First Name</td>
<td><input type="text" id="Form1FirstName"></td>
</tr>
<tr>
<td>Last Name</td>
<td><input type="text" id="Form1LastName"></td>
</tr>
<tr>
<td><input type="hidden" name="id" id="hiddenid" value="0" /></td>
<td><input type="button" value="Send" onclick="SendForm1Ajax()"></td>
</tr>
</table>
<p>
<textarea rows="3" cols="40">What you type here remains on screen, because the form above is sent via a XMLhttpRequest and this page does not reload
