2013-05-14 2 views
0

안녕하세요, 먼저 질문에 코드를 게시하고 질문을 올립니다. quesiont 코드의 특정 조각이 getAdIdByUserId 그래서다음 모델 ID에서 진행

//ad model 
    class userAds { 
     private $id; 
     private $title; 
     private $price; 
     private $location; 
     private $category; 
     private $subCategory; 
     private $description; 

     //default constructor 
     function _constructor(){ 
      $this->id = null; 
      $this->title = null; 
      $this->price = null; 
      $this->location = null; 
      $this->category = null; 
      $this->subCategory = null; 
      $this->description = null; 
     } 

     //set the ad details 
     function setAdDetails($adId,$adTitle, $adPrice, $adLocation, $adCategory, $adSubCategory, $adDescription){ 
      $this->id = $adId; 
      $this->title = $adTitle; 
      $this->price = $adPrice; 
      $this->location = $adLocation; 
      $this->category = $adCategory; 
      $this->subCategory = $adSubCategory; 
      $this->description = $adDescription; 
     } 

     //get number of ads by user using user id 
     function getNumberOfAdsByUserId($userId){ 
      $numberOfAds = mysql_query("SELECT * FROM ads WHERE user_id='$userId'") or die(mysql_error()); 
      return $numAds = mysql_num_rows($numberOfAds); 
     } 

     //get ad id by user id 
     function getAdIdByUserId($userId){ 
      $queryAdId = mysql_query("SELECT id FROM ads WHERE user_id='$userId'") or die(mysql_error()); 
      $data = mysql_fetch_assoc($queryAdId); 
      return $this->id = $data['id']; 
     } 

확인

function printUserActiveAds($currUser){ 
     $activeUser = new users(); 
     $userActiveAds = new userAds(); 

     echo 
     ' 
      <h4>Currently Active Ads:</h4> 
      <table class="userActiveAds"> 
       <tr><td>Title</td><td></td><td>Price</td><td></td><td>Description</td><td></td><td>Delete</td></tr> 
     '; 

     $numAds = $userActiveAds->getNumberOfAdsByUserId($currUser); 
     if($numAds > 0){ 
      for($i = 0; $i < $numAds; $i++){ 
       $id = $userActiveAds->getAdIdByUserId($currUser); 
       echo 
       ' 
        <tr> 
         <td>'.$userActiveAds->getAdTitleById($id).'</td><td></td> 
         <td>'.$userActiveAds->getAdPriceById($id).'</td><td></td> 
         <td>'.truncateDescription($userActiveAds->getAdDescriptionById($id),100).'</td><td></td> 
         <td> 
          <form action="" method="post"> 
           <input type="submit" name="delete" id="delete" class="button" value="Delete" /> 
          </form> 
         </td> 
        </tr> 
       '; 
        } 
     }else{ 
      echo 
      ' 
       <tr><td colspan="7"><span class="prompt">Currently No Active Ads</span></td></tr> 
      '; 
     } 

모델 (userAds). 특정 사용자와 관련된 모든 ID를 반복하지 않습니다. 기본적으로 내가 원했던 것은 특정 사용자와 관련성이있는 모든 광고를 가져 와서 테이블에 표시하는 것이 었습니다. 그러나 위의 코드를 실행하면 해당 사용자와 관련된 올바른 광고 수가 표시되지만 표에는 해당 사용자와 관련된 첫 번째 ID 만 표시됩니다. 어쩌면 나는 ID를 증가시켜야한다고 생각했지만,이 사용자는 ID 1,2,3,7 및 17이있는 광고를 가지고 있습니다.이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 또한 printActiveAds 함수에서 볼 수 있듯이 두 개의 객체를 만들었지 만 다른 질문은 함수의 끝에서 삭제해야합니까, 아니면 함수가 완료되면 제거되기 때문에 걱정하지 않아야합니다. 지역 범위).

미리 감사드립니다.

답변

0

그래서 문제를 파악했습니다. 나는 세트 진술과 기본 진술을 놓치고 있었다. 쿼리를 한 후에 mysql_fetch_array ($ query)를 실행 한 다음 각 행을 userAd 속성과 동일하게 설정 한 다음 에코를 실행했을 때 설정 한 것을 호출했을 때