added feature to save image into database and after upload it can be chose by dropdown
This commit is contained in:
parent
493de65892
commit
939a4fe03e
@ -104,6 +104,11 @@ $(document).ready(function () {
|
|||||||
const selector = $('<select id="photoSelector"></select>');
|
const selector = $('<select id="photoSelector"></select>');
|
||||||
photos.forEach((photo, index) => {
|
photos.forEach((photo, index) => {
|
||||||
const option = $('<option></option>').val(photo).text(`Photo ${index + 1}`);
|
const option = $('<option></option>').val(photo).text(`Photo ${index + 1}`);
|
||||||
|
// display option with photo name if available
|
||||||
|
if (photo.includes("/")) {
|
||||||
|
const photoName = photo.split("/").pop();
|
||||||
|
option.text(`Photo ${index + 1} - ${photoName}`);
|
||||||
|
}
|
||||||
selector.append(option);
|
selector.append(option);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -637,23 +642,34 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
const dataURL = canvas.toDataURL("image/png");
|
const dataURL = canvas.toDataURL("image/png");
|
||||||
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
||||||
const defaultName = `photo_${$("#partsModal").data("iddatadb")}_${timestamp}.png`;
|
const iddatadb = $("#partsModal").data("iddatadb"); // 🟢 ეს გადავაგზავნოთ
|
||||||
|
const defaultName = `photo_${iddatadb}_${timestamp}.png`;
|
||||||
|
|
||||||
const newName = prompt("Inserisci il nome del file (senza estensione):", defaultName.split(".png")[0]);
|
const newName = prompt("Inserisci il nome del file (senza estensione):", defaultName.split(".png")[0]);
|
||||||
|
|
||||||
if (newName) {
|
if (newName) {
|
||||||
const finalName = newName + "_" + timestamp + ".png";
|
const finalName = newName + "_" + timestamp + ".png";
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "save_annotated_photo.php",
|
url: "save_annotated_photo.php",
|
||||||
method: "POST",
|
method: "POST",
|
||||||
data: { dataURL: dataURL, filename: finalName },
|
data: {
|
||||||
|
dataURL: dataURL,
|
||||||
|
filename: finalName,
|
||||||
|
iddatadb: iddatadb // 🟢 გადავცემთ PHP–ს
|
||||||
|
},
|
||||||
success: function (response) {
|
success: function (response) {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
alert("Foto salvata con successo: " + response.file_path);
|
alert("Foto salvata con successo: " + response.file_path);
|
||||||
|
// update photo list or refresh the modal
|
||||||
|
$("#samplePhoto").attr("src", response.file_path);
|
||||||
|
loadPhoto(iddatadb); // reload to update markers
|
||||||
|
clearCanvasMarkers(); // reset markers after save
|
||||||
} else {
|
} else {
|
||||||
alert("Errore nel salvataggio: " + response.message);
|
alert("Errore: " + response.message);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (xhr, status, error) {
|
error: function (xhr, status, error) {
|
||||||
alert("Errore nel salvataggio della foto: " + error);
|
alert("Errore Ajax: " + error);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,25 +1,53 @@
|
|||||||
<?php
|
<?php
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
include('include/headscript.php');
|
include('include/headscript.php'); // აქედან უნდა იყოს DB კავშირიც
|
||||||
|
error_reporting(E_ALL);
|
||||||
|
ini_set('display_errors', 1);
|
||||||
|
|
||||||
$dataURL = $_POST['dataURL'] ?? null;
|
$dataURL = $_POST['dataURL'] ?? null;
|
||||||
$filename = $_POST['filename'] ?? null;
|
$filename = $_POST['filename'] ?? null;
|
||||||
|
$iddatadb = $_POST['iddatadb'] ?? null; // 🟢 ახალი ველი
|
||||||
|
|
||||||
if (!$dataURL || !$filename) {
|
if (!$dataURL || !$filename || !$iddatadb) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Dati mancanti']);
|
echo json_encode(['success' => false, 'message' => 'Dati mancanti']);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// --- ფაილის შენახვა ---
|
||||||
$data = explode(',', $dataURL)[1];
|
$data = explode(',', $dataURL)[1];
|
||||||
$decodedData = base64_decode($data);
|
$decodedData = base64_decode($data);
|
||||||
$filePath = '../photostrf/annotated/' . $filename; // Crea una sottocartella 'annotated' per le foto modificate
|
|
||||||
if (!file_exists('../photostrf/annotated')) {
|
$dirPath = '../photostrf/annotated';
|
||||||
mkdir('../photostrf/annotated', 0777, true);
|
if (!file_exists($dirPath)) {
|
||||||
|
mkdir($dirPath, 0777, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$filePath = $dirPath . '/' . $filename;
|
||||||
file_put_contents($filePath, $decodedData);
|
file_put_contents($filePath, $decodedData);
|
||||||
echo json_encode(['success' => true, 'file_path' => $filePath, 'message' => 'Foto salvata con successo']);
|
|
||||||
|
$db = DBHandlerSelect::getInstance();
|
||||||
|
$pdo = $db->getConnection();
|
||||||
|
|
||||||
|
// --- ბაზაში ჩაწერა ---
|
||||||
|
$stmt = $pdo->prepare("
|
||||||
|
INSERT INTO datadb_photos (iddatadb, file_path, file_name, uploaded_at, uploaded_by)
|
||||||
|
VALUES (:iddatadb, :file_path, :file_name, NOW(), :uploaded_by)
|
||||||
|
");
|
||||||
|
$stmt->execute([
|
||||||
|
':iddatadb' => $iddatadb,
|
||||||
|
':file_path' => $filePath,
|
||||||
|
':file_name' => $filename,
|
||||||
|
':uploaded_by'=> $iduserlogin
|
||||||
|
]);
|
||||||
|
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'file_path' => $filePath,
|
||||||
|
'message' => 'Foto salvata con successo e registrata nel DB'
|
||||||
|
]);
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Errore nel salvataggio: ' . $e->getMessage()]);
|
echo json_encode(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user