class MenuItems
{
public $sm;
public $id_menu;
public $menu;
}
$mi = array();
$result = mysql_query("select sm, id_menu, menu from ....");
while($row = mysql_fetch_object($result))
{
if ($row) {
// Instanciation de l'objet MenuItem
$o = new MenuItems();
// Affectation de contenu
$o = $row;
// Stockage dans la collection
$mi[] = $o;
}
}
foreach ($mi as $menuItem) {
echo $menuItem->sm, $menuItem->id_menu, $menuItem->menu;
}
exit;
$key = $row->id_menu;
$mi[$key] = $row;
Mais si tu enlève l'instanciation de la classe MenuItems tu ne peux pas utiliser ses méthodes. Si ta classe ne contient pas de méthodes (fonctions) spéciales et se limite à des propriétés (champs) alors là tu peux ne pas l'utiliser et utiliser directement $row qui est déjà un objet issu de mysql_fetch_object().
class MenuItems
{
public $sm;
public $id_menu;
public $menu;
}
$mi = array();
$result = mysql_query("select sm, id_menu, menu from ....");
while($result && $row = mysql_fetch_object($result))
{
if ($row) {
// Instanciation de l'objet MenuItem
$o = new MenuItems();
// Affectation de contenu
$o = $row;
// Stockage dans la collection indéxée par id_menu
$key = $row->id_menu;
$mi[$key] = $o;
}
}
foreach ($mi as $menuItem) {
echo $menuItem->sm, $menuItem->id_menu, $menuItem->menu;
}
exit(); Code : Tout sélectionner
class MenuItems
{
public $sm;
public $id_menu;
public $menu;
}
$mi = array();
$result = mysql_query("select sm, id_menu, menu, XXX from ....");
while($row = mysql_fetch_object($result))
{
if ($row) {
// Instanciation de l'objet MenuItem
$o = new MenuItems();
// Affectation de contenu
$o = $row;
// Stockage dans la collection indéxée par id_menu
$key = $row->id_menu;
$mi[$key] = $o;
}
}
foreach ($mi as $menuItem) {
echo $menuItem->sm, $menuItem->id_menu, $menuItem->menu, $menuItem->XXX;
}
exit();
if ($row) {
// Instanciation de l'objet MenuItem et Stockage dans la collection indéxée par id_menu
$key = $row->id_menu;
$mi[$key] = new MenuItems();
$mi[$key]->sm = $row->sm;
$mi[$key]->id_menu = $row->id_menu;
$mi[$key]->menu = $row->menu;
}
Mais voici un développement possible de ton script vers une vision globale de collection d'objets:
<pre>
<?php
mysql_connect("localhost", "root", ""); mysql_select_db("test");
//
class MenuItems
{
// Propriétés de la classe
private $id_menu;
private $menu;
private $sm;
// Propriétés de la collection
private $currentIndex;
private $collection;
// Constructeur de la classe
public function MenuItems($id_menu=null, $menu=null, $sm=null){ // Params facultatifs
$this->id_menu = $id_menu;
$this->menu = $menu;
$this->sm = $sm;
}
// Méthodes SET pour les propriétés privées
public function setId_menu($id_menu){
$this->id_menu = $id_menu;
}
public function setMenu($menu){
$this->menu = $menu;
}
public function setSm($sm){
$this->sm = $sm;
}
// Méthodes GET pour les propriétés privées
public function getId_menu(){
return $this->id_menu;
}
public function getMenu(){
return $this->menu;
}
public function getSm(){
return $this->sm;
}
// Méthodes : Ajout, Recherche, Suppression dans la collection
public function exists($id_menu){
if (count($this->collection)>0 && $this->collection[$id_menu]) return true; else return false;
}
public function add($menuObject){
if ($menuObject->id_menu && ! $this->exists($menuObject->id_menu)){
$this->collection[$menuObject->id_menu] = new MenuItems($menuObject->id_menu, $menuObject->menu, $menuObject->sm);
}
}
public function getObject($id_menu){
if ($id_menu && $this->exists[$id_menu]) return $this->collection[$id_menu];
}
public function remove($id_menu){
if ($id_menu && $this->exists[$id_menu]) unset($this->collection[$id_menu]);
}
// iterator : Naviguer dans la collection
public function getCollectionKeys(){
return array_keys($this->collection);
}
public function getCollectionSize(){
return count($this->collection);
}
public function current(){
$keys = $this->getCollectionKeys();
$currentKey = $this->currentIndex > 0 ? $keys[$this->currentIndex] : null;
if ($currentKey && $this->collection[$currentKey]){
$this->id_menu = $this->collection[$currentKey]->id_menu;
$this->menu = $this->collection[$currentKey]->menu;
$this->sm = $this->collection[$currentKey]->sm;
//
return $this->collection[$currentKey];
}
else return null;
}
public function first(){
$this->currentIndex = 0;
return $this->current();
}
public function next(){
$this->currentIndex ++;
return $this->current();
}
public function previous(){
$this->currentIndex --;
return $this->current();
}
public function last(){
$this->currentIndex = $this->getCollectionSize()-1;
return $this->current();
}
}
//
$mi = new MenuItems();
//
$result = mysql_query("select id_menu, menu, sm from menu");
while($result && $row = mysql_fetch_object($result))
{
if ($row) {
// Alimentation de la collection d'objets MenuItem
$mi->add($row);
}
}
//
while ($mi->next()) {
echo $mi->getId_menu(), $mi->getMenu(), $mi->getSm();
}
?>
</pre>Code : Tout sélectionner
marche très bien
j'ai un problème sur le second (développement possible ect ...)
[b]Warning: array_keys() [function.array-keys]: The first argument should be an array in C:\wamp\www\rufus\menuTest.php on line 67[/b]
qui correspond a [b]return array_keys($this->collection);[/b]
<pre>
<?php
mysql_connect("localhost", "root", ""); mysql_select_db("test");
//
class MenuItems
{
// Propriétés de la classe
private $id_menu;
private $menu;
private $sm;
// Propriétés de la collection
private $currentIndex;
private $collection;
// Constructeur de la classe
public function MenuItems($id_menu=null, $menu=null, $sm=null){ // Params facultatifs
$this->id_menu = $id_menu;
$this->menu = $menu;
$this->sm = $sm;
}
// Méthodes SET pour les propriétés privées
public function setId_menu($id_menu){
$this->id_menu = $id_menu;
}
public function setMenu($menu){
$this->menu = $menu;
}
public function setSm($sm){
$this->sm = $sm;
}
// Méthodes GET pour les propriétés privées
public function getId_menu(){
return $this->id_menu;
}
public function getMenu(){
return $this->menu;
}
public function getSm(){
return $this->sm;
}
// Méthodes : Ajout, Recherche, Suppression dans la collection
public function exists($id_menu){
if (count($this->collection)>0 && $this->collection[$id_menu]) return true; else return false;
}
public function add($menuObject){
if ($menuObject->id_menu && ! $this->exists($menuObject->id_menu)){
$this->collection[$menuObject->id_menu] = new MenuItems($menuObject->id_menu, $menuObject->menu, $menuObject->sm);
}
}
public function getObject($id_menu){
if ($id_menu && $this->exists($id_menu)) return $this->collection[$id_menu];
}
public function remove($id_menu){
if ($id_menu && $this->exists($id_menu)) unset($this->collection[$id_menu]);
}
// iterator : Naviguer dans la collection
public function getCollectionKeys(){
return is_array($this->collection) ? array_keys($this->collection) : 0;
}
public function getCollectionSize(){
return count($this->collection);
}
public function current(){
$keys = $this->getCollectionKeys();
$currentKey = $this->currentIndex >= 0 ? $keys[$this->currentIndex] : null;
if ($currentKey && $this->collection[$currentKey]){
$this->id_menu = $this->collection[$currentKey]->id_menu;
$this->menu = $this->collection[$currentKey]->menu;
$this->sm = $this->collection[$currentKey]->sm;
//
return $this->collection[$currentKey];
}
else return null;
}
public function first(){
$this->currentIndex = 0;
}
public function next(){
$this->currentIndex ++;
}
public function previous(){
$this->currentIndex --;
}
public function last(){
$this->currentIndex = $this->getCollectionSize()-1;
}
}
//
$mi = new MenuItems();
//
$result = mysql_query("select id_menu, menu, sm from menu");
while($result && $row = mysql_fetch_object($result))
{
if ($row) {
// Alimentation de la collection d'objets MenuItem
$mi->add($row);
}
}
//
$mi->first();
while ($mi->current()) {
echo "<b>Id Menu: </b>", $mi->getId_menu(),"<br />", "<b>Menu: </b>",$mi->getMenu(),"<br />", "<b>Sm: </b>",$mi->getSm(),"<br />";
$mi->next();
}
?>
</pre>