Erreur sur un array dans une class

Résolu
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009
-
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009
-
Bonjour,

Je viens d'installer mon site le serveur (dev local sous MAMP), et voilà que ma class ne fonctionne plus... Voici le message d'errer :

"Cannot use object of type Panier as array in ..."

J'ai passé les lignes suivantes dans mon htacces pour le php 5 et la secur :
SetEnv PHP_VER 5
SetEnv REGISTER_GLOBALS 0

Voici mon début de class (c'est du php 4)


class Panier { 
  var $basket = array(); 

  function Panier () {
  
    if(!isset($_SESSION['panier'])) $_SESSION['panier'] = array();
    $this->basket =& $_SESSION['panier'];

  }

  function cle($idArticle) {
    
    $res = "non";
    foreach ($this->basket as $key => $tab) {
if($tab["idProduit"] == $idArticle) $res = $key;

    }

    return $res;

  }
...
}


Quelqu'un à une idée ?

Merci.

4 réponses

Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009

Bon après moulte recherche, j'ai trouvé, et ça ne vient pas de ma class.

Petite info que je ne connaissais pas et qui s'adresse au "ajaxeur".

Le résultat d'une page chargée par ajax peut être gardé en cache. Il faut désactiver le cache, soit en ajoutant à l'url un time() (ce qui change systématiquement l'url et donc force l'actualisation) soit pour ceux qui comme moi utilisent mootools mette dans la paramètre du mootools core nocache=true au lieu de false.

Excuse moi kohntark.
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
31
Salut,


"Cannot use object of type Panier as array in ..."


in ... ??? faut deviner ??

Si tu pouvais mettre le code nécessaire à la compréhension et surligner la ligne en erreur ça aiderait bien.
A vu de nez l'erreur est ailleurs.


Cordialement,

Kohntark -
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009

Voilà toute la class (j'y ai un peut retravaillé) :

Pour le moment c'est la ligne en rouge, mais en faite c'est partout où j'utilise foreach (for tout court aussi d'ailleurs). Ce qui est après le in c'est juste le nom du fichier php Panier.class.php.

<?php
//http://www.allhtml.com/articles/detail/523

class Panier { 
 
 
 	private $panier =  array(); 

public function __construct () {


if(!isset($_SESSION['panier'])) $_SESSION['panier'] = array();

$this->panier =& $_SESSION['panier']; 


}


public function cle($idArticle) {

$res = "non";

foreach ($this->panier as $key => $tab) {

if($tab["idProduit"] == $idArticle) $res = $key;

}

return $res;

}
 
 	
public function ajoutArticle($array) {

//idProduit
//nom
//Modele
//urlPhoto
//idRub
//rub
//nomQte
//idQte
//qte
//PrixU

if($this->cle($array["idProduit"] != 'non')) $this->supprArticle($array["idProduit"]); 

$this->panier[] = $array; 

}

public function qteArticle ($id, $qte) {


$this->panier[$this->cle($id)]['qte'] = $qte;

}

public function supprArticle($id) {

//unset ($this->panier[$this->cle($id)]);
foreach ($this->panier as $key => $tab) {

if($tab["idProduit"] == $id) unset($this->panier[$key]);

}


}

public function nbrArticle () {

return count($this->panier);

}

public function totalTTCArticle ($id) {

return $this->panier[$this->cle($id)]['qte'] * $this->panier[$this->cle($id)]['PrixU'];

}

public function totalTTC () {

$total = 0;

foreach ($this->panier as $key => $tab) {

$total = $total + ($tab["PrixU"] * $tab["qte"]);

}

return $total;

}

public function affPanier() {


$list = $this->returnPanier();

if(sizeof($list) == 0) {

return 'Votre panier est vide.

';

}else{

$x = 0;

$html = '';

foreach($list as $key => $val) {

$prixTot = $val[\"qte\"] * $val[\"PrixU\"];
$classLigne (($x % 2) 0) ? 'class=\"lignPaire\"' : 'class=\"lignImpaire\"';

$nom = $val[\"qte\"].'x '.$val[\"nom\"];
$nom .= ($val[\"modele\"] != \"\") ? ' - '.$val[\"modele\"] : '';
$nom .= ($val[\"nomQte\"] != \"\") ? '('.$val[\"nomQte\"].')' : '';

$html .= '
----

'.$nom.',
'.$prixTot.'€,

';

$x++;
}

$html .= '
----

 total  |
'.$this->totalTTC ().'€ |

';

$html . = '
';

return $html;

}

}


public function returnPanier() {

return $this->panier;

}


public function ferme() {

$this->panier = array();

}

}


?>


Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009

Ah, y veut pas mettre en rouge, bon c'est la ligne dans le premier foreach (pardon pour le lien en haut, c'est là où je m'en suis inspiré)