Erreur sur un array dans une class

Résolu
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009 - 19 août 2009 à 17:26
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009 - 20 août 2009 à 09:33
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

zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009
20 août 2009 à 09:33
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.
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
19 août 2009 à 17:50
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 -
0
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009
19 août 2009 à 17:57
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();

}

}


?>


0
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009
19 août 2009 à 17:59
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é)
0
Rejoignez-nous