테스트 사이트 - 개발 중인 베타 버전입니다

스크립안에 for문을 사용했는데 결과가 맞질않네요.

바흐 5년 전 조회 2,397

</strong></p>

<p>"items": [

    {

        "display_name"  : '<? echo $pname; ?>',

        "sku"            : '<? echo $prod_id; ?>'

    },

    {

        "display_name"  : '<? echo "Poor"; ?>',

        "sku"            : '<? echo "1234"; ?>',

    }

],</p>

<p><strong>
쇼핑카트에 있는 상품을 출력하기위해서 매뉴얼로 위처럼 만들어주면 아래처럼 결과가 잘 나옵니다.

        "items": {             "4D5E6F": {                 "display_name": "Poor Product Ever",                 "sku": "4D5E6F"             },             "1A2B3C": {                 "display_name": "Best Product Ever",                 "sku": "1A2B3C"             }         }, 그래서 아래처럼 스크립안에 php for문을 써서 만들어 보았는데 2번째 아이템만 출력이 되네요... 뭐가 잘못된건지 아무리봐도 알지못하겠습니다. 아시는분 답변주시면 감사하겠습니다.

 

</strong></p>

<p><code><?php</code></p>

<p><code>echo</code> <code>'"items": ['</code><code>;</code></p>

<p><code>    </code><code>for</code><code>(</code><code>$i</code><code>=0; </code><code>$i</code><code><</code><code>$totalRows</code><code>; </code><code>$i</code><code>++) {    </code></p>

<p><code>        </code><code>$pname</code> <code>= </code><code>$_SESSION</code><code>[</code><code>'cart'</code><code>][</code><code>$i</code><code>][0];</code></p>

<p><code>        </code><code>$prod_id</code> <code>= </code><code>$_SESSION</code><code>[</code><code>'cart'</code><code>][</code><code>$i</code><code>][1];</code></p>

<p> </p>

<p><code>        </code><code>echo</code> <code>'{'</code><code>;</code></p>

<p><code>        </code><code>echo</code> <code>'"display_name"   : "'</code><code>.</code><code>$pname</code><code>.</code><code>'",'</code><code>;</code></p>

<p><code>        </code><code>echo</code> <code>'"sku"            : "'</code><code>.</code><code>$prod_id</code><code>.</code><code>'"'</code><code>;</code></p>

<p> </p>

<p><code>        </code><code>if</code><code>(</code><code>$i</code> <code>< </code><code>$totalRows</code><code>){</code></p>

<p><code>            </code><code>echo</code> <code>'},'</code><code>;</code></p>

<p><code>        </code><code>} </code><code>else</code> <code>if</code><code>(</code><code>$i</code> <code>== </code><code>$totalRows</code> <code>-1 ){</code></p>

<p><code>            </code><code>echo</code> <code>'}'</code><code>;</code></p>

<p><code>        </code><code>}</code></p>

<p><code>    </code><code>}</code></p>

<p><code>echo</code> <code>'],'</code><code>;</code></p>

<p><code>?></code></p>

<p><strong>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

5년 전

답변감사합니다. 스크립트에 넣을때 이렇게 하니까 에러가 나는데 제가 맞게 한건가요?

 

var ar = ;

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

세크티
5년 전
질문자님이 원하는 방식은 json포맷이 아닙니다. 배열을 그대로 json_encode했을때 에러가 안날텐데..원하시는대로 억지로 바꿔넣다보니 에러가 나는거거든요.
일단 var ar = '<?php echo json_encode($encoded)?>'; 이렇게 하시면 에러는 안나실겁니다.
바흐
5년 전
예 여전히 에러는나지만 한가지 궁금한게있습니다. 제가 아래와같은 형식으로 데이타를 넘겨줘야합니다.

전이게 json형식인줄 알았는데 아니라고 하시니 한번 설명부탁드릴게요...

이렇게 하면 아무문제없이 잘 전달됩니다.

맨마지막 부분이 제가 요청한 부분입니다.

상품이 한개만 있으면 이대로 괜찮지만 쇼핑카트에는 제품이 여러게가 들어갈 수 가있어 함께 전달하려면 이 스크립트안에 for 문을 이용해 전달하려고 한겁니다.

세크리님이 알려주신 부분이 훨씬 손쉬워보여서 마음에 듭니다. 그런데 어찌하여 에러가 나는지 제가 설명을 잘못해서 문제가 생긴거지 시간되시면 한번봐주시면 감사하겠습니다.


<script>

firm.checkout({

//shipping contact
"shipping": {
"name": {
"first" : '<? echo $ship_fname; ?>',
"last" : '<? echo $ship_lname; ?>'
},
"address": {
"line1" : '<? echo $ship_address; ?>',
"line2" : '',
"city" : '<? echo $ship_city; ?>',
"state" : '<? echo $ship_state; ?>',
"zipcode": '<? echo $ship_zip; ?>'
},
"email" : '<? echo $ship_email; ?>',
"phone_number" : '<? echo $ship_dphone; ?>'
},


// cart
"items": [{
"display_name" : '<? echo $pname; ?>',
"sku" : '<? echo $prod_id; ?>',
"unit_price" : <? echo sprintf("%0.2f",$unit_price); ?>,
"qty" : <? echo $qty_num; ?>,
"item_image_url" : '<? echo "https:" . $wLimg; ?>',
"item_url" : '<? echo $firm_product_url; ?>'
}],
...

댓글을 작성하려면 로그인이 필요합니다.

세크티
5년 전
아래처럼하면 안되나요?
$pname,
        'sku'=>$prod_id
    );
}
echo json_encode($array);

?>

 

자바스크립트에 넣을떄는 아래처럼..

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

바흐
5년 전
예 아래와같이 결과값이 나옵니다.

{"items":[{"display_name":"559","sku":"1"},{"display_name":"388","sku":"1"}]}

여기서 문제는 처음 시작할때 { 과 끝에 }을 없애야하고 ] 뒤에 , 가 붙어야합니다. 그래야 제대로 출력이 됩니다. 즉 이렇게 출력이 되면 됩니다.

"items":[
{
"display_name":"559",
"sku":"1"
},
{
"display_name":"388",
"sku":"1"
}
],

알려주신것처럼 해서 이게 가능할까요?
세크티
5년 전
요렇게해보세요

$array = array();
for($i=0; $i<$totalRows; $i++) {
$pname = $_SESSION['cart'][$i][0];
$prod_id = $_SESSION['cart'][$i][1];

$array[]=array('display_name'=>$pname,"sku"=>$prod_id);
}
$encoded = '"items":'.json_encode($items);
echo $encoded;
바흐
5년 전
답변감사합니다. 스크립트에 넣을때 이렇게 하니까 에러가 나는데 제가 맞게 한건가요?



var ar = <?php echo json_encode($encoded)?>;

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인