Variablen Text in MySQL DB per AJAX speichern

HansGruber

Grünschnabel
Hallo alle zusammen, ich habe mich verucht mit MySQL und AJAX auseinander zu setzen und habe ein interessantes Tut gefunden,
http://www.webmaster-eye.de/Notizen-mit-Ajax.330.artikel.html
ich verstehe auch alles soweit und kann es nachvollziehen.
Mein Problem besteht darin, dass es nicht funktioniert. Ich habe eine DB angelegt und kann den Text, den ich per Konsole in die Tabelle geschrieben habe beim Starten lesen aber ich kann keinen neuen Text Speichern, kann mir da jemand evtl. weiterhelfen?

hier die Notes.php
HTML:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test</title>
<script type="text/javascript">

var url = "dbPut.php?text="; // The server-side script

/*function handleHttpResponse() {

  if (http.readyState == 4) {

    // Split the comma delimited response into an array

    results = http.responseText.split(",");

    document.getElementById('city').value = results[0];

    document.getElementById('state').value = results[1];

  }

}*/

function updateDB() {
var txt = document.getElementById("txt").value;
http.open("GET", url + escape(txt), true);
//http.onreadystatechange = handleHttpResponse;
http.send(null);
document.getElementById("btn").value = "saved";
 }
 <!-- Nach betätigen des Buttons "save" wird save in saved geändert -->

function resetB(){
document.getElementById("btn").value = "save!";
}
<!-- Wenn im Textfeld etwas verändert wird saved wider in save geändert -->

function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5) try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (E){
 xmlhttp = false;
 }
 } @else xmlhttp = false; @end @*/ 
 if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
 try { xmlhttp = new XMLHttpRequest();
 } catch (e) {
 xmlhttp = false;
 }
 }
 return xmlhttp;
 } var http = getHTTPObject(); // We create the HTTP Object 
setInterval("updateDB()", 10000);
</script>
</head>

<body>

<!-- Damit beim laden der Seite schon was im Textfeld steht. Übernahme aus DB funktioniert. -->

<?php 

 $dbhost = 'localhost'; 
 $dbusername = 'test'; 
 $dbpasswd = 'test'; 
 $database_name = 'ajax'; 
 $connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd") or die ("Couldn't connect to server."); 
 $db = mysql_select_db("$database_name", $connection) or die("Couldn't select database."); 
 $sqlab = "select text from notes"; 
 $satz = mysql_query($sqlab); 
 $dsatz = mysql_fetch_assoc($satz); 
 ?>
<!-- HTML Teil. -->
 <input type="button" value="save!" id="btn" onclick="updateDB()" style="float:left"/>
<textarea cols="100" rows="20" id="txt" onchange="resetB()" onkeypress="resetB()">

<?php echo ($dsatz['text']) 
?>

</textarea>
</body>
</html>

und hier die dbPut.php
PHP:
<?php 
 $dbhost = 'localhost'; 
 $dbusername = 'test'; 
 $dbpasswd = 'test'; 
 $database_name = 'ajax'; 
 $connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd") or die ("Couldn't connect to server."); 
 $db = mysql_select_db("$database_name", $connection) or die("Couldn't select database."); 

session_start();
$_SESSION['name'] = "Exos_Sho";

$text = $_GET['text'];
$name = $_SESSION['name'];

$sql = "update notes set name='$name', text='$text'";
mysql_query($sql);

?>

Schonmal vielen dank im vorraus.
Wolle
 
Zuletzt bearbeitet:
Moin Hans,

heisst die Datei nun dpPut.php oder dbPut.php ?

Hast du schon mal in Firebug im Netzwerk-Tab nachgeschaut, was die Antwort dieser Datei(wieauchimmer sie nun heisst) ist...vielleicht wird dort eine Fehlermeldung ausgegeben.

Weiterhin:
diese beiden Kommentare:
Code:
 <!-- Nach betätigen des Buttons "save" wird save in saved geändert -->
<!-- Wenn im Textfeld etwas verändert wird saved wider in save geändert -->
..hast du diese so im Skript stehen?
Falls ja: das sind HTML-Kommentare, diese erzeugen in Javascript eine Syntaxfehler.
Kommentare sind in JS nur so zulässig:

Code:
/* Kommentar, kann auch über mehrere Zeilen gehen */
....oder
Code:
//Einzeiliger Kommentar, alles nach den Slashes ist Kommentar
 
Schonmal vielen dank für deine Antwort Sven.

Die datei heißt dbput.php. hab mich oben vertippt, werde ich gleich ändern ;)

Habe die Komentare jetzt geänder, danke für den Tipp.

Habe das ganze durch Firebug laufen lassen aber ich bekomme keine Antwort, nichts.

bei Header steht nur

Antwort-Header
Date Fri, 20 Nov 2009 07:14:19 GMT
Server Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0
X-Powered-By PHP/5.3.0
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Content-Length 0
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html

Anfrage-Header
Host localhost
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Referer http://localhost/test/notes/notes.php
Cookie PHPSESSID=de8d5dbubv6e4l1lnff295imk4
 
OK, das ist schon mal gut, diese Datei hat ja auch keine Ausgabe, wenn alles OK ist :-)

Debugge mal ein wenig:
  1. Schalte dort das error_reporting() ein.
  2. Lasse dir $_GET ausgeben
  3. Lasse dir nach dem Query mysql_error() ausgeben
  4. Lasse dir mysql_affected_rows() ausgeben

...und poste das Ergebnis hier :)
 
Zurück