Я хочу обновить базу данных с помощью Flash (ввод текста)
Вот мой php код
<?php
mysql_pconnect ("localhost", "root", "");
mysql_select_db ("adaptasi");
$isi = isset($_POST['OutData']);
$query2 = "UPDATE materi SET isi='$isi' WHERE id = 1";
$result2=mysql_query($query2) or die("Query Failed : ".mysql_error());
?>
Вот мой Actionscript 2
function SubmitData()
{
trace("Sending");
var OutData = new LoadVars();
text_morfologi.text = OutData.OutData;
filepath = "http://localhost/adaptasi/";
OutData.sendAndLoad(filepath + "editmorfologi.php", OutData, "POST");
}
btnsave.onRelease = function()
{
SubmitData();
btnedit.visible = true;
btnsave.visible = false;
};
Но результат isi в базе данных — «1», а не текст, который я ввожу в текстовое поле.
Спасибо
У вас есть некоторые проблемы в вашем коде:
ActionScript 2:
Чтобы отправить данные с помощью LoadVars
объект, который вы должны прикрепить к этому объекту в качестве его свойств, и если вы хотите получить ответ от вашего серверного скрипта, вы можете использовать LoadVars.sendAndLoad()
но если вы хотите просто отправить эти данные, не ожидая ответа, вы можете использовать LoadVars.send()
.
Предполагается, что вы будете использовать sendAndLoad()
функция, так что ваш код может быть таким:
var url:String = 'http://www.example.com/update.php';
// the LoadVars object that will receive (load) a response from the server
var receiver:LoadVars = new LoadVars();
receiver.onLoad = function(success:Boolean)
{
if (success) {
trace(receiver.response); // gives for example : update successful
} else {
trace('error');
}
}
// the LoadVars object which will send (post) some data to the server
var sender:LoadVars = new LoadVars();
sender.id = txt_id.text;
sender.name = txt_name.text;
sender.sendAndLoad(url, receiver); // we don't set the method to POST because that's its default value
PHP:
Как упоминалось во многих комментариях, PHP isset()
Функция используется для проверки, если переменная установлена и не имеет значение NULL, и возвращает логическое значение ( TRUE
из FALSE
) когда это приведение (преобразование) в строку дам тебе 1
за TRUE
и « (пустая строка) для FALSE
,
В вашем случае, и в соответствии с вами, я думаю, что в качестве переменной $_POST['OutData']
очевидно установлено, isset($_POST['OutData'])
истина, которая будет устанавливать значение $isi
в 1
, так что вы получите:
$query2 = "UPDATE materi SET isi='1' WHERE id = 1";
но в соответствии с вашим опубликованным кодом, я думаю, что вы должны получить:
$query2 = "UPDATE materi SET isi='' WHERE id = 1";
Возвращаясь к нашему текущему примеру, мы получим две переменные POST (id и name), отправленные сценарием AS2 для обновления БД, а затем вернем ответ, если данные были успешно обновлены или нет:
<?php
if(isset($_POST['id'] && isset($_POST['name']))
{
$id = $_POST['id'];
$name = $_POST['name'];
mysql_pconnect('localhost', 'root', '');
mysql_select_db('my_db');
$query = "UPDATE users SET name = '$name' WHERE id = $id";
$result = mysql_query($query);
if($result){
echo 'response=update successful';
} else {
echo 'response=update failed';
}
}
?>
Конечно, здесь я попытался дать вам очень простой пример рабочего кода в соответствии с вашим текущим. Вы должны знать, что для вашей стороны PHP расширение «mysql» устарело в PHP 5.5.0 и было удалено в PHP 7, поэтому вы должны подумать об использовании «MySQLi» или же «ПДО» расширения, подробнее об этом, посмотрите Вот, также не забудьте дезинфицировать, утверждать а также побег данные любого пользователя … и для стороны ActionScript, возможно, пришло время начать изучение ActionScript 3 …
Надеюсь, что это может помочь.
Других решений пока нет …