Mais PHP c'est bien aussi, hein !
asp est une blague. Si tu regardes bien les seuls sites qui plantent sont en asp. C'est un langage qui fait du code lourd donc inadapté à un site web. Le principe d'un site web c'est que la page doit être générée en quelques dixièmes de secondes, et le serveur doit être en mesure de supporter plusieurs dizaines de générations concourantes. Pour cela, tu es obligé d'opter pour une technologie légère, ce que sont le PHP ou le PERL, mais ce que n'est pas l'ASP.NET...asp.net pour le net
Code : Tout sélectionner
class MenuItems
{
public $sm;
public $id_menu;
public $menu;
}
$mi = array(new MenuItems());
while($row = mysql_fetch_array($result))
{
$mi[$sm] = $row['SM'];
$mi[$id_menu] = $row['id_menu'];
$mi[$menu] = $row['$menu'];
}
echo $mi[$sm][0];
exit;
/**
* On définit quelques constantes pour se faciliter la vie.
*/
define('SM', 'sm');
define('ID', 'id_menu');
define('MENU', 'menu');
/**
* Notre tableau principal.
*/
$array = array();
/**
* On remplit notre tableau.
*/
while($row = mysql_fetch_assoc($result))
$array[] = array(
SM => $row['SM'],
ID => $row['id_menu'],
MENU => $row['menu']
);
/**
* On affiche le résultat.
*/
print_r($array);
Seconde solution : on va utiliser une collection d'objet. En fait, chaque sous-tableau du premier exemple va être un objet.class MenuItem {
/**
* Nos différentes données.
*
* @var MenuItem string|int
*/
protected $sm = null;
protected $id = 0;
protected $menu = null;
/**
* Pendant la construction de l'objet, soit on reçoit un
* tableau et on appelle les setters, soit on appellera les setters
* nous-même plus tard (comme ils sont publiques, pas de problème).
*
* @access public
* @param array $array Notre tableau d'initialisation.
* @return void
*/
public function __construct ( Array $array = array() ) {
if(empty($array))
return;
if(isset($array['SM']))
$this->setSM($array['SM']);
// etc.
}
/**
* On définit SM.
*
* @access public
* @param string $sm SM (d'ailleurs, ça veut dire quoi ici ^^ ?).
* @return string
*/
public function setSM ( $sm = null ) {
$old = $this->sm;
$this->sm = $sm;
return $old;
}
// etc.
}
On a alors deux façons d'utiliser cet objet : /**
* Notre collection.
*/
$collection = array();
while($row = mysql_fetch_assoc($result))
$collection[] = new MenuItem(array(
'SM' => $row['SM'],
'id_menu' => $row['id_menu'],
'menu' => $row['menu']
));
print_r($collection);
Ou alors : /**
* Notre collection.
*/
$collection = array();
/**
* Une variable temporaire.
*/
$handle = null;
while($row = mysql_fetch_assoc($result)) {
$handle = new MenuItem();
$handle->setSM($row['SM']);
$handle->setIDMenu($row['id_menu']);
$handle->setMenu($row['menu']);
// On ajoute notre objet à la collection.
$collection[] = $handle;
}
print_r($collection);
Ce sont deux solutions, mais il en existe encore d'autre. L'objet standard StdClass est également très pratique. On peut définir n'importe quel attribut dessus, c'est entièrement dynamique.
class MenuItems
{
public $sm;
public $id_menu;
public $menu;
}
$mi = array();
while($row = mysql_fetch_object($result))
{
$mi[] = (MenuItems)$row;
}
echo $mi[0]->sm;
exit;
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))
{
$mi[] = (MenuItems)$row;
}
foreach ($mi as $menuItem) {
echo $menuItem->sm, $menuItem->id_menu, $menuItem->menu;
}
exit;
$menuItem*