MiSo: AJAX / PHP /SQL Formulare in die Datenbank packen.

Beitrag lesen

Ich hab mir was ausgedacht, wie ich die Inhalte aus einem Formular per JavaScript hole und sie in eine MySQL Datenbank eintrage per PHP. Dazu würd ich gern mal eure Meinung hören und Hinweise auf Probleme die dabei evtl. auftauchen könnten.

Man nehme ein beliebiges Formular...
<form name="beliebig">
<input type=text name="feld1">
<input type=text name="feld2">
<input type=text name="feld3">
<input type=button value="submit" onclick="eintragen(this.form.name);">
</form

Dazu das passende Script:

<script type="text/javascript">
function eintragen(formname)
{
var eingabefelder = document.forms[formname].getElementsByTagName('input');
              var queue='';
              for (var i=0; eingabefelder[i]!=null; i++)
              {
                  if (eingabefelder[i].type=='text')
                  {
                      queue = queue + eingabefelder[i].name + '=' + escape(eingabefelder[i].value) + '&';
                  }
              }

if (window.XMLHttpRequest)
    { // Mozilla, Safari, ...
      http_request = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    { // IE
      http_request = new ActiveXObject("Microsoft.XMLHTTP");
    }

http_request = new XMLHttpRequest();
    http_request.overrideMimeType('text/xml');

http_request.open('POST', 'eintragen.php', true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Connection", "close");

http_request.send(queue);

http_request.onreadystatechange = function()
    {
      if (http_request.readyState == 4)
      {
         alert(http_request.responseText);
         window.setTimeout("location.reload();", 3000);
      }
    }

}
</script>

Und ein Paar zeilen in der eintragen.php:

foreach ($_POST as $key => $value)
    {
        $keys.= $key . ",";
        $values.= "'$value',";
    }
    $keys = substr($keys,0,-1);
    $values = substr($values,0,-1);

$sql = "INSERT INTO Beispieltabelle($keys) VALUES ($values)";

mysql_query($sql) or die (mysql_error());

echo "eingetragen!";

Was haltet ihr von der Methode, abgesehen von "Abstand"?

mfg
Micha