Seite 1 von 3

daten via ajax an datenbank schicken

Verfasst: 17.12.2007 12:27
von phillip
Hallo

Ich würde gerne den text eines textarea nach einem onchange an die Datenbank via PHP weitergeben.

Code: Alles auswählen

<textarea id="bio" class="full2" onBlur="TabInline.SwitchEdit(\'_Job\');" onChange="TabInline.SaveEdit(\'_Job\');">'.$row['beschreibung'].'</textarea>
Das Javascript besteht schon zum Teil, leider aber nicht ganz komplett wie ich es möchte...

Code: Alles auswählen

that.SaveEdit = function(id) {

		var objRead = document.getElementById('read' + id),

			objWrite = document.getElementById('write' + id),

			eStrings = objWrite.getElementsByTagName('input'),

			eTextArea = objWrite.getElementsByTagName('textarea'),

			eSelects = objWrite.getElementsByTagName('select');



		if (eStrings.length > 0) {

			objRead.innerHTML = eStrings[0].value;

		}

		if (eTextArea.length > 0) {

			objRead.innerHTML = eTextArea[0].value;

		}

		if (eSelects.length > 0) {

			objRead.innerHTML = eSelects[0].options[eSelects[0].selectedIndex].value;

		}

	};
Man müsste jetzt den geänderten Text nur noch per POST, oder was auch immer an eine PHP Datei weitergeben.

Die Sach mit PHP und MySQL könnte ich selber übernehmen, das ist kein Problem.

Da ich eigentlich recht wenig Ahnung von Javascript habe, wäre ich auf jede Hilfe angewiesen ;-)

Das original Feature:

http://www.tomcoote.co.uk/JavaScriptTabInline.aspx

Verfasst: 17.12.2007 13:09
von UGC
Soweit ich weiß, ist es nicht möglich, php einfach in ein javascript einzubauen.
Bin mir aber nicht so sicher ;)

Edit: Muss ja eigentlich möglich sein, aber ob das wirklich javascript ist... ;) Kann ja auch Flash oder Java sein :)

Verfasst: 17.12.2007 13:11
von phillip
ja das weiss ich ja selber ;-)

hier ein beispiel:

http://www.w3schools.com/php/php_ajax_database.asp

Ich wird daraus aber nicht so wirklich schlau, wie das beim JS geregelt ist ^^

Verfasst: 17.12.2007 14:06
von gn#36
Wenn du dich mit PHP aber nicht JavaScript auskennst, dann probier mal ein Tool wie XAJAX. Das kannst du von PHP aus steuern und es übernimmt die JavaScript Anteile der Programmierung so dass du dich darum - abgesehen von den Funktionsaufrufen in onBlur onClick etc. - nicht mehr darum kümmern musst.

Ich würde dir allerdings bei einer Textarea nicht unbedingt empfehlen onChange zu verwenden, denn das schickt bei jeder Änderung die Daten an den Server -> Viel Traffic. Das gilt besonders, wenn die Textarea üblicherweise für größere Mengen Text verwendet wird, bei kleinen Mengen mag das ja noch unerheblich sein.

Verfasst: 17.12.2007 14:11
von phillip
Hui, wieder mal Hilfe von der Extraklasse! Vielen Dank ;-)

ja genau, von XAJAX steht was in meinem Buch 'AJAX = Javascript + XML Für Schnelleinsteiger' ;-)

ja dann werde ich mich mal schlau machen darüber...

was würdest du dann empfehlen, ausser onchange?

Verfasst: 17.12.2007 14:26
von UGC
Einen Submit-Button :D

Verfasst: 17.12.2007 14:29
von phillip
UGC hat geschrieben:Einen Submit-Button :D
UGC du bist ein Idiot xD

nein der Vorschlag ist nicht schlecht, aber nicht das was ich suche ;-)

Verfasst: 17.12.2007 14:30
von UGC
Ich weiß ;) :D

Für welchen Zweck willst du das den Benutzen?
Dann könnte man die evtl. besser weiterhelfen ;)

Verfasst: 17.12.2007 17:03
von gn#36
Die Frage wäre natürlich ob du zwingend bei jeder Änderung was abschicken musst, d.h. in wieweit sollen sich andere angezeigte Dinge ändern, wenn du Text in dem Feld eingibst. Es ist sinnvoll, so viel wie möglich an Eventerkennung ins JavaScript auszulagern wenn du wirklich auf bestimmte Eingaben sofort reagieren möchtest/musst. Also beispielsweise wenn du den Text nur an die DB schicken willst, wenn darin das Wort "Eierschalensollbruchstellenverursacher" vorkommt, dann sollte die Erkennung des Wortes nicht im PHP Skript sondern im JavaScript liegen das dann ggf. über XAJAX die Verbindung anstößt. Dafür müsstest du dich dann natürlich zwangsweise ein wenig in JavaScript einarbeiten, allerdings sind die Formularfunktionen zum Glück auch nicht so extrem schlimm.

Wenn es ausreicht, dass die Daten da sind, wenn der User mit der Eingabe im Textfeld fertig ist und zu einem anderen Feld wechselt, dann würde ich onBlur benutzen. Das aktualisiert dann nur, wenn der Nutzer das Feld wieder verlässt, also die Eingabe quasi beendet. Wenn es ausreicht kannst du natürlich sogar auch auf den Klick auf einen Button reagieren, so dass du das Formular komplett nur über AJAX abschickst. Das hätte dann sogar Trafficvorteile, weil du weniger Daten zurückbekommst - normalerweise jedenfalls.

Verfasst: 17.12.2007 17:15
von phillip
huiuiui, soviel Text auf einmal ^^
Ja ich denke ich machs mit onBlur...
Das Ziel, was ich eigentlich erreichen will ist, dass der User sein profil in der Profilansicht bearbeiten kann, somit wäre schon wieder eine unnötige Seite gespart.

Das mit dem Formular abschicken via Button ist nicht schlecht, aber dann könnte ich auch ein normales Formular abschicken, verstehst du was ich meine, es ist dann nicht wirklich cooles AJAX XD

Und ich weiss auch nicht, ob der User bei dem Tüpfchen, dass er auf dem i noch vergessen hat immer ein Button bei jeder Änderung klicken will (Ja, so faul sind wir heutzutage, und es ist traurig :D )