getConnection(); $folder = __DIR__ . "/photos/matrici/"; // cartella corretta $files = scandir($folder); function normalize($str) { $str = strtolower($str); $str = preg_replace('/[^a-z0-9]/', '', $str); // rimuove tutto ciò che non è alfanumerico return $str; } // Carico matrici $sql = "SELECT id, nome FROM matrice"; $matrici = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC); $matched = []; $unmatchedPhotos = []; foreach ($files as $file) { // ignora file nascosti, . e .. if ($file === "." || $file === "..") continue; $fileNoExt = pathinfo($file, PATHINFO_FILENAME); $normFile = normalize($fileNoExt); $found = false; foreach ($matrici as $m) { $normNome = normalize($m['nome']); if ($normNome === "") continue; // evita errori su record vuoti // MATCHING: inizia con oppure contiene if (strpos($normFile, $normNome) === 0 || strpos($normFile, $normNome) !== false) { $update = $pdo->prepare("UPDATE matrice SET photo = ? WHERE id = ?"); $update->execute([$file, $m['id']]); $matched[] = [$file, $m['nome']]; $found = true; break; } } if (!$found) { $unmatchedPhotos[] = $file; } } // RISULTATO: echo "

✔ FOTO ASSOCIATE

"; if (empty($matched)) echo "Nessuna foto trovata"; foreach ($matched as $m) { echo "✔ {$m[0]} → Matrice: {$m[1]}
"; } echo "

❌ FOTO NON ASSOCIATE

"; if (empty($unmatchedPhotos)) echo "Tutte le foto hanno trovato una matrice!"; foreach ($unmatchedPhotos as $u) { echo "❌ $u
"; }