我正在尝试使用$.post(url, $("#MainReturnForm").serialize(), function (res) {
$(id).append(res);
});
/ PHP
上传Ajax
文件并将数据导入我的数据库。这一切似乎运行顺利,我有按钮工作和一个功能,通知我文件是否已上传,但是当我去查看我的数据库时,信息不在那里。
(我正在按照教程,尝试根据自己的需要/ XML文件结构进行调整)。
XML
我对此很新,所以请善待。
[$ i]在数组中的节点后意味着什么?我有一种感觉,我的XML文件的复杂性令人困惑,我把它置于错误的位置?教程XML文件只有2个节点,因此结构如此;
if(isset($_FILES['file']['name']) && $_FILES['file']['name'] != '')
{
$valid_extension = array('xml');
$file_data = explode('.', $_FILES['file']['name']);
$file_extension = end($file_data);
if(in_array($file_extension, $valid_extension))
{
$data = simplexml_load_file($_FILES['file']['tmp_name']);
$connect = new PDO('mysql:host=localhost;dbname=hpr_db','root','root');
$query = "
INSERT INTO data(userid, firstname, lastname, objectid, productkey, logvolume, loglength)
VALUES(:userid, :firstname, :lastname, :objectid, :productkey, :logvolume, :loglength);";
$statement = $connect->prepare($query);
for($i = 0; $i < count($data); $i++)
$statement->execute(
array(
':userid' => $data->Machine->MachineUserID,
':firstname' => $data->Machine->OperatorDefinition->ContactInformation[$i]->FirstName,
':lastname' => $data->Machine->OperatorDefinition->ContactInformation[$i]->LastName,
':objectid' => $data->Machine->ObjectDefinition[$i]->ObjectUserID,
':productkey' => $data->Machine->SingleTreeProcessedStem->Log[$i]>ProductKey,
':logvolume' => $data->Machine->SingleTreeProcessedStem->Log[$i]->LogVolume,
':loglength' => $data->Machine->SingleTreeProcessedStem->Log->LogMeasurement[$i]->LogLength,
)
);
}
$result = $statement->fetchAll();
if(isset($result))
{
$output = '<div class="alert alert-success">Import Data Done</div>';
}
}
else
{
$output = '<div class="alert alert-warning">Invalid File</div>';
}
对于更复杂的':name' => $data->employee[$i]->name,
':position' => $data->employee[$i]->position,
文件,结构是什么?或者我完全忽略了这一点。
答案 0 :(得分:0)
我有同样的需要,最后使用了PHPExcel:
首先,您需要使用PHPExcel。之后,读取您的xls文件并将数据插入数据库。
使用以下结构读取xls文件并将其转换为PHP数组:
function fileInitializer($file, $needCells){
$array_data = array();
require_once 'libraries/PHPExcel/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$target_dir = "FILEPATH/".$file;
$objReader= new PHPExcel_Reader_Excel5();
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load( $target_dir);
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();
$rowIndex = 0;
foreach($rowIterator as $row){
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
if(1 == $row->getRowIndex ()) continue;
foreach ($cellIterator as $cell) {
foreach($needCells as $needCell){
if($needCell['cell_name'] == $cell->getColumn()){
$array_data[$rowIndex][$needCell['array_name']] = fai_convert_string_to_persian($cell->getCalculatedValue());
}
}
}
$rowIndex++;
}
return $array_data;
}
$file = 'FILENAME';
$needCells = array(
array('cell_name'=>'A', 'array_name'=>'id')
, array('cell_name'=>'B', 'array_name'=>'full_name')
);
$array_data = fileInitializer($file, $needCells);
并且在上面的过程中有一段时间在$ array_data中并将数据添加到数据库