[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ajax - запись в БД
glivera
Друзя, написал кое-ка с горем пополам вот такой вот скрипт

<script language="javascript" type="text/javascript">
//XmlHttpRequest используется для обмена данными с сервером, умеет отправлять запрос и получать ответ с сервера.
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
</script>

<script
language="javascript" type="text/javascript">
function
form() {
//создаём объект для запроса к серверу
var req = getXmlHttp();
//присваиваем переменным данные из нашей формы, для отправки серверу
var field1 = document.getElementById('field1').value;
var field2 = document.getElementById('field2').value;

//создаём URL обращения к серверу - имя_файла?переменна1=значение1&переменна2=значение2, и наш серверный PHP скрипт сможет спокойно получить данные при помощи $_GET[].
var url = 'ajax.php?field1='+field1+'&field2='+field2+';
//открываем соединение
req.open('GET', url, true);
// в нем будем отображать ход выполнения
var statusElem = document.getElementById('status');
// onreadystatechange активируется при получении ответа сервера
req.onreadystatechange = function() {
if (req.readyState == 4) {
// показать статус (Not Found, ОК..)
statusElem.innerHTML = req.statusText;
}
}

// отсылаем сформированный запрос
req.send(null);
// отображает статус во время выполнения (заменяет собой элемент div id="status"), в данном примере - перекрывает кнопку отправки данных (элегантное решение, чтобы предотвратить повторное нажатие кнопки отправки данных).
statusElem.innerHTML = 'Ожидаю ответа сервера...';
}
</script>
<body>
<form
action="ajax.php">
<table>
<tr>
<?

$query = mysql_query("SELECT * FROM user where id=78");
$querys = mysql_fetch_array($query);
$log = $querys['login'];
$pas = $querys['pass'];
echo $log;
?>
<td>
Название:</td><td><input type="text" id="field1" name="field1" value=""></td>
</tr>
<tr>
<td>
Ваше имя:</td><td><input type="text" id="field2" name="field2" value=""></td>
</tr>
<tr>
<td
colspan="2" align="left"><div id="status"><input type='button' onclick='form()' value='Добавить запись'></div></td>
</tr>
</table>
</form>
</body>


и вторая часть - добавление записи


<?
// подключаемся в БД MySQL
$dblocation="localhost"; #Хост
$dblogin="root"; #Логин
$dbpassword=""; #Пароль
$dbname="itstat"; #Имя базы


@mysql_connect($dblocation, $dblogin, $dbpassword) or die ("Не могу подключится к MySQL Server");
mysql_select_db($dbname) or die ("Не могу подключится к MySQL БД");
// Запрос на вставку переденных из формы данных в нашу таблицу
$new1 = $_GET['field1'];
$new2 = $_GET['field2'];


$query = "INSERT INTO testo VALUES
(
NULL,
'
$new1',
'
$new2'

)"
;

mysql_query($query) or die(mysql_error());
?>

но переменная почему то не передается во второй файл, и запись соответственно не добавляется. никак не могу найти косяк((



Спустя 34 минуты, 51 секунда (17.11.2009 - 09:02) Michael написал(а):
Есть несоответствия. Вот рабочий код (только тут post):

	var dat1=document.form1.text1.value;
dat1=encodeURIComponent(dat1);
var query="name="+dat1;
xmlhttp.open('POST', 'http://localhost/ajax_otv7.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
xmlhttp.onreadystatechange=Refresh;
//alert(query);
xmlhttp.send(query);


Проверь.

Спустя 22 минуты, 39 секунд (17.11.2009 - 09:25) twin написал(а):
А как ты узнаешь, что не передается? У тебя запрос кривой, вот этот:
$query = "INSERT INTO testo VALUES
(
NULL,
'
$new1',
'
$new2'

)"
;

а передаваться может и передается, ты же ответа не ждешь.

Спустя 23 часа, 33 минуты, 28 секунд (18.11.2009 - 08:58) glivera написал(а):
а чего он кривой? не вижу что не так(((
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.