[CHERCHE] 'reinstancier' ou quelque chose comme ça

Signaler
Messages postés
55
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
20 janvier 2009
-
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
-
bonjour,
je commence a comprendre la POO, et j'ai fait une classe panier. La seule que j'ai comprise à fond, pour le moment. Mais maintenant que je veux m'en servir, je ne sais pas comment ajouter une ligne. J'ai cette ligne dans mon index :
    $_SESSION['client']->ajout_article(array('id'=>$article[0],'nom'=>$tablo['nom'],'prix'=>$tablo['prix'],'quantite'=>$article[1]));

et si je souhaite inserer un nouvel article, ca me remplace l'article, normal puisqu'il n'y a qu'une seule ligne. Ca doit etre simple mais je ne vois pas comment faire.
Quelqu'un peut m'aider s'il vous plait?
Merci d'avance.

3 réponses

Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Salut,


je doute que $_SESSION['client'] soit un objet. Ceci-dit pour mieux t'aider, peux tu nous coller le source de la classe 'panier'.
Messages postés
55
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
20 janvier 2009

<?php
/*les articles sont des array du type:
array('id'=>1,'nom'=>'chaussette','prix'=>'5,05','quantite'=>'3')
*/
class panier
{
var $liste= array();
var $nom_client;


function panier($nom='anonymous')
{
@session_start();

if(isset ($nom))
{
$this->nom_client = $nom;

}

if(!isset($_SESSION['client']))
{
$_SESSION['client'] = $this->nom_client;
}
}

function ajout_article($array)
{
return $this->liste[] = $array;
}

function suppr($ref="")
{
unset ($this->liste[$ref]);
}

function ajout_quantite($ref="",$qtt=1)
{
$this->liste[$ref]['quantite']+=$qtt;
}

function oter_quantite($ref="",$qtt=1)
{
$this->liste[$ref]['quantite']-=$qtt;
}

function choisir_quantite($ref="",$qtt="")
{
$this->liste[$ref]['quantite']=$qtt;
}

function somme()
{
$total = 0;
foreach($this->liste as $p)
{
$total += $p['prix']*$p['quantite'];
}
return $total;
}

function compter_les_articles()
{
$tot=0;
foreach($this->liste as $sstotal)
{
$tot += $sstotal['quantite'];
}
return $tot;
}

function vider()
{
$this->liste = array();
}

function affich()
{
echo '---------Facture-------------
';
echo 'Nom du client :'.$this->nom_client.'
';

foreach($this->liste as $tab)
{
echo '';
print_r ($tab);
echo '

';
}
echo $this->compter_les_articles().' article(s)
';
echo $this->somme().' ?
';


}
}

class pip
{

}

$chaussette = array('id'=>1,'nom'=>'chaussette','prix'=>'5.05','quantite'=>3);
$tennis = array('id'=>2,'nom'=>'tennis','prix'=>10,'quantite'=>1);

$pip = new panier('Pierre Sabatier');
$pip->ajout_article($chaussette);
$pip->ajout_article($chaussette);
$pip->ajout_article($tennis);
$pip->ajout_quantite(0,5);
$pip->oter_quantite(0);
$pip->choisir_quantite(1,20);
//$pip->suppr(1);
//$pip->vider();
$pip->affich();


?>
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Salut,

les données sont bien indexées dans $this->liste. Je pense qu'il s'agit simplement d'une mauvaise interprétation de l'affichage.
Tu peux vérifier par toi même en remplaçant la méthode affich() par celle-ci:
function affich() {
$lim = count($this->liste);
for($i=0; $i<$lim; $i++) {
printf('id => %d
',$this->liste[$i]['id']);
printf('nom => %s
',$this->liste[$i]['nom']);
printf('prix => %.2f
',$this->liste[$i]['prix']);
printf('quantite => %d

',$this->liste[$i]['quantite']);
}
}

En espérant avoir répondu à ta question...

PS: PHP5 intègre de nouvelles méthodes de traitement des classes(comparé à PHP4).Jetes y un petit coups d'oeil.
www.php.net/recherche 'classe'