PHP / AJAX, импортирующий данные XML в базу данных MySQL, не работает

Я пытаюсь использовать PHP/Ajax загрузить XML файл и импортировать данные в мою базу данных. Кажется, все работает без сбоев, у меня есть кнопка и функция, чтобы уведомить меня, был ли файл загружен или нет, однако, когда я просматриваю свою базу данных, информации там нет.

(Я следовал учебному пособию, пытаясь адаптировать его к моим собственным потребностям / структуре файла XML).

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>';
}

Я очень новичок в этом, поэтому, пожалуйста, будьте добры.

Что означает [$ i] после узла в массиве? У меня ощущение, что сложность моего XML-файла делает его непонятным, неправильно ли я это обозначаю? XML-файл учебника имеет только 2 узла, поэтому он структурирован как таковой;

':name'     =>  $data->employee[$i]->name,
':position'     =>  $data->employee[$i]->position,

Для более сложных XML файлы, какова будет структура? Или я полностью упускаю суть.

1

Решение

У меня была такая же потребность 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 и добавить данные в вашу базу данных

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector