2013-10-17 2 views
0

안녕하세요 저는 처음 포스터입니다. 나는 대답을 찾으려고 노력했지만, 이미 게시 된 자료로부터 나에게 분명히 드러나는 것은 아무것도 없었다. 내 양식 데이터가 게시되지 않는 이유를 파악할 수 없기 때문에 이에 대한 또 다른 한 쌍의 눈이 필요합니다.양식 데이터가 없습니다 PHP 처리를 위해 게시

단기간에 데이터를 저장하기 위해 세션 변수를 사용하여 장바구니를 만들고 있습니다. 궁극적으로, 계산 과정에서이 주문 데이터는 데이터베이스로 마무리됩니다. 장바구니 컨텐츠를 검토 용으로 렌더링 할 때 수량을 업데이트하거나 삭제할 수있는 자유를 고객에게 제공해야합니다. 여기

<form action="mas_cart.php" method="post"> 
    <table id="shCart" border="1" width="800px" cellspacing="0"> 
     <tr> 
      <td align="left">DSC0679</td> 
      <td align="left">7.2H x 11W Glossy Paper </td> 
      <td align="center">No</td><td align="center">$55</td> 
      <td align="center"> 
       <input id="inp_qty" type="text" name="DSC0679_unsigned_7.2H x 11W Glossy Paper $55" value="1" size="3"> 
      </td> 
      <td align="right">55.00</td> 
     </tr> 

     <tr> 
      <td align="left">MRS5293</td> 
      <td align="left">7.3H x 11W Glossy Paper </td> 
      <td align="center">Yes</td> 
      <td align="center">$55</td> 
      <td align="center"> 
       <input id="inp_qty" type="text" name="MRS5293_signed_7.3H x 11W Glossy Paper $55" value="1" size="3"> 
      </td> 
      <td align="right">55.00</td> 
     </tr> 

     <tr> 
      <td align="left">MRS5293</td> 
      <td align="left">7.3H x 11W Glossy Paper </td> 
      <td align="center">No</td> 
      <td align="center">$55</td> 
      <td align="center"> 
       <input id="inp_qty" type="text" name="MRS5293_unsigned_7.3H x 11W Glossy Paper $55" value="2" size="3"> 
      </td> 
      <td align="right">110.00</td> 
     </tr> 
    </table> 

    <input type="hidden" name="save" value="true"/> 
    <input type="image" src="images/save-changes.png" style="border:1px solid rgb(50,50,50)" alt="Save Changes"/> 
</form> 

그리고 업데이트를 처리하도록되어 PHP 코드입니다 :

//update section 
if(isset($_POST['save'])) { 
    foreach ($_SESSION['cart'] as $item => $qty) { 
    if($_POST[$item]==0 || $_POST[$item]=="") { 
     unset($_SESSION['cart'][$item]); } 
    else { 
     $_SESSION['cart'][$item] = $_POST[$item];} } 
을 (제목, 합계없이, 등) 장바구니 내용의 HTML 렌더링 여기에, 가능한 한 정돈이되어 유지

실행에서, $_POST['save']이 제대로 설정되어 있지만 $_POST[$item] 반환 정의되지 않은 인덱스 :

공지 사항 : 정의되지 않은 인덱스 : DSC0679_unsigned_7.2H X 11W 광택 용지 C $에서 55 : \ XAMPP \ htdo 라인에서 CS \ 단 \의 mas_cart.php 57

공지 사항 : 정의되지 않은 인덱스 : MRS5293_signed_7.3H X 11W 광택 용지 C $에서 55 : \ XAMPP \ htdocs를 \ AAA \ mas_cart.php 라인에 57

공지 사항 : 정의되지 않은 인덱스 : C MRS5293_unsigned_7.3H X에서 11W 광택지 $ 55 : \ XAMPP \ htdocs를 \ AAA \ mas_cart.php 인덱스를 정의하기 때문에, 항상 참으로 렌더링 후 처리의 기본적 조건 라인 57

에 그래서 업데이트는 오류를 내뱉고 카트를 지 웁니다. 나는 다른 사람에게 내 코드를 살펴달라고하는 것이 싫은 일임을 알고 있지만, 나는 이것을 알아내는 데 최악의 시간을 보냈습니다. 어떤 제안이라도 대단히 감사하겠습니다! 도움? 여기

+2

사용 print_r ($ _ POST); 스크립트가 실제로 제출 한 내용을 확인하십시오. –

+4

입력 이름이 잘못되어 정의되지 않았습니다. 공백, 점, 달러 기호 등이 있습니다. 전혀 씻지 않을 것입니다. 그러므로 'Notice : Undefined index' ;-) –

+0

플러스, 입력 이름에 왼쪽과 오른쪽 공백이있는'x'가 있으면 PHP는 수학을 시도하지만 제대로 계산하는 방법을 알지 못합니다. * 기침 * –

답변

0

나는 당신이 당신의 HTML의 구조를 변경 제안 방법은 다음과 같습니다

<form action="mas_cart.php" method="post"> 
    <table id="shCart" border="1" width="800px" cellspacing="0"> 
     <tr> 
      <td align="left"> 
       <input readonly type="text" name="id[]" value="DSC0679"/> 
      </td> 
      <td align="left"> 
       <input readonly type="text" name="desc[]" value="7.2H x 11W Glossy Paper"/> 
      </td> 
      <td align="center"> 
       <input readonly type="text" name="something[]" value="No"/> 
      </td> 
      <td align="center"> 
       <input readonly type="text" id="price0" name="price[]" value="55.00"/> 
      </td> 
      <td align="center"> 
       <input type="number" id="quantity0" name="quantity[]" min="0" size="3"/> 
      </td> 
      <td align="right"> 
       <input readonly type="text" id="text0" name="ext[]"/> 
      </td> 
     </tr> 

     ... 

    <input type="hidden" id="count" name="count" value="3"/> 
    <input type="hidden" name="save" value="true"/> 
    <input type="image" src="images/save-changes.png" style="border:1px solid rgb(50,50,50)" alt="Save Changes"/> 
</form> 

당신이 취급합니다 name[]로 끝나는 경우가 아니라 단지 하나의 값보다 배열로 값. 또한 가격, 수량 및 ext 필드의 ID와 제품 수를 제공하여 원하는 경우 Javascript에서 직접 계산을 수행 할 수 있습니다. 당신은 (내가 그것을 테스트하지 않은) 당신의 PHP에서 할 수있는 일 :

$products = array(); 

if(isset($_POST['save']) && is_array($_POST['id'])) { 
    for($i=0,$l=count($_POST['id']);$i<$l;$i++) { 
     $products[$i] = array(); 

     $fields = array('id','desc','something','price','quantity','ext'); 

     foreach($fields as $field) 
      { $products[$i][$field] = $_POST[$field][$i]; } 
    } 
} 

그런 다음 예를 들어 첫 번째 제품 수량을 얻을 수 있습니다 : 같은 것을 사용하여 실제 응용 프로그램에서 $products[0]['quantity']

이 경우 각 제품의 ID와 수량 만 있으면됩니다. 계산은 백 엔드에서 수행되며 (사용자를 신뢰하지 않음) 제품 정보가 실제로 필요하지는 않습니다.

+0

입력 해 주셔서 감사합니다. 난 그냥 업데이 트를 게시하기 위해 로그온했고, 게시 된 응답 중 일부는이 방향을 가리키는 것으로 나타났습니다. HTML/PHP는 'name'형식에 허용 된 문자를 제한합니다. 공백과 '.' 작동하지 말고 "_"로 대체하십시오. 흥미롭게도 '$'는 계속해서 잘 작동합니다. 몇 분 전에 '항목'문자열을 다시 포맷하면 문제가 사라지고 즐거운 춤을 췄습니다. 내 문제를 조사하는 데 시간을내어 주신 모든 분들께 감사드립니다.) !!! –

관련 문제