글쓰기 할때 싸인,서명 받기 코드 질문 드립니다. 채택완료
안녕하세요! 아래 코드에서 싸인 받았을때 wr_97 에다가 저장하려고 하는데 어디를 어떻게 수정해야될지 감이 안와서 이렇게 질문 드립니다... 고수님들 부탁드립니다... 어디 부분에서 넣어야 할까여 만약 view.skin.php 에서는 이런식으로 열면 되는게 맞나요??
고수님들 부탁드립니다!! ㅠㅜ
/////여기가 모달창 여는 코드 입니다/////
[인]
////// 여기서 부터 스크립트 시작 //////
function openSignatureModal() {
document.getElementById('signatureModal').style.display = 'block';
}
function closeSignatureModal() {
document.getElementById('signatureModal').style.display = 'none';
}
function saveSignature() {
var canvas = document.getElementById('signatureCanvas');
var signatureDataURL = canvas.toDataURL('image/png'); // 서명 이미지 데이터
// "(인)" 옆에 서명 이미지를 표시하는 영역을 찾습니다.
var signatureArea = document.getElementById('signatureArea');
// 기존에 이미지가 있는지 확인합니다.
var existingImage = signatureArea.querySelector('img');
if (existingImage) {
// 기존 이미지가 있으면, 새로운 서명 이미지로 교체합니다.
existingImage.src = signatureDataURL;
} else {
// 기존 이미지가 없으면, 새로운 이미지 요소를 생성하고 설정합니다.
var imgElement = document.createElement('img');
imgElement.src = signatureDataURL;
imgElement.style.width = '95px'; // 표시될 이미지 크기 조절
imgElement.style.height = '26px'; // 표시될 이미지 크기 조절
imgElement.style.marginBottom = '5px';
signatureArea.appendChild(imgElement);
}
closeSignatureModal(); // 서명 완료 후 모달 닫기
}
function clearCanvas() {
var canvas = document.getElementById('signatureCanvas');
var ctx = canvas.getContext('2d');
// 캔버스 크기만큼 사각형을 그리며 전체를 흰색으로 채웁니다.
// 이는 캔버스의 모든 내용을 지웁니다.
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
// 여기에 서명 캔버스에 대한 draw 함수 추가...
document.addEventListener('DOMContentLoaded', function() {
var canvas = document.getElementById('signatureCanvas');
var ctx = canvas.getContext('2d');
var drawing = false;
var prevX = 0, prevY = 0;
function getMousePosition(canvas, evt) {
var rect = canvas.getBoundingClientRect(); // 캔버스 위치 및 크기 정보
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
function getTouchPosition(canvas, touchEvent) {
var rect = canvas.getBoundingClientRect();
return {
x: touchEvent.touches[0].clientX - rect.left,
y: touchEvent.touches[0].clientY - rect.top
};
}
// 마우스 이벤트
canvas.addEventListener('mousedown', function(e) {
var pos = getMousePosition(canvas, e);
drawing = true;
prevX = pos.x;
prevY = pos.y;
});
canvas.addEventListener('mousemove', function(e) {
if (!drawing) return;
var pos = getMousePosition(canvas, e);
draw(prevX, prevY, pos.x, pos.y);
prevX = pos.x;
prevY = pos.y;
});
window.addEventListener('mouseup', function(e) {
if (drawing) {
drawing = false;
}
});
// 터치 이벤트
canvas.addEventListener('touchstart', function(e) {
e.preventDefault(); // 스크롤 등의 기본 이벤트 방지
var touch = getTouchPosition(canvas, e);
drawing = true;
prevX = touch.x;
prevY = touch.y;
}, false);
canvas.addEventListener('touchmove', function(e) {
e.preventDefault(); // 스크롤 등의 기본 이벤트 방지
if (!drawing) return;
var touch = getTouchPosition(canvas, e);
draw(prevX, prevY, touch.x, touch.y);
prevX = touch.x;
prevY = touch.y;
}, false);
canvas.addEventListener('touchend', function(e) {
if (drawing) {
drawing = false;
}
}, false);
function draw(x1, y1, x2, y2) {
ctx.beginPath();
ctx.strokeStyle = 'black';
ctx.lineWidth = 2;
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
ctx.stroke();
ctx.closePath();
}
// 이전 기능들
function openSignatureModal() {
document.getElementById('signatureModal').style.display = 'block';
}
function closeSignatureModal() {
document.getElementById('signatureModal').style.display = 'none';
}
답변 2개
다음을 참고하셔서 해보시는건 어떨까 합니다.
</p>
<p>function saveSignature() {
var canvas = document.getElementById('signatureCanvas');
var signatureDataURL = canvas.toDataURL('image/png'); // 서명 이미지 데이터</p>
<p> // 이미지를 저장한 후에 PHP 변수에 할당
<?php
// PHP 코드를 JavaScript 문자열로 출력하여 JavaScript 변수에 저장
echo "var signatureImage = '" . $view['wr_97'] . "';";
?></p>
<p> // "(인)" 옆에 서명 이미지를 표시하는 영역을 찾습니다.
var signatureArea = document.getElementById('signatureArea');
// 기존에 이미지가 있는지 확인합니다.
var existingImage = signatureArea.querySelector('img');</p>
<p> if (existingImage) {
// 기존 이미지가 있으면, 새로운 서명 이미지로 교체합니다.
existingImage.src = signatureDataURL;
} else {
// 기존 이미지가 없으면, 새로운 이미지 요소를 생성하고 설정합니다.
var imgElement = document.createElement('img');
imgElement.src = signatureDataURL;
imgElement.style.width = '95px'; // 표시될 이미지 크기 조절
imgElement.style.height = '26px'; // 표시될 이미지 크기 조절
imgElement.style.marginBottom = '5px';
signatureArea.appendChild(imgElement);
}</p>
<p> // 이미지를 PHP 변수에 할당
<?php
// JavaScript 변수에 저장된 서명 이미지를 PHP 변수에 할당
echo "$view['wr_97'] = signatureImage;";
?></p>
<p> closeSignatureModal(); // 서명 완료 후 모달 닫기
}
view.skin.php
</p>
<p><img src="<?php echo $view['wr_97']?>"></p>
<p>
답변에 대한 댓글 4개
[code]
function saveSignature() {
var canvas = document.getElementById('signatureCanvas');
var signatureDataURL = canvas.toDataURL('image/png'); // 서명 이미지 데이터
// 여기서 wr_97 변수에 서명 데이터를 저장합니다.
wr_97 = signatureDataURL;
// "(인)" 옆에 서명 이미지를 표시하는 영역을 찾습니다.
var signatureArea = document.getElementById('signatureArea');
// 기존에 이미지가 있는지 확인합니다.
var existingImage = signatureArea.querySelector('img');
if (existingImage) {
// 기존 이미지가 있으면, 새로운 서명 이미지로 교체합니다.
existingImage.src = signatureDataURL;
} else {
// 기존 이미지가 없으면, 새로운 이미지 요소를 생성하고 설정합니다.
var imgElement = document.createElement('img');
imgElement.src = signatureDataURL;
imgElement.style.width = '95px'; // 표시될 이미지 크기 조절
imgElement.style.height = '26px'; // 표시될 이미지 크기 조절
imgElement.style.marginBottom = '5px';
signatureArea.appendChild(imgElement);
}
closeSignatureModal(); // 서명 완료 후 모달 닫기
}
[/code]
혹시 몰라서 완료 버튼에도 넣어봤는데 똑같네요...
<button class="myButton5" style="margin-top:0px;" <?php echo $write['wr_97']?> type="button" onclick="saveSignature()">완료</button>
이렇게도 해보고
<input type="hidden" name="page" value="<?php echo $write['wr_97']?>">
이렇게도 따로 만들어서 해봤는데 안되네요..ㅠㅜ
[code]
<!-- 버튼 -->
<button class="myButton5" style="margin-top:0px;" type="button" onclick="saveAndSubmitSignature()">완료</button>
<!-- Hidden input -->
<input type="hidden" id="signatureData" name="signatureData" value="">
<!-- PHP -->
<?php
// PHP 변수 wr_97에 서명 데이터를 할당합니다.
$wr_97 = $_POST['signatureData'];
?>
[/code]
[code]
function saveAndSubmitSignature() {
var canvas = document.getElementById('signatureCanvas');
var signatureDataURL = canvas.toDataURL('image/png'); // 서명 이미지 데이터
// Hidden input에 서명 데이터를 설정합니다.
document.getElementById('signatureData').value = signatureDataURL;
// 서명 데이터를 PHP로 제출합니다. (예: form을 사용하여 POST 요청을 보냄)
// 여기서는 예제 코드이므로 실제로는 서버로 데이터를 제출하는 방법을 사용해야 합니다.
// 예: document.getElementById('myForm').submit();
}
[/code]
댓글을 작성하려면 로그인이 필요합니다.
saveSignature() 함수에 여분필드에 이미지데이터를 저장하는 부분이 없는것같습니다.
wr_97 input 을 hidden 으로 넣고 saveSignature() 함수가 실행될 때, append 로 이미지데이터를 넣어주면 될것같은데 어려우시면 아래 스킨 참고해보시면 될것같습니다.
서명쪽을 아래 스킨의 것으로 교체하시고 wr_1 > wr_97 로만 변경하셔도 작동할것같습니다. https://sir.kr/g5_skin/11807
답변에 대한 댓글 1개
해봤는데 글쓰기 할때는 이미지가 나오지만
view 페이지에서는 이미지 X 박스 처럼 나오더라구여...
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
<?php
// JavaScript 변수에 저장된 서명 이미지를 PHP 변수에 할당
echo "$view['wr_97'] = signatureImage;";
?>
이 부분도 안되서
echo "var signatureImage = '" . $write['wr_4'] . "';";
이렇게 수정 했습니다.