Buona sera a tutti, partecipo per la prima volta in questo forum e vorrei chiedere il vostro aiuto per un problema che ad oggi non sono riuscito a venirne a capo e cioè:
nel DataTables dipendenti c'è il campo foto, questo campo è valorizzato dal numero di matricola del dipendente più l'estensione png, quindi per esempio il dipendente con matricola 0932 avrà il campo foto valorizzato con 0932.png, consideriamo che la colonna non ha campi null ne vuoti perchè tutti i dipendenti hanno una matricola, questo campo foto si collega alla cartella "../img/dip/foto.png", quindi si carica le foto dei dipendenti e li mostra come miniature 50X50, ora la maggior parte dei dipendenti hanno la loro foto, ma alcuni non ancora, quindi quando dentro la cartella non si trova la foto restituisce nel campo la dicitura immagine del dipendente con l'icona dell'immagine mancante, ora siccome non è elegante da vedere, avrei pensato di sfruttare un png che ha l'immagine di un omino grigio e al centro la dicitura no photo, ho già questa immagine nella cartella (NoPhoto.png) insieme alle altre foto dei dipendenti, quindi la mia idea era, che attraverso una funzione si controlla nella cartella se esiste la foto relativa al valore dell campo, quindi 0932.png , perchè le foto hanno la stessa denominazione del valore campo, se esiste la mostri nella tabella, se non esiste invece mostri nel campo foto inerente a quella matricola l'immagine NoPhoto.png.
ma ad oggi non sono riuscito, posto qui il codice di inizializzazione della tabella, sperando che qualcuno mi possa dare una mano.
grazie anticipatamente a tutti in ogni caso
$(document).ready(function () {
let badgeTable = null; // Variabile per mantenere il riferimento alla tabella dei badge
// Inizializzazione della tabella dei dipendenti
let table = $('#example').DataTable({
select: true,
lengthMenu: [5, 10],
"ajax": {
"url": "../php/dipendente1.php",
"dataSrc": "data"
},
"order": [[1, 'asc']],
"language": {
"url": "../json/italiano.json"
},
"columns": [
{ "data": "iddip" },
{ "data": "matr" },
{ "data": "cognome" },
{ "data": "nome" },
{ "data": "nascita" },
{ "data": "matrcomune" },
{ "data": "assunzione" },
{ "data": "iniznomin" },
{ "data": "foto" },
{ "data": "stato" },
{ "data": "tot_badge" }
],
"columnDefs": [
{
"targets": [0], // Indice della colonna da nascondere (0 per la prima colonna)
"visible": false, // Imposta la visibilità della colonna su falso
"searchable": false // Impedisce la ricerca sulla colonna
},
{
"targets": 8, // Indice della colonna con il percorso dell'immagine
"render": function(data, type, row, meta) {
return '<img src="' + data + '" alt="Immagine dipendente" style="width:50px;height:50px;">';
}
}
]
});
Questa è la parte in php dove ricavo l'array dei dipendenti.
<?php
// Includi il file di connessione al database
require_once('connessione.php');
try {
// Query per recuperare i dipendenti attivi con il totale dei badge associati
$query = "
SELECT
d.iddip,
d.matr,
d.cognome,
d.nome,
DATE_FORMAT(d.dnascita, '%d/%m/%Y') AS nascita,
d.matrcomune,
DATE_FORMAT(d.dassunzione, '%d/%m/%Y') AS assunzione,
d.iniznomin,
d.foto,
d.stato,
COUNT(b.idbadge) AS tot_badge
FROM
dipendente d
LEFT JOIN
badge b ON d.iddip = b.iddip
WHERE
d.stato ='ATTIVO'
GROUP BY
d.iddip,
d.matr,
d.cognome,
d.nome,
d.dnascita,
d.matrcomune,
d.dassunzione,
d.iniznomin,
d.foto,
d.stato";
// Prepara e esegui la query
$statement = $pdo->prepare($query);
$statement->execute();
// Array per le righe dei dati
$fetchdata = array('data' => array());
// Ciclo attraverso i risultati per costruire le righe
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
$fotoMiniatura = "../img/dip/" . $row['foto'];
$fetchdata['data'][] = array(
'iddip' => $row['iddip'],
'matr' => $row['matr'],
'cognome' => $row['cognome'],
'nome' => $row['nome'],
'nascita' => $row['nascita'],
'matrcomune' => $row['matrcomune'],
'assunzione' => $row['assunzione'],
'iniznomin' => $row['iniznomin'],
'foto' => $fotoMiniatura,
'stato' => $row['stato'],
'tot_badge' => $row['tot_badge'] // Totale dei badge associati
);
}
// Restituzione dei dati come JSON
echo json_encode($fetchdata, JSON_UNESCAPED_UNICODE);
} catch (PDOException $e) {
// Gestione degli errori
echo json_encode(array('error' => 'Errore durante l\'esecuzione della query: ' . $e->getMessage()), JSON_UNESCAPED_UNICODE);
}
?>
fin qui sono riuscito a caricare le immagini nel campo foto , ma non riesco a gestire l'assegnazione dell'immagine di default quando la foto non esiste nella cartella