개발 Q&A

제목 자바스크립트에서 나온 결과값을 PHP 구문에 if문 else문 만들고 싶은데요.
글쓴이 AMKORJS 작성시각 2014/07/15 13:14:49
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 20322   RSS
<script language="JavaScript">
function reverse_counter(){
  today = new Date();
  
  start_d_day = parseISO8601("$start_datetime");

   생략....
if(조건1){
document.getElementById('counter_box').innerHTML = "결과값1"
}else if(조건2){
document.getElementById('counter_box').innerHTML = "결과값2"
}else{
document.getElementById('counter_box').innerHTML = "결과값3"
}
//-->
</script>
<?php
$product_info_item.="
   
   생략.....
            
            <BODY onLoad='reverse_counter()'>
            <span id='counter_box'></span>
            
      생략.....
    ";


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓여기서 문제가 생기네요 ㅠ,ㅠ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
여기서 자바스크립트에서 가져온 값이 결과값1이나 결과값2냐 결과값3이냐 에따라

if(조건){
본 상품은 이미 상품기간이 지나 판매가 가능하지 않습니다.

}else if(조건2){

본 상품은 상품시작을 하지 않았습니다.

else{

본 상품은 판매가 가능합니다.

}



?>


자바스크립트의 reverse_counter함수에서 가져온 값이  span id='counter_box' 으로 값(카운트 다운)을 가져올때 

그다음 진행을 못하겠네요 ㅠ,ㅠ DB에서 컬럼 추가해 따로 만들자니 ㅠ,ㅠ 자바스크립트 결과값에 따라 값이 달라지기 때문에 따로 할수 없고..

어떻게 하면 좋을까요? ㅠㅠ,
 
 다음글 view페이지에서 페이지데이터갱신 (1)
 이전글 쿼리질문드립니다! (여러행으로 변환하기) (1)

댓글

한대승(불의회상) / 2014/07/15 15:16:47 / 추천 0
자바스크립트는 자바스크립트로... 이럴때 ajax를 사용해야죠.
AMKORJS / 2014/07/16 14:50:09 / 추천 0
답편 감사합니다. 

한가지 궁금한것이 있는데요 

ajax으로 처리하면 그 값을 php구문에 넘겨줄수 있는데.. 

문제는 각각 결과값을 $변수 로 담아야 하는데 이 방법은 ajax로 가능하지 않지 않나요? 

name값으로 value값으로 담으면 가능하는데 ㅠ,ㅠ 

php $변수로 담기에는 무리가 있지 않나요?
변종원(웅파) / 2014/07/16 14:59:14 / 추천 0
자바스크립트로 처리해야하는 값 자체를 ajax로 php에서 처리하여 넘겨줘야 합니다.
자바스크립트에서는 post로 php에 값을 전달하구요.

우선 서버단과 클라이언트단의 역할과 할 수 없는 작업 등에 대해 개념을 먼저 잡으시는게 좋을 것 같습니다.

저렇게 단편적인 스킬(?)에 대한 것 보다는 뭘 어떻게 하려는지 올려주시면 그에 대한 해결책을 드리는게 좋을 것 같네요
AMKORJS / 2014/07/16 15:18:38 / 추천 0
<script language="JavaScript">
function reverse_counter(){
생략...
if(today < start_d_day && start_days < end_d_day){ 
    document.product_list.counter_box.value = "  상품 개시 남은시간 :   " + start_daysRound  + 
    dy + start_hoursRound + hr + start_minutesRound + min + start_secondsRound + sec;
    newtime = window.setTimeout("reverse_counter();", 1000);
    return; 
  }else if(start_d_day <= today && today <= end_d_day) { 
    document.product_list.counter_box.value = "  상품 종료 남은시간 :   " + end_daysRound  + 
    dy + end_hoursRound + hr + end_minutesRound + min + end_secondsRound + sec;
    newtime = window.setTimeout("reverse_counter();", 1000);  
    return; 
  }else{
    //일:0 시간:0 분:0 초:0 이라면 종료메세지 출력 
    document.product_list.counter_box.value = '상품 판매가 종료되었습니다.'; 
  }
}
</script>

<?php
<BODY onLoad='reverse_counter()'>
            <input align='center' type='text' name='counter_box' style='border-width:0;color:red' size='56' >



IF($quantity <= 0 || $PRICE_PRT_CK == "N"){   //  재품수량 및 판매 가능 판별
        
  $buy_btn = "[removed]alert('구매하시고자 하는제품은 품절이거나 가격이 책정되지 않았습니다\\n고객센터로 문의 하세요');";  // 바로구매 버튼클릭시 alert문구






?>
AMKORJS / 2014/07/16 15:23:07 / 추천 0
우선 간단하게 소스 분석하면   onload로 자바스크립트 안에 함수 reverse_counter 실행하고 실행한후 결과값을 다시
name='counter_box' 이쪽 input에 전달하게 됩니다. 전달된 값에 의해 

php 구문안에 지정된 변수를 각각 다르게 저장시켜서 
저장된 변수 값으로 $buy_btn 여기에 출력을 할려고 하지만  

문제는 자바스크립트에 나온 결과값을 php 변수로 저장하는것인데 이전에 다른걸로 짠 ajax로 한번 보았지만 자바스크립트안에 있는 값  결과값을 php구문에 어떻게 변수로 각각 지정할지 모르겠네요 ㅠ,ㅠ

 
변종원(웅파) / 2014/07/16 16:18:48 / 추천 0
자바스크립트의 변수는 php에 직접 전달(대입)할 수 없습니다. 

시간값에 따라 버튼을 구매, 구매중지 등으로 표시하려면 폴링을 돌아 처리하는 방법(어차피 ajax 입니다)이 있습니다.

자바스크립트에서 1초에 한번 ajax로 서버에 요청하고 서버에서는 구매 또는 구매중지 시그널을 내려보내고
자바스크립트에서 그 값에 따라 화면처리. (서버에서도 구매버튼 클릭하여 폼전송이 왔을때 시간값 체크하여
구매할 수 없습니다. 표시 하도록 처리하여 이중화를 해야합니다.)

서버단의 프로그래밍과 자바스크립트의 방식을 혼동하시는 것 같습니다.