fixed import insert
This commit is contained in:
@@ -40,6 +40,29 @@ error_log("Excelrows: " . json_encode($excelrows));
|
|||||||
|
|
||||||
$user_id = $iduserlogin ?? 1;
|
$user_id = $iduserlogin ?? 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Normalizza un nome colonna per il confronto header Excel <-> mapping.
|
||||||
|
* Risolve alla radice i mismatch causati da caratteri invisibili:
|
||||||
|
* - non-breaking space (U+00A0), narrow NBSP (U+202F), figure space (U+2007), ecc. -> spazio normale
|
||||||
|
* - tab, newline e altri whitespace -> spazio normale
|
||||||
|
* - spazi multipli consecutivi -> un solo spazio
|
||||||
|
* - trim ai bordi
|
||||||
|
* NB: usata SOLO per il matching, non altera i valori importati.
|
||||||
|
*/
|
||||||
|
function normalizeColName($s): string
|
||||||
|
{
|
||||||
|
$s = (string)$s;
|
||||||
|
// Converte i principali spazi Unicode "insidiosi" in spazio normale
|
||||||
|
$s = str_replace(
|
||||||
|
["\xC2\xA0", "\xE2\x80\xAF", "\xE2\x80\x87", "\xE2\x80\x89", "\xE2\x80\x8A", "\xEF\xBB\xBF"],
|
||||||
|
' ',
|
||||||
|
$s
|
||||||
|
);
|
||||||
|
// Qualsiasi sequenza di whitespace (spazi, tab, newline) -> singolo spazio
|
||||||
|
$s = preg_replace('/\s+/u', ' ', $s);
|
||||||
|
return trim((string)$s);
|
||||||
|
}
|
||||||
|
|
||||||
$db = DBHandlerSelect::getInstance();
|
$db = DBHandlerSelect::getInstance();
|
||||||
$pdo = $db->getConnection();
|
$pdo = $db->getConnection();
|
||||||
|
|
||||||
@@ -105,7 +128,12 @@ foreach ($selected_rows as $rowIndex) {
|
|||||||
$fieldValue = null;
|
$fieldValue = null;
|
||||||
if (!$mapping['is_manual']) {
|
if (!$mapping['is_manual']) {
|
||||||
$excelColumn = trim($mapping['excel_column']);
|
$excelColumn = trim($mapping['excel_column']);
|
||||||
$excelColumnIndex = array_search($excelColumn, array_map('trim', $columns));
|
// Match robusto: normalizza header e mapping (NBSP, spazi doppi, tab...)
|
||||||
|
// così un solo/doppio spazio o un non-breaking space non rompono il confronto.
|
||||||
|
$excelColumnIndex = array_search(
|
||||||
|
normalizeColName($excelColumn),
|
||||||
|
array_map('normalizeColName', $columns)
|
||||||
|
);
|
||||||
if ($excelColumnIndex !== false && isset($row[$excelColumnIndex]) && $row[$excelColumnIndex] !== '') {
|
if ($excelColumnIndex !== false && isset($row[$excelColumnIndex]) && $row[$excelColumnIndex] !== '') {
|
||||||
$fieldValue = $row[$excelColumnIndex];
|
$fieldValue = $row[$excelColumnIndex];
|
||||||
error_log("Found Excel column '$excelColumn' at index $excelColumnIndex, value: " . var_export($fieldValue, true));
|
error_log("Found Excel column '$excelColumn' at index $excelColumnIndex, value: " . var_export($fieldValue, true));
|
||||||
|
|||||||
Reference in New Issue
Block a user