2017-06-19 1 views
-1

Ich bin Trieben, um Artikel aus der Datenbank aufzulisten, aber das Ergebnis kommt in zwei. Für jeden Datensatz wird 2 Ergebnis angezeigt. zur Zeit habe ich nur einen Datensatz in der Datenbank, aber wenn ich sie auf dem Bildschirm anzeigen, wird es repeeted. Ich weiß nicht, warum das passiert, ich habe versucht, einen Zähler zu platzieren und zu sehen, wie oft die Schleife läuft und das Ergebnis ist immer einmal. Das Ergebnis wird jedoch zweimal angezeigt.Wiederholte Aufnahme in PHP und MySQL

der Code wie folgt:

<section class="container"> 
    <div class="row"> 
      <?php 
      if($bidCollection->selectBidsByStatusAndAppId(BidAccount::OPEN_NEW, $id)){   
       foreach($bidCollection->getBids() as $bid){ 
       $banker->find($bid->getCustomerId()); 
       $counter=0; 
      ?> 


         <div class='col-xs-12 bg-more-light-gray bidlist'> 

          <div class="col-xs-12 col-sm-1 col-md-1"> 

           <?php 

            if(!$uploader->findProfilePicture($banker->data()->_customer_id)){ 
             echo "<img src='image/holder.png ' width='50' height='50' class='img-responsive' />"; 
              }else{ 
             echo "<img src='upload/proPicture/".$uploader->data()->pictureUrl."' width='50' height='50' class='img-responsive'/>";       
            } 
           ?>    

          </div> 









          <div class="col-xs-12 col-sm-8 col-md-8"> 
           <?php 
            echo '<h2>Agent name :'.$validate->cleanInput($banker->data()->officer_name).'</h2>'; 
            echo '<h3>Institute name : '.$validate->cleanInput($banker->data()->bank_name).' '.++$counter.'</h3>'; 
            if($bid->getApplicationOwnerId() === $customer->data()->_customer_id){ 
               echo "<p>CheckBook: "; 
                if($bid->getRequestCheckBook()){echo "Yes";}else{echo "No";} 
               echo "</p>"; 
               echo"<p> Minimum Deposit: AED ".$bid->getMinDeposit()."</p>"; 
               echo"<p> Direct Debit Card: "; 
                 if($bid->getRequestCreditCard()){echo "Yes";}else{echo "No";} 
               echo "</p>"; 
               echo"<p> Other Fees/Arrangement Fees: AED ".$bid->getFees(). "</p>"; 
               echo"<p> Account Will be ready in: ".$bid->getSetupTime() ."</p>"; 
            } 
           ?>   
          </div> 
          <div class="col-xs-12 col-sm-2 col-md-2"> 
           <?php     
           $datetime = new DateTime($bid->getDatePosted()); 
           $date = $datetime->format('Y-m-d'); 
           $time = $datetime->format('H:i:s'); 
            echo '<h4> Date: '.$date.'<br/>Time: '.$time.'</h4>'; 
            echo"<form method='POST' action='viewBanker.php'>"; 
            echo "<input type='hidden' name='banker' value='".$bid->getCustomerId()."'>"; 
            echo "<input type='submit' class ='btn btn-default' name='submit' value='View Profile'>"; 
            echo "</form>"; 
            echo'<br/>'; 

             if($bid->getApplicationOwnerId() === $customer->data()->_customer_id){      

               echo"<form method='post' action='acceptAccountBid.php'>";     
                echo "<input type='hidden' value='".$bid->getCustomerId()."' name ='bankerId'/>"; 
                echo "<input type='hidden' value='".$id."' name ='appid'/>"; 
                echo "<input type='hidden' value='".$bid->getApplicationOwnerId()."' name='ownerId'>"; 
                echo "<input class='btn btn-default' type='submit' value='Accept Offer' name='submit'>"; 

               echo"</form>"; 

             } 

          ?>       
          </div> 
         </div> 

      <?php 

       } 
      } 
      ?> 

Die Methoden, die die Werte zurückgibt, ist wie folgt:

public function selectBidsByStatusAndAppId($status, $appid) 
    { 
     $sql = "SELECT * FROM accountBid WHERE application_id = :appId AND status = :st"; 
     try { 

      $sth = $this->_db->getConnection()->prepare($sql); 
      $sth->bindValue(':appId', $appid); 
      $sth->bindValue(':st', $status); 
      $sth->execute(); 

     } catch (Exception $e) { 
      $this->setAlert('danger', 'Information Presentation Error: ' . $e->getMessage()); 
     } 

     foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $data) { 
      $this->addBid($data); 
     } 

     return true; 
    } 



public function addBid($data = null) 
    { 
     $bid = new BidAccount($data); 
     $this->bids[] = $bid; 

    } 


public function getBids() 
    { 
     return $this->bids; 
    } 
+0

Was gibt '' '$ bidCollection-> getBids()' '' zurück? Fügen Sie '' echo "

getBids() hinzu:

".print_r($bidCollection->getBids(),true)."

"; '' 'und lassen Sie uns wissen, was Sie bekommen. –

+0

Sie könnten die '' '$ bidCollection-> getBids()' '' außerhalb der Foreach verschieben und ihren Wert in eine Variable eingeben, so dass sie nur einmal aufgerufen wird. –

+0

Die getBids() gibt Arrays von Objekten zurück. Alles, was es tut, ist eine Sammlung von Bid-Objekten zurückzugeben und dann die foreach zu verwenden, um jedes Objekt zu extrahieren und seinen Inhalt anzuzeigen. – Salim

Antwort

0

zunächst einmal, ich möchte meinen Kollegen danken, die mir versucht, früher zu helfen . das Problem war ich eine andere Funktion hatte, die ich es vergessen schreiben hier bidExist()

public function bidExist($appId , $id){ 


     $sql = "SELECT * FROM accountBid WHERE application_id = :appId AND _customer_id = :id"; 
     try { 

      $sth = $this->_db->getConnection()->prepare($sql); 
      $sth->bindValue(':appId', $appId); 
      $sth->bindValue(':id', $id); 
      $sth->execute(); 

     } catch (Exception $e) { 
      $this->setAlert('danger', 'Information Presentation Error: ' . $e->getMessage()); 
     } 

     foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $data) { 
      $this->addBid($data); 
     } 

     return $sth->rowCount(); 


    } 

Die Funktion oben durch die Sammlung geschlungen zu überprüfen und sehen, ob das Objekt vorher existiert und wenn es dann kann man nicht hinzufügen Bei einem weiteren Gebot habe ich vergessen, die Funktion addBid() für diese Methode zu entfernen und das Objekt zweimal zur Auflistung hinzuzufügen. Das hat mich die ganze Nacht gebraucht, um es herauszufinden. aber ich danke allen, die versucht haben zu helfen und zu unterstützen.