par
Boro64 » 05 févr. 2011, 10:50
Bonjour
Alors, je confirme bien ce que je disais: avec la $transport seule, si je sélectionne (au moins) 2 produits, l'un à 15€ + 15€ de port et le second à 12€ + 16€ de port, le total affiché est de.........59€ !!!!!!!!!!!!!!!

.
Mais peut être le problème est il ailleurs? (qui a dit entre la chaise et le clavier?)...
Voici donc l'inbtégralité du code:
<?php
/**
* Verifie si le topcase existe, le créer sinon
* @return booleen
*/
function creationTopcase(){
if (!isset($_SESSION['topcase'])){
$_SESSION['topcase']=array();
$_SESSION['topcase']['id_article'] = array();
$_SESSION['topcase']['titre'] = array();
$_SESSION['topcase']['qte'] = array();
$_SESSION['topcase']['prix'] = array();
$_SESSION['topcase']['port'] = array();
$_SESSION['topcase']['verrou'] = false;
}
return true;
}
/**
* Ajoute un article dans le topcase
* @param string $id_article
* @param int $qte
* @param float $prix
* @return void
*/
function ajouterArticle($id_article,$titre,$qte,$prix,$port){
//Si le topcase existe
if (creationTopcase() && !isVerrouille())
{
//Si le produit existe déjà on ajoute seulement la quantité
$positionProduit = array_search($id_article, $_SESSION['topcase']['id_article']);
if ($positionProduit !== false)
{
$_SESSION['topcase']['qte'][$positionProduit] += $qte ;
}
else
{
//Sinon on ajoute le produit
array_push( $_SESSION['topcase']['id_article'],$id_article);
array_push( $_SESSION['topcase']['titre'],$titre);
array_push( $_SESSION['topcase']['qte'],$qte);
array_push( $_SESSION['topcase']['prix'],$prix);
array_push( $_SESSION['topcase']['port'],$port);
}
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Modifie la quantité d'un article
* @param $id_article
* @param $qte
* @return void
*/
function modifierQTeArticle($id_article,$qte){
//Si le topcase éxiste
if (creationTopcase() && !isVerrouille())
{
//Si la quantité est positive on modifie sinon on supprime l'article
if ($qte > 0)
{
//Recharche du produit dans le topcase
$positionProduit = array_search($id_article, $_SESSION['topcase']['id_article']);
if ($positionProduit !== false)
{
$_SESSION['topcase']['qte'][$positionProduit] = $qte ;
}
}
else
supprimerArticle($id_article);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Supprime un article du topcase
* @param $id_article
* @return unknown_type
*/
function supprimerArticle($id_article){
//Si le topcase existe
if (creationTopcase() && !isVerrouille())
{
//Nous allons passer par un topcase temporaire
$tmp=array();
$tmp['id_article'] = array();
$tmp['titre'] = array();
$tmp['qte'] = array();
$tmp['prix'] = array();
$tmp['port'] = array();
$tmp['verrou'] = $_SESSION['topcase']['verrou'];
for($i = 0; $i < count($_SESSION['topcase']['id_article']); $i++)
{
if ($_SESSION['topcase']['id_article'][$i] !== $id_article)
{
array_push( $tmp['id_article'],$_SESSION['topcase']['id_article'][$i]);
array_push( $tmp['titre'],$_SESSION['topcase']['titre'][$i]);
array_push( $tmp['qte'],$_SESSION['topcase']['qte'][$i]);
array_push( $tmp['prix'],$_SESSION['topcase']['prix'][$i]);
array_push( $tmp['port'],$_SESSION['topcase']['port'][$i]);
}
}
//On remplace le topcase en session par notre topcase temporaire à jour
$_SESSION['topcase'] = $tmp;
//On efface notre topcase temporaire
unset($tmp);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Montant total du topcase
* @return int
*/
function MontantGlobal(){
$total=0;
for($i = 0; $i < count($_SESSION['topcase']['id_article']); $i++)
{
$transport = max($_SESSION['topcase']['port']);
$total += $_SESSION['topcase']['qte'][$i] * $_SESSION['topcase']['prix'][$i] + $transport;
}
return $total;
}
/**
* Fonction de suppression du topcase
* @return void
*/
function supprimePanier(){
unset($_SESSION['topcase']);
}
/**
* Permet de savoir si le topcase est verrouillé
* @return booleen
*/
function isVerrouille(){
if (isset($_SESSION['topcase']) && $_SESSION['topcase']['verrou'])
return true;
else
return false;
}
/**
* Compte le nombre d'articles différents dans le topcase
* @return int
*/
function compterArticles()
{
if (isset($_SESSION['topcase']))
return count($_SESSION['topcase']['id_article']);
else
return 0;
}
?>
Moi, je ne comprends plus rien ! Et vous?
Merci de vos avis.
Bonjour
Alors, je confirme bien ce que je disais: avec la $transport seule, si je sélectionne (au moins) 2 produits, l'un à 15€ + 15€ de port et le second à 12€ + 16€ de port, le total affiché est de.........59€ !!!!!!!!!!!!!!! :shock: .
Mais peut être le problème est il ailleurs? (qui a dit entre la chaise et le clavier?)...
Voici donc l'inbtégralité du code:
[php]
<?php
/**
* Verifie si le topcase existe, le créer sinon
* @return booleen
*/
function creationTopcase(){
if (!isset($_SESSION['topcase'])){
$_SESSION['topcase']=array();
$_SESSION['topcase']['id_article'] = array();
$_SESSION['topcase']['titre'] = array();
$_SESSION['topcase']['qte'] = array();
$_SESSION['topcase']['prix'] = array();
$_SESSION['topcase']['port'] = array();
$_SESSION['topcase']['verrou'] = false;
}
return true;
}
/**
* Ajoute un article dans le topcase
* @param string $id_article
* @param int $qte
* @param float $prix
* @return void
*/
function ajouterArticle($id_article,$titre,$qte,$prix,$port){
//Si le topcase existe
if (creationTopcase() && !isVerrouille())
{
//Si le produit existe déjà on ajoute seulement la quantité
$positionProduit = array_search($id_article, $_SESSION['topcase']['id_article']);
if ($positionProduit !== false)
{
$_SESSION['topcase']['qte'][$positionProduit] += $qte ;
}
else
{
//Sinon on ajoute le produit
array_push( $_SESSION['topcase']['id_article'],$id_article);
array_push( $_SESSION['topcase']['titre'],$titre);
array_push( $_SESSION['topcase']['qte'],$qte);
array_push( $_SESSION['topcase']['prix'],$prix);
array_push( $_SESSION['topcase']['port'],$port);
}
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Modifie la quantité d'un article
* @param $id_article
* @param $qte
* @return void
*/
function modifierQTeArticle($id_article,$qte){
//Si le topcase éxiste
if (creationTopcase() && !isVerrouille())
{
//Si la quantité est positive on modifie sinon on supprime l'article
if ($qte > 0)
{
//Recharche du produit dans le topcase
$positionProduit = array_search($id_article, $_SESSION['topcase']['id_article']);
if ($positionProduit !== false)
{
$_SESSION['topcase']['qte'][$positionProduit] = $qte ;
}
}
else
supprimerArticle($id_article);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Supprime un article du topcase
* @param $id_article
* @return unknown_type
*/
function supprimerArticle($id_article){
//Si le topcase existe
if (creationTopcase() && !isVerrouille())
{
//Nous allons passer par un topcase temporaire
$tmp=array();
$tmp['id_article'] = array();
$tmp['titre'] = array();
$tmp['qte'] = array();
$tmp['prix'] = array();
$tmp['port'] = array();
$tmp['verrou'] = $_SESSION['topcase']['verrou'];
for($i = 0; $i < count($_SESSION['topcase']['id_article']); $i++)
{
if ($_SESSION['topcase']['id_article'][$i] !== $id_article)
{
array_push( $tmp['id_article'],$_SESSION['topcase']['id_article'][$i]);
array_push( $tmp['titre'],$_SESSION['topcase']['titre'][$i]);
array_push( $tmp['qte'],$_SESSION['topcase']['qte'][$i]);
array_push( $tmp['prix'],$_SESSION['topcase']['prix'][$i]);
array_push( $tmp['port'],$_SESSION['topcase']['port'][$i]);
}
}
//On remplace le topcase en session par notre topcase temporaire à jour
$_SESSION['topcase'] = $tmp;
//On efface notre topcase temporaire
unset($tmp);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Montant total du topcase
* @return int
*/
function MontantGlobal(){
$total=0;
for($i = 0; $i < count($_SESSION['topcase']['id_article']); $i++)
{
$transport = max($_SESSION['topcase']['port']);
$total += $_SESSION['topcase']['qte'][$i] * $_SESSION['topcase']['prix'][$i] + $transport;
}
return $total;
}
/**
* Fonction de suppression du topcase
* @return void
*/
function supprimePanier(){
unset($_SESSION['topcase']);
}
/**
* Permet de savoir si le topcase est verrouillé
* @return booleen
*/
function isVerrouille(){
if (isset($_SESSION['topcase']) && $_SESSION['topcase']['verrou'])
return true;
else
return false;
}
/**
* Compte le nombre d'articles différents dans le topcase
* @return int
*/
function compterArticles()
{
if (isset($_SESSION['topcase']))
return count($_SESSION['topcase']['id_article']);
else
return 0;
}
?>
[/php]
Moi, je ne comprends plus rien ! Et vous?
Merci de vos avis.