Динамично променяне на стойност на поле

DirectX

Registered
Идеята е да стане като в Excel, само че тук информацията от базата я изкарвам в таблица и когато искам да променя нещо, само въвеждам новата стойност и тя се запомня веднага в базата:p
 
Да кажем, че променяш нещо в полето. За да извършиш промяна би следвало да въведеш текст. Използваш момента onKeyUp като атрибут на полето. Това събитие трябва да ти извика някоя ajax функция, която да задвижи скрипт от сорта на submit.php?rowname=полето&content=съдържание.

Тази схема е перфектна, ако реално таблицата ти ще наподобява excel. Не е подходяща само за по-дълги текстове, защото по default уебсървъра ограничава GET заявките до 8kb
 
DireWolf каза:
Да кажем, че променяш нещо в полето. За да извършиш промяна би следвало да въведеш текст. Използваш момента onKeyUp като атрибут на полето. Това събитие трябва да ти извика някоя ajax функция, която да задвижи скрипт от сорта на submit.php?rowname=полето&content=съдържание.

Тази схема е перфектна, ако реално таблицата ти ще наподобява excel. Не е подходяща само за по-дълги текстове, защото по default уебсървъра ограничава GET заявките до 8kb
Най-много до 7 символа в цифри, да променям. Обаче ми дойде и друго на ум - във всяка клетка на таблицата слагам по едно поле със value = "<?php ... ?> и то нали излиза дадената стойност която може да се изтрие -> като я изтрия и въведа новата само натискам на бутон промени който ми прави update на всички полета и е готово. Това което ми предлагаш ти ми се струва малко по-трудно, но пък по-удобно и ако може да ми кажеш точно как ще стане, защото с ajax никога не съм се занимавал :(
 
Код:
var xmlHttp
function updateRow(row,str) {
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null) {
alert ("Browser does not support HTTP Request")
return
}
var url="submit.php?row=" + row + "&str=" + str
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function stateChanged() {
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {

}
}

function GetXmlHttpObject() {
var objXMLHttp=null
if (window.XMLHttpRequest) {
objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject) {
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}

Сложи този код в някой файл, например update.js

Остава да нагласиш html
Код:
<html>
<head>
<script src="update.js"></script>
</head>
<body>
<form>
<input type="text" id="row1"
onkeyup="updateRow(this.id,this.value)">
</form>
</body>
</html>

А след това да си оправиш и submit.php

XML ще подаде на скрипта ти стойности на $_GET['row'] и $_GET['str'] ,
съответно id-то и съдържанието на полето. Филтрираш и пращаш в базата :)

За структурата на базата данни - трябва ти една таблица с 2 колони - id на полето и съдържание. При промяна просто използваш UPDATE на записа, отговарящ за полето, което променяш.
 

Горе