forsterm
Erfahrenes Mitglied
Hallo,
mit php generiere ich eine Tabelle mit Daten aus einer Datenbank. Nun möchte ich,
dass wenn auf einen Link (rechts neben der Tabellenzeile) geklickt wird die Tabllenzeile
durch Inputfelder ersetzt wird, wo dann die Daten aus der Datenbank drin stehen.
Hab dazu auch schon das hier gefunden und hab versucht es so umzusetzten:
Nur leider funktioniert das anscheinend so nicht. Denn es passiert rein gar nichts.
Weiß von euch eventuell jemand, was ich falsch mache?
mfg
forsterm
mit php generiere ich eine Tabelle mit Daten aus einer Datenbank. Nun möchte ich,
dass wenn auf einen Link (rechts neben der Tabellenzeile) geklickt wird die Tabllenzeile
durch Inputfelder ersetzt wird, wo dann die Daten aus der Datenbank drin stehen.
Hab dazu auch schon das hier gefunden und hab versucht es so umzusetzten:
Code:
<?php
require('connect.php');
if (isset($_GET['link'])){
if ($_GET['link'] == 'edit'){
$sql = 'SELECT * FROM tabelle WHERE id = '.intval($_GET['id']);
$query = mysql_query($sql) or die(mysql_error());
$ds = mysql_fetch_object($query);
echo '
<div id="'.$ds->id.'">
<td>
<form method="POST" name="edit" action="test.php">
<input type="text" name="feld1" value="'.$ds->feld1.'" size="20">
<input type="text" name="feld2" value="'.$ds->feld2.'" size="20">
<input type="text" name="feld3" value="'.$ds->feld3.'" size="20">
<input type="text" name="feld4" value="'.$ds->feld4.'" size="20">
<input type="hidden" name="id" value="'.$ds->id.'">
</form>
</td>
</div>
';
exit;
}
}
?>
<html>
<head>
<script type="text/Javascript">
<!--
function AjaxManager() {
var self = this;
self.RequestComplete = null;
this.RequestComplete = self.RequestComplete;
self.RequestFailed = null;
this.RequestFailed = self.RequestFailed;
// Wird aufgerufen von post und erzeugt ein RequestObjekt je nach Browser
this.XmlHttpRequest = function() {
var Request = null;
try {Request = new ActiveXObject("Msxml2.XMLHTTP");} catch(e) {
try {Request = new ActiveXObject("Microsoft.XMLHTTP");} catch(oc) {
Request = null;}
}
if (!Request && typeof(XMLHttpRequest) != "undefined") Request = new XMLHttpRequest();
return Request;
};
// Wird vom Requestobjekt aufgerufen wenn sich dessen ReadyState ändert (also eine Rückmeldung vom Server kommt)
this.ResponseHandler = function(Request){
var ResHandler = function() {
if (Request.readyState == 4) {
if (Request.status == 200) {self.RequestComplete(Request);}
else
{self.RequestFailed(Request);}
}
}
ResHandler.Request = Request;
ResHandler.RequestComplete = self.RequestComplete;
ResHandler.RequestFailed = self.RequestFailed;
return ResHandler;
}
};
// Postet Daten (parameters) an die URL
this.PostData = function(url,Parameters){
var Request = this.XmlHttpRequest();
if (Request != null) {
try {
Request.onreadystatechange = this.ResponseHandler(Request);
Request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Request.setRequestHeader("Content-length", parameters.length);
Request.setRequestHeader("Connection", "close");
Request.open("GET", DataSource, true);
Request.send(Parameters);
} catch(oc) {alert(oc);}
}
};
}; // Ende Ajax Klasse
// Dies sollte via <a href aufgerufen werden. Es sendet einen Request zum Server
// der als Ergebniss das Ändern Formular für den passenden Datensatz mit der "id" zurückliefern sollte
function editdata(id){
var url = "test.php?link=edit&id=" id; // Dieser Aufruf sollte nur das Edit Fomurlar erzeugen welches
// den Teil der Webseite ersetzt welches den Anzeigepart enthält
var myAjax = new AjaxManager();
myAjax.RequestComplete=fillForm(id);
myAjax.RequestFailed=window.alert("Remote Request Error");
myAjax.PostData(url,null);
}
// füllt beim Erhalt des Formulars das passende DIV aus
function fillForm(Request,id){
obj=document.getElementById(id);
if ((obj) && (Request)){
obj.innerHTML = Request.responseText;
}
}
</script>
</head>
<body>
<?php
$sql = 'SELECT * FROM tabelle';
$query = mysql_query($sql) or die(mysql_error());
echo '<table border="1" bordercolor="#000000" width="100%" style="border-collapse: collapse">';
while ($ds = mysql_fetch_object($query)){
echo '<tr>
<div id="'.$ds->id.'">
<td>'.$ds->feld1.'</td>
<td>'.$ds->feld2.'</td>
<td>'.$ds->feld3.'</td>
<td>'.$ds->feld4.'</td>
<td><a href="#" onclick="editdata('.$ds->id.')">edit</a></td>
</div>
</tr>';
}
echo '</table>';
?>
</body>
</html>
Weiß von euch eventuell jemand, was ich falsch mache?
mfg
forsterm