2014-01-17 2 views
0

phtml 파일에는 price, id 등을 포함한 모든 데이터베이스가 표시되며 php 파일 Details에서 사용자가 집세를 누르려하면 해당 ID를 사용하여 add 메서드를 사용하여 상점에 저장합니다. 나는 사용자가 체크 아웃 할 때 그래서 사용자가 선택한 항목의 ID를 사용하여 모든 정보를 검색하는 것이다 데이터베이스에서 항목의 ID를 저장하는 이유는이 오류사용자가 선택한 항목의 ID를 가져 오는 중입니까?

Fatal error: Function name must be a string. 

에게 그 이유를 점점 계속. 또한 배열 목록을 사용하여 더 많은 항목을 저장하는 중입니다. 항목의 ID를 얻는 방법은 추가 바구니 파일에 로컬 변수 $tem = $_POST(['$dvdDetails->getDvdId()']);을 사용하는 것입니다.하지만 해당 값이 올바른 값인지 확인하지는 못합니다. foreach 루프가 있고 변수의 지속 시간이 메서드의 끝에서 왜곡되므로 항목의 ID를 어떻게 가져올 수 있습니까?

<?php 
    require_once('Models/Product.php'); 

    class Shop { 
     private $_products = array(); 

     public function getProducts() 
      { return $this->_products;} 

     public function addProduct(Product $product) 
      { $this->_products[] = $product; 
       return $this; 
      } 

    } 

    ?> 


    <?php 


    class Option { 
     private $_optionKey; 
     private $_optionValue; 

     public function getKey() 
      { return $this->_optionKey; } 

     public function getVlue() 
      { 
      return $this->_optionValue; 

      } 

     public function setOption($key, $value) 
      { 
       $this->_optionKey = $key; 
       $this->_optionValue = $value; 
       return $this; 
      } 
    } 

    ?> 


    <?php 
    require_once('Models/Option.php'); 



    class Product { 
     private $_options = array(); 

     public function getOptions() 
      { return $this->_options; } 

     public function addOption(Option $option) 
      { $this->_options[] = $option; 
       return $this; 
      } 
    } 

    ?> 
    //SHow all 
    <?php require('template/header.phtml') ?> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 

    <table class="datatable"> 
    <tbody> 

    <?php foreach ($view->dd as $dvdDetails) { 

    echo '<tr> <td>' 
      .'<img src="images/'. $dvdDetails->getPhotoDetails() .'"alt="no picture" height="240" width="820" />' .'<br><br>'.'<font size="3" color="#2E2E2E"><center>'. $dvdDetails->getDvdPhoto(). '</center></font>'. 
      '<br><br><br>'. '<font size="2" color="blue"><strong>Genre: </strong></font>'. $dvdDetails->getDvdGenre() . 
       '<br><br>'. '<font size="2" color="blue"><strong>Director: </strong></font>'. $dvdDetails->getDvdDirector() . '<br><br>' .'<font size="2" color="blue"><strong>Ritels: </strong></font>'. $dvdDetails->getDvdRitels() . 
      '<br><br>' . '<font size="2" color="blue"><strong>Price for rent: </strong></font>'. $dvdDetails->getDvdId()) . 
     '<br><br>' . 
      '<div class="ghassar">' . 
      '<div id="op"> <label>Number of days </label> <select name="days" > <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> 
    </select> 
    <br><br><br><br> 

    </div> 



    <div> 



    <input type="submit" value="Add to the basket" name="rent" id="buttom1" /> 
    </div> ' . '<br><br>' . 
      '<br><br>' .'<div>'. 

    '</td> </td> </tr>'; 
    } ?> 
    </tbody> 
    </table> 
    <?php require('template/footer.phtml') ?> 

// 카트

<?php 
require_once('Models/Dvd_sql.php'); 
require_once('Models/Shop.php'); 


$view = new stdClass(); 
$view->dd = 'SQL'; 
$dvd_sql = new Dvd_sql(); 
$view->dd = $dvd_sql->fetchAllStudents(); //->fetchAllStudents(); 
if (isset($_POST['rent'])) 
{ 
    $tem = $_POST(['$dvdDetails->getDvdId()']); 
$shop = new Shop(); $shop->addProduct($tem); 
} 

    require_once('Views/dvdDetails.phtml'); 

답변

0

에 추가 나는 무엇을 당신이하려는 것은 폼 처리 페이지에 양식 페이지에서 DVD의 ID를 얻을 생각합니다. 그것이 있다고 가정하면, 당신이 그것에 관해가는 길에 몇 가지 문제가 있습니다.

  • 첫째, $_POST['$dvdDetails->getDvdId()']은 말 그대로 문자열 '$ dvdDetails-> getDvdId을()'과 일치하는 문자열 키를 포스트 데이터를 찾고 있습니다. 작은 따옴표로 묶인 문자열은 PHP에 의해 보간되지 않으며, 큰 따옴표를 사용하더라도 간단한 변수를 사용하거나 {$brackets}을 사용하고 싶습니다.
  • 두 번째로, 객체 $dvdDetails은 양식 처리 스크립트에도 존재하지 않는 것 같습니다. 나는 그것을 폼 디스플레이 코드에서만보고, 자동으로 처리 스크립트로 넘겨주지 않는다. 양식에 필요한 데이터를 명시 적으로 전달해야합니다. 처리 스크립트

    $item_id = $_POST['item_id']; 
    

    에서

    '<input type="hidden" name="item_id" value="' . $dvdDetails->getDvdId() . '">' . 
    

    (당신의 문자열 연결 스타일 다음) 형태에서

:이를 위해, 당신은 이런 식으로 뭔가를 할 수 수정
처음으로 많은 DVD 항목을 둘러보고 있다는 사실을 놓쳤습니다. 이 경우, 내 충고는 많은 item_id 입력으로 이어질 것이고 오직 하나만 (마지막으로, 나는 생각한다) 처리 스크립트에 의해 보일 것이다. 당신의 "days"선택자는 같은 문제를 겪을 것입니다. 이 경우 가장 간단한 해결책은 각 DVD에 대해 별도의 양식을 만들고 위의 조언을 사용하는 것입니다. 그렇게하면 특정 DVD에 대한 양식을 제출할 때 "days"와 "item_id"의 ​​사본 하나만 전송됩니다.

관련 문제