В моем приложении я хочу передавать данные с одного сервера на множество клиентов и наоборот.Я сделал это с помощью контроллера «syncs» на стороне сервера, который содержит метод «export_data», который преобразует данные в передаваемый формат, и теперь я передаю эти данные в метод «post_data», который содержит ссылку на контроллер клиента «sync», который имеетметод с именем «import_data» теперь этот метод import_data начинает вставлять эти данные в таблицу, если столбец «is_sync» в таблице серверов установлен в «0», если он имеет значение «1», то он уже показывает данные синхронизации в виде сообщения предупреждения.
, но при отправке данных с сервера на клиент ничего не происходит.
all_set.php
$.post('<?=base_url("syncs/export_data")?>',{ tablename :
'sma_class_set', ids : arr , async : true , cache : false},
function(ret){
alert(arr);
});
syncs.php
function export_data(){
$data = NULL;
if ( $_POST ) {
$table = $this->db->escape_str($_POST['tablename']);
$sales_id = $_POST['ids'];
$in_ids = implode(",", $sales_id);
if ( isset( $sales_id ) && !empty( $sales_id ) ) {
$sql = $this->db->query("SELECT * FROM `$table` WHERE `is_synced` = '0' AND `".$this->tables[$table]['exclude']."` IN($in_ids) ");
} else {
$sql = $this->db->query("SELECT * FROM `$table` WHERE `is_synced` = '0' ");
}
if ( !empty($sql->result_array()) ) {
$final = $str_array = array();
foreach ( $sql->result_array() as $sk => $sv){
$col = array();
foreach ($sv as $svk => $svl) {
if ( $svk != $this->tables[$table]['exclude'] ) {
array_push($col, "'$svl'");
}
}
array_push($final, explode("|", "(".implode(",", $col).")|"));
}
foreach ($final as $fk => $fv) {
array_push($str_array, $fv[0]);
}
$str = implode(",", $str_array);
$output = "INSERT INTO `$table`(".$this->tables[$table]['include'].") VALUES $str";
if ( filter_var($this->post_data($output), FILTER_VALIDATE_INT) === false ) {
$data = $this->post_data($output);
} else {
$this->db->query("UPDATE `$table` SET `is_synced` = '1' WHERE `".$this->tables[$table]['exclude']."` IN($in_ids) ");
$data = "Data Synced Successfully";
}
} else {
$data = "Already synced data";
}
} else {
$data = "Error no values posted";
}
echo $data;
}
function post_data($qry){
$qry = htmlspecialchars(urlencode($qry));
$data = "qry=" . $qry;
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL,"http://localhost/BDS/pos_app/sync/import_data" );//Localhost url here
curl_setopt( $ch, CURLOPT_AUTOREFERER, 1);
curl_setopt ( $ch, CURLOPT_HTTPHEADER, array ( 'Content-length: ' . strlen($qry)+1 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch, CURLOPT_POST,1);
curl_setopt( $ch, CURLOPT_POSTFIELDS,$data);
curl_setopt( $ch, CURLOPT_CRLF, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
клиентский "sync.php", который теперь импортирует данные, используя функцию "import_data"
sync.php
function import_data(){
$return = "";
if ( isset( $_POST['qry'] ) && !empty( $_POST['qry'] ) ) {
$qry = htmlspecialchars_decode( urldecode( $_POST['qry']));
$this->db->trans_start();
$this->db->query($qry);
$insert_id = $this->db->insert_id();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE) {
# Something went wrong.
$this->db->trans_rollback();
$return = "Error transaction could not be completed";
}
else {
# Everything is Perfect.
# Committing data to the database.
$this->db->trans_commit();
$return = $insert_id;
}
}else{
$return = "Data do not received in proper way";
}
echo $return;
}