说明:自己暂时备份的,是部分代码,对别人没有参考价值,六待以后整理
<?php
require_once 'xt_var.php';/*
* 返回值说明:
1000: 接收数据成功;
1001: 接收数据失败,失败原因:菜品名称不能为空;
1002: 接收数据失败,失败原因:菜品名称价格不能为空;
1003: 云服务器插入数据失败;
2000: 接收图片成功;
2001: 接收图片失败;
3000: 更新字典表成功
3001: 更新字典表失败
*/
$dataObj = new dataUploadObject();
$dataObj->updateData(); //同步信息到数据库
/*if (isset($_POST['xmlstr'])) {
$dataObj->updateData(); //同步信息到数据库
}
else if(is_uploaded_file($_FILES['myfile']['tmp_name'])) {
$dataObj->updateDishImage(); //同步菜品图片到服务器
}*/
class dataUploadObject
{
public function updateData()
{
//$postObj = simplexml_load_string($_POST['xmlstr'], 'SimpleXMLElement', LIBXML_NOCDATA);
$postObj = simplexml_load_file("bb.xml", 'SimpleXMLElement', LIBXML_NOCDATA);
$message_type = $postObj->head->field[0]["name"]; //发送消息的类型
switch ($message_type)
{
case "send":
$receiveData = new receiveDataObj(); //处理接收数据
$receiveData->updateDataToDB($postObj);
break;
case "getData":
$sendData = new sendDataObj(); //发送数据
$sendData->sendXml($postObj);
break;
case "getResult":
$dealResultSend = new dealResultSendObj(); //处理发送数据时返回的结果
$dealResultSend->updateByResult($postObj);
break;
default:
break;
}
}
public function updateDishImage()
{
$upfile=$_FILES["myfile"];
//获取数组里面的值
$name=$upfile["name"];//上传文件的文件名
$type=$upfile["type"];//上传文件的类型
$size=$upfile["size"];//上传文件的大小
$tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径
//把上传的临时文件移动到up目录下面
move_uploaded_file($tmp_name,"imageDishes/".$name);
$error=$upfile["error"];//上传后系统返回的值
if($error==0){
echo "1";
}
else
{
echo "0";
}
}
}
class receiveDataObj
{
public function updateDataToDB($postObj)
{
$item_str = "";
$col = $postObj->body->col;
for($i=0; $i<count($col); $i++)
{
$sql_field_name = "";
$sql_field_value = "";
$col_name = $col[$i]["name"];
$field = $col[$i]->field;
$id = "0";
for($j=0; $j<count($field); $j++)
{
if ("id" == $field[$j]["name"]) {
$id = $field[$j]["value"]; //获取ID
}
$sql_field_name .= $field[$j]["name"].","; //取表的字段名
$sql_field_value .= "'".$field[$j]["value"]."',"; //字段对应的值
}
$sql_field_name = substr($sql_field_name, 0, strlen($sql_field_name)-1);
$sql_field_value = rtrim($sql_field_value, ",");
//$res = $this->transmitSql($col_name, $sql_field_name, $sql_field_value); //构造sql,并写入数据库
$res = true;
if ($res) {
$item_str .= $this->transmitReturnXml($id, "1", "云平台接收数据成功");
} else
$item_str .= $this->transmitReturnXml($id, "0", "云平台接收数据失败");
}
echo "<msg>$item_str</msg>";
}
private function transmitSql($table_falg, $fieldStr, $valueStr)
{
$db_connect = get_sql_connection();
$table_name = getTableName($table_falg); //查询接收数据的表名
$sql_insert = "insert into ".$table_name." (".$fieldStr.") values (".$valueStr.")";
$result=mysql_query($sql_insert, $db_connect);
return $result;
}
private function transmitReturnXml($id, $resultCode, $resultMsg)
{
$itemTpl ="<result>
<id>%s</id>
<resultCode>%s</resultCode>
<resultMsg>%s</resultMsg>
</result>";
$item_str = sprintf($itemTpl, $id, $resultCode, $resultMsg);
return $item_str;
}
}
class sendDataObj
{
public function sendXml($postObj)
{
$col = $postObj->body->col;
$col_name = $col[0]["name"];
$table_name = getTableName($col_name); //查询接收数据的表名
$db_connect = get_sql_connection();
$res_data=mysql_query("select * from ".$table_name." where 1=1 ", $db_connect);
$res_column = mysql_query("select column_name, data_type from information_schema.columns where table_name='".
$table_name."'", $db_connect); //查询表的字段名
$result = $this->buildDataXml($res_data, $res_column); //构造xml
echo $result;
}
private function buildDataXml($res_data, $res_column)
{
$_doc = new DOMDocument( '1.0' , 'utf-8' ); // 声明 xml
$_doc ->formatOutput = true ; // 排版格式
$_root = $_doc ->createElement('msg'); // 创建一个主标签
$_head = $_doc ->createElement('head'); // 创建一个一级标签 head
$_body = $_doc->createElement("body"); // 创建另一个一级标签 body
$_head_field = $_doc ->createElement('field'); // 创建一个一级标签 head下的二级标签 field
$_head_field->setAttribute("name", "getData"); //添加属性
$_head_field->setAttribute("date", date("y-m-d h:i:s",time()));
$_head->appendChild($_head_field); //将二级标签 field 放入 head 中
if ($myrow = mysql_fetch_array($res_data))
{
while ($myrow = mysql_fetch_array($res_data))
{
$_body_col = $_doc->createElement('col'); // 创建一个一级标签 body下的二级标签 col
$_body_col->setAttribute("name", "dish_info"); //添加属性
$_body->appendChild($_body_col); //将二级标签 col 放入 body 中
mysql_data_seek($res_column,0); //定位到第一行
while ($mycol = mysql_fetch_array($res_column))
{
$_body_col_field = $_doc->createElement('field'); // 创建一个二级标签 col下的三级标签field
$_body_col_field->setAttribute("name", $mycol["column_name"]); //添加属性
$_body_col_field->setAttribute("type", $mycol["data_type"]); //添加属性
$_body_col_field->setAttribute("value", $myrow[$mycol["column_name"]]); //添加属性
$_body_col->appendChild($_body_col_field); //将三级标签field放入col中
}
}
}
$_root ->appendChild( $_head ); // 将一级标签 head 放入 root 里
$_root ->appendChild( $_body ); // 将一级标签 body 放入 root 里
$_doc ->appendChild( $_root ); // 将主标签写入 xml
// 生成 xml
$_doc ->save( 'aaa.xml' );
return $_doc->saveXML(); //输出字符串
}
}
class dealResultSendObj
{
public function updateByResult($postObj)
{
$col = $postObj->body->col;
for($i=0; $i<count($col); $i++)
{
$col_name = $col[$i]["name"];
$field = $col[$i]->field;
$table_name = getTableName($col_name); //查询接收数据的表名
$id = $field[0]["id"];
$field_value = $field[0]["value"];
$send_time = date("y-m-d h:i:s",time());
$sql_str = "update $table_name set if_send='$field_value', send_time = '$send_time' ".
" where id = '$id'";
$db_connect = get_sql_connection();
$result=mysql_query($sql_str, $db_connect);
}
}
}
/*根据xml的col节点的name属性获取数据库表名*/
function getTableName($col_name)
{
$sql_zxt_table = "select table_name from zxt_send_receive where col_name = '".$col_name."'";
$db_connect = get_sql_connection();
$res=mysql_query($sql_zxt_table,$db_connect);
$myrow = mysql_fetch_array($res);
return $myrow[0]; //查询接收数据的表名
}
?>
<?php
global $head_title;
function get_sql_connection()
{
$program_char = "utf8";
/*连本地数据库*/
$username=root;
$userpass=password123;
$dbhost=localhost;
$dbdatabase=dishes;
/*连新浪mysql*/
/*$username=SAE_MYSQL_USER;
$userpass=SAE_MYSQL_PASS;
$dbhost=SAE_MYSQL_HOST_M.":".SAE_MYSQL_PORT;
$dbdatabase=SAE_MYSQL_DB;*/
try {
$db_connect=mysql_connect($dbhost,$username,$userpass) or die("Unable to connect to the MySQL!");
mysql_select_db($dbdatabase,$db_connect);
mysql_set_charset($program_char, $db_connect);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(),'<br>';
}
return $db_connect;
}
?>