После некоторого тестирования и царапин на голове я нашел несколько хорошее решение.
- просматривает каталог.
- находит новый файл.
- создает копию нового файла и отправляет его в другой каталог..
- создает таблицу с именем нового файла с использованием файла CSV.php.
- затем открывает скопированный файл и получает данные.
- создает массив из данных(из того, что я понимаю).
- считает данные.
- объединяет элементы массива со строкой.
- разбивает эту строку на "ячейки / отдельные значения"
- А затем вставляет данные в таблицу.
Примечание для тех, кто может захотеть их использовать.знать об этом ";"Возможно, вам придется изменить это на «,» в зависимости от того, как ваш файл отделен.мой файл отделен с помощью ";"и я использую utf8_encode
, чтобы я мог использовать специальные символы, такие как ÆØÅ. Изменения, которые вы должны сделать, находятся в этом времени.
while ($getdata = fgetcsv($openfile, 1000, ";")) {
$getdata = array_map("utf8_encode", $getdata);
$total = count($getdata);
// echo "<b>Row no:-</b>$row\n";
// echo "<b>Total fields in this row:-</b>$total\n";
$row++;
for ($c=0; $c < $total; $c++) {
$csvdata = implode(";", $getdata);
$fncsvdata = explode(";", $csvdata);
}
Я также создал таблицу, чтобы показать, как я получаю выходные данные на своем сайте.
Вот ответ
Это файл, который видит пользователь.в моем случае он называется csvtable.php
<?php
// File selector
$path = "./assets/csv";
$sourcepath = "assets/csv";
$copy = "assets/proceskontrol-csv";
$latest_ctime = 0;
$latest_filename = '';
$d = dir($path);
while (false !== ($entry = $d->read())) {
$filepath = "{$path}/{$entry}";
// could do also other checks than just checking whether the entry is a file
if (is_file($filepath) && filectime($filepath) > $latest_ctime){
$latest_ctime = filectime($filepath);
$latest_filename = $entry;
}
}
if (1+1 == 2){
copy("$sourcepath/$latest_filename","$copy/$latest_filename");
$csv->createCsvTable($latest_filename);
$row = 1;
if (($openfile = fopen("$copy/$latest_filename", "r")) !== FALSE) {
while ($getdata = fgetcsv($openfile, 1000, ";")) {
$getdata = array_map("utf8_encode", $getdata);
$total = count($getdata);
// echo "<b>Row no:-</b>$row\n";
// echo "<b>Total fields in this row:-</b>$total\n";
$row++;
for ($c=0; $c < $total; $c++) {
$csvdata = implode(";", $getdata);
$fncsvdata = explode(";", $csvdata);
}
$csv->insertCsvTable($latest_filename ,$fncsvdata);
}
}
}
echo'<h1 class="text-center">CSV Table</h1>';
echo'<h6 class="text-center">'.$latest_filename.'</h6>';
echo '<table class=" table table-striped table-bordered table-hover">';
echo'<tbody>';
?>
<table class="table-hover table table-striped table-bordered">
<thead>
<tr>
<th scope="col">id</th>
<th scope="col">Name</th>
<th scope="col">Datum</th>
<th scope="col">Property</th>
<th scope="col">Criterion</th>
<th scope="col">Type</th>
<th scope="col">Nominal</th>
<th scope="col">Actual</th>
<th scope="col">Tol-</th>
<th scope="col">Tol+</th>
<th scope="col">Dev</th>
</tr>
</thead>
<tbody>
<?php foreach($csv->getCsv($latest_filename) as $csv) { ?>
<tr>
<td><?= $csv->id; ?></td>
<td><?= $csv->Name; ?></td>
<td><?= $csv->Datum; ?></td>
<td><?= $csv->Property; ?></td>
<td><?= $csv->Criterion; ?></td>
<td><?= $csv->Type; ?></td>
<td><?= $csv->Nominal; ?></td>
<td><?= $csv->Actual; ?></td>
<td><?= $csv->Tolminus; ?></td>
<td><?= $csv->Tolplus; ?></td>
<td><?= $csv->Dev; ?></td>
</tr>
<?php }?>
</tbody>
</table>
Это мой файл класса базы данных DB.php
.используется много в CSV.php
<code><?php
class DB extends \PDO
{
/**
* @var
*/
private $host;
/**
* @var
*/
private $user;
/**
* @var
*/
private $pass;
/**
* @var PDO
*/
private $conn;
/**
* @var
*/
private $query;
/**
* @var bool
*/
private $debug = false;
/**
* @param bool $bool
*/
public function debug($bool = true)
{
$this->debug = $bool;
}
/**
* @param $sql
*/
private function setQuery($sql)
{
$this->query = $this->prepare($sql);
}
/**
* DB constructor.
* @param $dbhost
* @param $dbuser
* @param $dbpass
* @param array $options
*/
public function __construct($dbhost, $dbuser, $dbpass, $options = [])
{
try {
$this->conn = parent::__construct($dbhost, $dbuser, $dbpass, $options);
} catch (\PDOException $e) {
print "Fejl!: " . $e->getMessage() . "<br/>";
die();
}
}
/**
* @param string $sql
* @param bool $params
* @param int|mixed|null $returnType
* @return mixed
*/
public function query($sql, $params = false, $returnType = \PDO::FETCH_OBJ)
{
$this->setQuery($sql);
$this->execute($params);
$this->count = $this->query->rowCount();
return $this->query->fetchAll($returnType);
}
/**
* @param $params
*/
private function execute($params)
{
if($params){
$this->query->execute($params);
} else {
$this->query->execute();
}
if($this->debug){
echo '<pre id="debug_params">',$this->query->debugDumpParams(),'
';}} / ** * @param $ sql * @param bool $ params * @return mixed * / открытая функция single ($ sql, $ params = false) {$ data = $ this-> запрос ($ sql, $ params);if (sizeof ($ data) === 1) {return $ data [0];} else {return false;}} / ** * @param $ sql * @param bool $ params * @return mixed * / сначала открытая функция ($ sql, $ params = false) {запрос возврата $ this-> ($ sql, $ params) [0];} / ** * @param $ sql * @param bool $ params * @return mixed * / открытая функция last ($ sql, $ params = false) {вернуть запрос $ this-> ($ sql, $ params) [$ this-> количество - 1];} / ** * @param $ sql * @param bool $ params * @return mixed * / открытая функция toList ($ sql, $ params = false) {return $ this-> query ($ sql, $ params);} / ** * @param $ sql * @param bool $ params * @return mixed * / открытая функция lastId ($ sql, $ params = false) {$ this-> query ($ sql, $ params);return $ this-> lastInsertId ();}}
И это CSV.php
, где я создаю свои таблицы и вставляю данные.(sql вызывает)
<?php
class Csv extends \PDO {
private $db = null;
/**
* Settings constructor.
*/
public function __construct($db)
{
$this->db = $db;
}
/**
* Menu & Admin Menu
* @return mixed
*/
public function getCsv($latest_filename)
{
return $this->db->toList("SELECT * FROM `$latest_filename`");
}
public function createCsvTable($latest_filename)
{
return $this->db->toList("CREATE TABLE IF NOT EXISTS `$latest_filename`(
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50),
Datum VARCHAR(50),
Property VARCHAR(50),
Criterion VARCHAR(50),
Type VARCHAR(50),
Nominal DECIMAL(10,2),
Actual DECIMAL(10,2),
Tolminus DECIMAL(10,2),
Tolplus DECIMAL(10,2),
Dev DECIMAL(10,2))
");
}
public function insertCsvTable($latest_filename ,$fncsvdata)
{
return $this->db->toList("INSERT INTO `$latest_filename` (`Name`, `Datum`, `Property`, `Criterion`, `Type`, `Nominal`, `Actual`,`Tolminus`,`Tolplus`,`Dev`)
VALUES (:Name, :Datum, :Property, :Criterion, :Type, :Nominal, :Actual, :Tolminus, :Tolplus, :Dev)",
[
':Name' => $fncsvdata[0],
':Datum'=> $fncsvdata[1],
':Property'=> $fncsvdata[2],
':Criterion'=> $fncsvdata[3],
':Type'=> $fncsvdata[4],
':Nominal'=> $fncsvdata[5],
':Actual'=> $fncsvdata[6],
':Tolminus'=> $fncsvdata[7],
':Tolplus'=> $fncsvdata[8],
':Dev'=> $fncsvdata[9]
]);
}
}
Я действительно надеюсь, что кто-то может использовать это.