Arthaiir
Arthaiir

Reputation: 23

Query result to a collection of object

I have a database phpmyadmin, I created a class :

<?php

class Ticket
{
private $NumDossier = 0;
private $NomTicket ="";
private $Service = "" ;
private $Impact = 0;
private $Urgence = "";
private $DateOuverture = "";

public function __construct($p_NumDossier, $p_NomTicket,$p_Service,$p_Impact,$p_Urgence,$p_DateOuverture)
{
    $this->NumDossier = $p_NumDossier;
    $this->NomTicket = $p_NomTicket;
    $this->Service = $p_Service;
    $this->Impact = $p_Impact;
    $this->Urgence = $p_Urgence;
    $this->DateOuverture = $p_DateOuverture;
}
public function getNumDossier()
{
    return $this->NumDossier;
}
public function getNomTicket()
{
    return $this->NomTicket;
}
public function getService()
{
    return $this->Service;
}
public function getImpact()
{
    return $this->Impact;
}public function getUrgence()
{
    return $this->Urgence;
}
public function getDateOuverture()
{
    return $this->DateOuverture;
}
} 
?>

For all row that my query return I want to create an object and add it to a collection.

My code :

$connexion = cnx(); 

if($connexion) { 
    $requete="SELECT * FROM ticket '"; 
    $result = mysqli_query($connexion, $requete); 
    $result = mysqli_query($connexion, $requete); 
    $row = mysqli_fetch_assoc($result); 
 } 

$test = new Ticket(0,"","",0,"",""); 

while($row) { 
    //create object for each line and add it to an collection 
}

If you have a solution/lead me to this issue.

Thanks for read !

Upvotes: 0

Views: 1134

Answers (1)

KIKO Software
KIKO Software

Reputation: 16686

I have to assume that the beginning part of your code is correct, so I copied that. But I changed it further on. You want to retrieve multiple rows, so I put the mysqli_fetch_assoc inside the while loop. With each new row I create a new ticket and put it in a 'collection' array.

$connection = cnx(); 

if ($connexion) { 
    $query ="SELECT * FROM ticket"; 
    $result = mysqli_query($connection, $query); 
    if ($result === false) die("The query [$query] could not be executed.");

    $collection = [];
    while($row = mysqli_fetch_assoc($result)) {
        $collection[] = new Ticket($row["NumDossier"],
                                   $row["NomTicket"],
                                   $row["Service"],
                                   $row["Impact"],
                                   $row["Urgence"],
                                   $row["DateOuverture"]); 
    }

    echo "<pre>";
    print_r($collection);
    echo "</pre>";
} 

So I used a simple array for the collection. I used the default numeric array indexing because I wouldn't know what to replace it with. $row["NomTicket"] seems a logical choice.

Upvotes: 1

Related Questions