Page 1 sur 1

Problème avec un tableau à 2 dimensions apparement :(

Posté : 29 mars 2005, 18:24
par Messin
Bonjour à tous,

je vais essayer de vous expliquer mon problème :

je dois en PHP gérer un caddie.

Pour cela, j'ai une page avec le listing des produits du catalogue avec à coté de chaque article un lien pour "ajouter au panier" (ja passe avec ce lien l'identifiant de l'article choisi)

Sur ma page suivante, je recupere l'identifiant de l'article, et je permet de choisir la quantité de l'objet désiré avec un formulaire.

A la validation du formulaire, je passe toujours l'identifiant plus la quantité selectionnée pour arriver sur une page que l'utilisateur ne verra pas mais qui me sert à insérer le produit + la quantité dans une variable de session --> afin d'y avoir acces à tous moment, sachant que je ne l'insere pas encore dans la base de données puisque l'utilisateur peut encore changer d'avis (l'insertion se fera sur une page recapitulative)

donc mon probleme est sur cette fameuse page intermediaire :

A priori je parts sur une variable de Session, donc en tout 1er je lance mon [b]session_start();[/b]

Ensuite je récupére mon données transmises par le formulaire.

C'est là que ca devient interessant, avec commentaires :

[quote]
// On extrait le tableau stocké dans l'objet Sesssion :
$tabSession = $_SESSION['caddy'];

// On teste si le tableau existe ou non :
if (isset($tabSession)) {
//on ajoute une colonne au tableau puis on affecte les nouvelles valeurs sans écraser les anciennes :
$max_col = count($tabSession);
$max_col = $max_col + 1 ;

[color=red]$tabSession(0,$max_col) = $id;[/color]
$tabSession(1,$max_col) = $quantite;

//On restocke le nouveau tableau (mis à jour) dans l'objet Session :
$_SESSION['caddy'] = $tabSession;
}

else {
//Création et initialisation du tableau, comme celui ci n'existe encore pas :
//Tableau a 2 dimensions : 2 lignes et 1 colonne (1ere ligne pour les références des articles, 2eme pour les quantités)
$tabSession = new Array(2,1);

//On affecte une valeur à la 1ere ligne et 1ere colonne
$tabSession(0,0)=$id;

//On affecte une valeur à la 2ème ligne et 1ere colonne
$tabSession(1,0)=$quantite;

//Stockage du tableau dans l'objet Session :
$_SESSION['caddy'] = $tabSession;
}
[/quote]

et là, il me dit :
"Parse error: parse error, unexpected '=' in /var/www/free.fr/1/4/consocoop.net/ajout_caddy.php on line 27"
la ligne 27 étant celle en rouge

J'ai cherché un peu dans tous les sens, mais je ne vois pas mon erreur :(

pourriez vous m'aider svp ?

Merci bcp par avance pour vos réponses

Amicalement

PS : ayant l'impression que ma solution est un peu une usine à gaz (en fait j'ai déjà utilisé cette démarche mais en ASP :P ) je suis preneur en cas de meilleur solution de traitement :)

Posté : 30 mars 2005, 17:15
par goeb
$tabSession(0,$max_col) = $id;
si $tabSession est un tableau, il faut accéder à ses éléments avec des crochets [].

comme ça par exemple :

Code : Tout sélectionner

$tabSession[0] = $id;
mais en fait, pour un tableau à 2 dimensions, je sais pas quelle est la syntaxe exacte.

Posté : 31 mars 2005, 09:11
par Cyrano
Essaye comme ça :
<?php
// On extrait le tableau stocké dans l'objet Sesssion :
$tabSession = $_SESSION['caddy'];

// On teste si le tableau existe ou non :
if (isset($tabSession))
{
	//on ajoute une colonne au tableau puis on affecte les nouvelles valeurs sans écraser les anciennes :
	$max_col = count($tabSession);
	$max_col = $max_col + 1 ;

	$tabSession[0][$max_col] = $id;
	$tabSession[1][$max_col] = $quantite;

	//On restocke le nouveau tableau (mis à jour) dans l'objet Session :
	$_SESSION['caddy'] = $tabSession;
}

else
{
	//Création et initialisation du tableau, comme celui ci n'existe encore pas :
	//Tableau a 2 dimensions : 2 lignes et 1 colonne (1ere ligne pour les références des articles, 2eme pour les quantités)
	$tabSession = array();

	//On affecte une valeur à la 1ere ligne et 1ere colonne
	$tabSession[0][0]=$id;

	//On affecte une valeur à la 2ème ligne et 1ere colonne
	$tabSession[1][0]=$quantite;

	//Stockage du tableau dans l'objet Session :
	$_SESSION['caddy'] = $tabSession;
}
?>
Note que j'ai modifié la déclaration de tableau $tabSession : il suffit simplement de déclarer $tabSession = array() pour un tableau à une dimension: Si tu as plusieurs dimensions, tu peux refaire une déclaration pour chaque index étant lui-même un tableau: par exemple,
$tabSession['nbArticles'] = array();
/* Ou bien encore : */
$tabSession[0] = array();