americanloti
12-12-2006, 01:31 AM
Hello,
I'm having a strange problem on my application, and I can't understand what could possibly cause what I'm about to explain:
I'll try to be brief, and as much abstract as possible,but it's kind of complicated.
I have a ComboBox with 13 items in it. Based on the user selection the appropriate form shows up next to it (the form is created dynamically from mySQL). If the user completes the form without errors a value of true will be sent to a database. If there are discrepancies in the form however, a value of false is sent to the same table, and all the discrepancies are stored in an Array and then sent to another table as well. When I test the app from flash everything works great, but when I test it from the published html/swf it's not quite working. The weird thing is that if you select the first value in the combo box an put errors on purpose in its related form, nothing is going to the database, not the false value, nor the array with the discrepancies. However, if you do the same thing with any another form from any item in the combobox, everything works without any issue. I assume that the flash script is fine, since it works perfectly when tested on the IDE, and perfectly when published as long as you dont fill out the form related to the first combobox item. For the same reason I'm also assuming that the problem doesn't lie in php or mySQL.
If anyone of you would be so kind to help I can send the source. In the meantime I'll post the function I'm using to send data to php and the php function that it's supposed to store thta data in mySQL
Here they are:
function sendInventory() {
var aInventory:Array = new Array();
var aCount:Array = new Array();
var aQty:Array = new Array();
var aMake:Array = new Array();
var aModel:Array = new Array();
var aIn:Array = new Array();
for (var i:Number = 0; i < _root.inventory_mc.dataGrid.length; i++) {
aInventory.push(_root.inventory_mc.dataGrid.getIte mAt(i).sQty);
aCount.push(_root.inventory_mc.dataGrid.getItemAt( i).sIn)
if (aCount[i] != aInventory[i]) {
aQty.push(_root.inventory_mc.dataGrid.getItemAt(i) .sQty);
aMake.push(_root.inventory_mc.dataGrid.getItemAt(i ).sMake);
aModel.push(_root.inventory_mc.dataGrid.getItemAt( i).sModel);
aIn.push(_root.inventory_mc.dataGrid.getItemAt(i). sIn);
}
}
var serializer:Serializer = new Serializer();
var Qty:Object = serializer.serialize(aQty);
var Make:Object = serializer.serialize(aMake);
var Model:Object = serializer.serialize(aModel);
var Count:Object = serializer.serialize(aIn);
invLV.qty = Qty;
invLV.make = Make;
invLV.model = Model;
invLV.count = Count;
invLV.session_id = relativeID;
trace (aQty.length)
if (aQty.length == 0) {
invLV.check = "true"
} else {
invLV.check = "false";
}
invLV.action = "addInventory";
invLV.sendAndLoad(php_path + "/scripts/securityLog.php", invLV, "GET");
}
the PHP side:
// add Inventory
function addInventory($qty, $make, $model, $count, $session_id, $check) {
GLOBAL $db;
if(get_magic_quotes_gpc()) {
$qty = stripslashes($qty);
$make = stripslashes($make);
$model = stripslashes($model);
$count = stripslashes($count);
}
$aQty = unserialize($qty);
$aMake = unserialize($make);
$aModel = unserialize($model);
$aCount = unserialize($count);
$query = "UPDATE sessions SET check_inv = '$check' WHERE id='$session_id'";
mysql_query($query);
for ($i = 0; $i < count($aQty); $i++) {
$query = "INSERT INTO inventoryLog VALUES (NULL, '$aQty[$i]', '$aMake[$i]', '$aModel[$i]', '$aCount[$i]', '$session_id')";
mysql_query($query);
}
if(!$query) {
return "msg=" . mysql_error();
} else {
return "msg=ok";
}
}
I really have no idea what's going on, and I also have no way to test it from flash since it's working fine from there. I hope it make some sort of sense. Please, any help would be greatly apreciated. This project is very important for me.
Sorry for the long post, Thanks for your time!
I'm having a strange problem on my application, and I can't understand what could possibly cause what I'm about to explain:
I'll try to be brief, and as much abstract as possible,but it's kind of complicated.
I have a ComboBox with 13 items in it. Based on the user selection the appropriate form shows up next to it (the form is created dynamically from mySQL). If the user completes the form without errors a value of true will be sent to a database. If there are discrepancies in the form however, a value of false is sent to the same table, and all the discrepancies are stored in an Array and then sent to another table as well. When I test the app from flash everything works great, but when I test it from the published html/swf it's not quite working. The weird thing is that if you select the first value in the combo box an put errors on purpose in its related form, nothing is going to the database, not the false value, nor the array with the discrepancies. However, if you do the same thing with any another form from any item in the combobox, everything works without any issue. I assume that the flash script is fine, since it works perfectly when tested on the IDE, and perfectly when published as long as you dont fill out the form related to the first combobox item. For the same reason I'm also assuming that the problem doesn't lie in php or mySQL.
If anyone of you would be so kind to help I can send the source. In the meantime I'll post the function I'm using to send data to php and the php function that it's supposed to store thta data in mySQL
Here they are:
function sendInventory() {
var aInventory:Array = new Array();
var aCount:Array = new Array();
var aQty:Array = new Array();
var aMake:Array = new Array();
var aModel:Array = new Array();
var aIn:Array = new Array();
for (var i:Number = 0; i < _root.inventory_mc.dataGrid.length; i++) {
aInventory.push(_root.inventory_mc.dataGrid.getIte mAt(i).sQty);
aCount.push(_root.inventory_mc.dataGrid.getItemAt( i).sIn)
if (aCount[i] != aInventory[i]) {
aQty.push(_root.inventory_mc.dataGrid.getItemAt(i) .sQty);
aMake.push(_root.inventory_mc.dataGrid.getItemAt(i ).sMake);
aModel.push(_root.inventory_mc.dataGrid.getItemAt( i).sModel);
aIn.push(_root.inventory_mc.dataGrid.getItemAt(i). sIn);
}
}
var serializer:Serializer = new Serializer();
var Qty:Object = serializer.serialize(aQty);
var Make:Object = serializer.serialize(aMake);
var Model:Object = serializer.serialize(aModel);
var Count:Object = serializer.serialize(aIn);
invLV.qty = Qty;
invLV.make = Make;
invLV.model = Model;
invLV.count = Count;
invLV.session_id = relativeID;
trace (aQty.length)
if (aQty.length == 0) {
invLV.check = "true"
} else {
invLV.check = "false";
}
invLV.action = "addInventory";
invLV.sendAndLoad(php_path + "/scripts/securityLog.php", invLV, "GET");
}
the PHP side:
// add Inventory
function addInventory($qty, $make, $model, $count, $session_id, $check) {
GLOBAL $db;
if(get_magic_quotes_gpc()) {
$qty = stripslashes($qty);
$make = stripslashes($make);
$model = stripslashes($model);
$count = stripslashes($count);
}
$aQty = unserialize($qty);
$aMake = unserialize($make);
$aModel = unserialize($model);
$aCount = unserialize($count);
$query = "UPDATE sessions SET check_inv = '$check' WHERE id='$session_id'";
mysql_query($query);
for ($i = 0; $i < count($aQty); $i++) {
$query = "INSERT INTO inventoryLog VALUES (NULL, '$aQty[$i]', '$aMake[$i]', '$aModel[$i]', '$aCount[$i]', '$session_id')";
mysql_query($query);
}
if(!$query) {
return "msg=" . mysql_error();
} else {
return "msg=ok";
}
}
I really have no idea what's going on, and I also have no way to test it from flash since it's working fine from there. I hope it make some sort of sense. Please, any help would be greatly apreciated. This project is very important for me.
Sorry for the long post, Thanks for your time!