associate

This commit is contained in:
2026-08-13 08:10:19 +02:00
parent 8936ed1008
commit a40e59c406
+27 -3
View File
@@ -33,6 +33,17 @@ if (isset($_POST['formclass']) && $_POST['formclass'] === 'Y') {
$idassociateservice = (int) ($_POST['servicelist'] ?? 0);
if ($idmainservice > 0 && $idassociateservice > 0) {
// Evita duplicati: inserisci solo se l'associazione non esiste già
$stmtCheck = $pdo->prepare(
"SELECT COUNT(*) FROM associateclass
WHERE idmainservice = :main AND idassociateservice = :assoc"
);
$stmtCheck->execute([':main' => $idmainservice, ':assoc' => $idassociateservice]);
$alreadyExists = (int) $stmtCheck->fetchColumn() > 0;
if ($alreadyExists) {
$insertFeedback = ['type' => 'error', 'text' => 'Questa classe è già associata.'];
} else {
$stmt = $pdo->prepare(
"INSERT INTO associateclass (idmainservice, idassociateservice)
VALUES (:main, :assoc)"
@@ -44,6 +55,7 @@ if (isset($_POST['formclass']) && $_POST['formclass'] === 'Y') {
$insertFeedback = $ok
? ['type' => 'success', 'text' => 'Associazione aggiunta con successo.']
: ['type' => 'error', 'text' => 'Errore durante l\'associazione. Riprova.'];
}
} else {
$insertFeedback = ['type' => 'error', 'text' => 'Seleziona una classe da associare.'];
}
@@ -66,12 +78,21 @@ if ($idmain > 0) {
}
/* -------------------------------------------------------------------------
* Elenco di tutte le classi (per il dropdown), escludendo la principale
* Elenco delle classi per il dropdown:
* esclude la principale E quelle già associate a questa principale.
* ---------------------------------------------------------------------- */
$stmtAll = $pdo->prepare(
"SELECT idservice, servicename FROM service WHERE idservice != :idmain ORDER BY servicename"
"SELECT idservice, servicename
FROM service
WHERE idservice != :idmain
AND idservice NOT IN (
SELECT idassociateservice
FROM associateclass
WHERE idmainservice = :idmain2
)
ORDER BY servicename"
);
$stmtAll->execute([':idmain' => $idmain]);
$stmtAll->execute([':idmain' => $idmain, ':idmain2' => $idmain]);
$allServices = $stmtAll->fetchAll();
/* -------------------------------------------------------------------------
@@ -251,6 +272,9 @@ $associatedClasses = $stmtAssoc->fetchAll();
</option>
<?php endforeach; ?>
</select>
<?php if (empty($allServices)) : ?>
<small class="text-muted">Tutte le classi disponibili sono già state associate.</small>
<?php endif; ?>
</div>
</div>
</div>