Problème affichage caddie v5.6

3 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour à tous! ;)

J'ai installé la version 5.6 de peel shopping (dont je suis très satisfaite d'ailleurs). Jusque là je m'en sortais très bien mais arrivée au test de la page caddie.....problème :( J'ai cherché sur le forum mais je n'ai pas trouvé alors j'espère que mon post ne sera pas en trop et qu'il aidera aussi d'autres personnes !

J'ai donc c'est erreur:

Fatal error: Call to a member function on a non-object in /mnt/165/sdb/b/8/mylittlepuppetsshow/modeles/standard/caddie.php  on line 19
Qui correspond à cette ligne là du code:
if ($_SESSION['caddie']->compte_elements() == 0) {
Je ne comprends pas trop le problème? Je ne connais pas vraiment mon niveau en php....mais bon je m'en sors quand même, j'ai relativement bien personnalisé mon peel (pas très compliqué non plus et merciiii ) C'est donc un problème de session, et ce genre de problème j'en rencontre relativement souvent avec les codes php, sans vraiment les comprendre... Quelqu'un aurait-il la solution ?? Merci =)
<?php

// +----------------------------------------------------------------------+

// | Copyright (c) 2009 Advisto SAS, service PEEL - contact@peel.fr	   |

// +----------------------------------------------------------------------+

// | This file is part of PEEL Shopping 5.6, which is subject to an	   |

// | opensource commercial license: you are allowed to customize the code |

// | for your own needs, but you are NOT entitled to distribute this file |

// | More information: http://www.peel.fr/lire/licence-commerciale-71.html|

// +----------------------------------------------------------------------+

// | Author: Advisto SAS, RCS 479 205 452, France, http://www.peel.fr/	|

// +----------------------------------------------------------------------+

// $Id: caddie.php 6779 2010-02-18 10:05:52Z sdelaporte $


echo '

<div class="totalcaddie">

	<h2>' . CADDIE . '</h2>

';


if ($_SESSION['caddie']->compte_elements() == 0) {

	echo '<p>' . nl2br(EMPTY_CADDIE) . '</p>';

} else {

	echo '

	<p class="caddie_red">' . $_SESSION['caddie']->affiche_erreur_caddie() . '</p>

	<form id="caddieform" method="post" action="' . $_SERVER['PHP_SELF'] . '">

		<table class="caddie" cellpadding="0" border="0" cellspacing="0" summary="' . TABLE_SUMMARY_CADDIE . '">

			<tr class="caddie">

				<th class="caddie">&nbsp;</th>

				<th scope="col" class="caddie">' . PHOTO . '</th>

				<th scope="col" class="caddie">' . PRODUCT . '</th>

				<th scope="col" class="caddie">' . UNIT_PRICE . '</th>

				<th scope="col" class="caddie">' . OPTION_PRICE . '</th>

				<th scope="col" class="caddie">' . QUANTITY . '</th>

				<th scope="col" class="caddie">' . REMISE . ' ' . $Taxes_diplayed . '</th>

				<th scope="col" class="caddie">' . TOTAL_PRICE . ' ' . $Taxes_diplayed . '</th>

			</tr>

';


	foreach ($_SESSION['caddie']->articles as $i => $produitid) {

		$qid = query('SELECT p.*, pc.categorie_id, c.nom_' . $_SESSION['langue'] . ' AS categorie

		   FROM peel_produits p

		   INNER JOIN peel_produits_categories pc ON pc.produit_id=p.id

		   INNER JOIN peel_categories c ON c.id = pc.categorie_id

		   WHERE p.id="'.intval($produitid).'"');


		if (num_rows($qid) > 0) {

			$prod = fetch_assoc($qid);


			/* Récupération des variables du caddie */

			$quantite_commandable = $quantite = $quantite = vn($_SESSION['caddie']->quantite[$i]);

			$couleur = vb($_SESSION['caddie']->couleur[$i]);

			$taille = vb($_SESSION['caddie']->taille[$i]);

			$couleurId = vb($_SESSION['caddie']->couleurId[$i]);

			$tailleId = vb($_SESSION['caddie']->tailleId[$i]);

			$prix = vn($_SESSION['caddie']->prix[$i]);

			$prix_ht = vn($_SESSION['caddie']->prix_ht[$i]);

			$prix_cat = vn($_SESSION['caddie']->prix_cat[$i]);

			$prix_cat_ht = vn($_SESSION['caddie']->prix_cat_ht[$i]);

			$total_prix = vn($_SESSION['caddie']->total_prix[$i]);

			$total_prix_ht = vn($_SESSION['caddie']->total_prix_ht[$i]);

			$tva_percent = vn($_SESSION['caddie']->tva_percent[$i]);

			$tva = vn($_SESSION['caddie']->tva[$i]);

			$poids = vb($_SESSION['caddie']->poids[$i]);

			$points = vb($_SESSION['caddie']->points[$i]);

			$percent_remise_produit = vn($_SESSION['caddie']->percent_remise_produit[$i]);

			$remise = vn($_SESSION['caddie']->remise[$i]);

			$remise_ht = vn($_SESSION['caddie']->remise_ht[$i]);

			$etat_stock = vn($_SESSION['caddie']->etat_stock[$i]);

			$delivery_stock = vb($_SESSION['caddie']->delai_stock[$i]);

			$option = vn($_SESSION['caddie']->option[$i]);

			$email_check = vb($_SESSION['caddie']->email_check[$i]);

			$ecotaxe = vb($_SESSION['caddie']->ecotaxe_ttc[$i]) * $quantite;

			$attribut = vn($_SESSION['caddie']->attribut[$i]);

			$total_attribut = vn($_SESSION['caddie']->total_prix_attribut[$i]);


			if (is_advanced_stock_module_active() && $prod['on_stock'] == 1) {

				$stock_reel = recupere_stock_reel($produitid, $couleurId, $tailleId);

				$quantite_commandable = controle_stock($produitid, $couleurId, $tailleId, $quantite);

			}

			if (is_module_url_rewriting_active()) {

				$urlprod = $wwwroot . '/' . mrpropre($prod['categorie']) . '-' . $prod['categorie_id'] . '/' . mrpropre($prod['nom_' . $_SESSION['langue']]) . '-' . $prod['id'] . '.html';

			} else {

				$urlprod = $wwwroot . '/achat/produit_details.php?id=' . $prod['id'];

			}

			if (!empty($prod['image1'])) {

				$product_img = '<a href="' . $urlprod . '"><img src="' . $repertoire_upload . '/' . $prod['image1'] . '" width="50" style="vertical-align:middle;" alt="" /></a>';

			} elseif (file_exists($dirroot . '/images/photo-non-disponible.gif') == true) {

				$product_img = '<a href="' . $urlprod . '"><img src="' . $wwwroot . '/images/photo-non-disponible.gif" width="50" style="vertical-align:middle;" alt="" /></a>';

			} else {

				$product_img = '';

			}

			if (display_prices_with_taxes_active()) {

				$remise_displayed = $remise;

				$total_attribut_displayed = $total_attribut;

				$prix_cat_displayed = $prix_cat;

				$total_prix_displayed = $total_prix;

			} else {

				$remise_displayed = $remise_ht;

				$total_attribut_displayed = $total_attribut / (1 + $prod['tva'] / 100);

				$prix_cat_displayed = $prix_cat_ht;

				$total_prix_displayed = $total_prix_ht;

			}

			echo '

			<tr>

				<th scope="row" class="listeprod">

					<a onclick="java script:return confirm(\'Etes-vous s&ucirc;r de vouloir enlever ce produit du panier ?\');"  href="' . $_SERVER['PHP_SELF'] . '?func=enleve&amp;ligne=' . $i . '&amp;id=' . $prod['id'] . '">

						<img src="images/poubelle.gif" width="25" height="25" alt="" />

					</a>

				</th>

				<td class="lignecaddie">' . $product_img . '</td>

				<td class="lignecaddie">

					<!-- affiche le nom du produit -->

					<input type="hidden" name="id[' . $i . ']" value="' . $produitid . '" />

					<input type="hidden" name="option[' . $i . ']" value="' . $option . '" />

					<input type="hidden" name="id_attribut[' . $i . ']" value="' . vb($_SESSION['caddie']->id_attribut[$i]) . '" />

					<a href="' . $urlprod . '">' . html_entity_decode($prod['nom_' . $_SESSION['langue']]) . '</a>

';


			if (!empty($delivery_stock)) {

				echo '<br />' . DELIVERY_STOCK . ' : '.$delivery_stock.'<br />';

			}


			if (!empty($attribut)) {

				echo '<br />' . $attribut;

				echo ($total_attribut > 0 ? OPTIONS_COST . ' ' . fprix($total_attribut_displayed, true) : '');

			}


			echo (!empty($couleur) ? '<br />' . COLOR . ' : '.$couleur.' <input type="hidden" name="couleurId[' . $i . ']" value="'.$couleurId.'" />' : '<input type="hidden" value="" name="couleur[' . $i . ']" /><input type="hidden" name="couleurId[' . $i . ']" value="0" />');

			echo (!empty($taille) ? '<br />' . SIZE . ' : '.$taille.' <input type="hidden" name="tailleId[' . $i . ']" value="'.$tailleId.'" />' : '<input type="hidden" value="" name="taille[' . $i . ']" /><input type="hidden" name="tailleId[' . $i . ']"  value="0" />');

			echo (!empty($email_check) > 0 ? '<br />' . EMAIL_FRIEND . ' : '.$email_check.'<br /> <input type="hidden" name="email_check[' . $i . ']" value="'.$email_check.'" />' : '<input type="hidden" value="" name="email_check[' . $i . ']" />');

			if ($ecotaxe != '0') {

				echo '<br /><em>' . ECOTAXE . ' : ' . fprix($ecotaxe, true) . '</em>';

			}

			echo '

				</td>

				<td class="lignecaddie" align="center">' . fprix($prix_cat_displayed, true) . '</td>

				<td class="lignecaddie" align="center">' . ($option != 'O' ? fprix($option, true) : '-') . '</td>

				<td class="lignecaddie">

					<input type="text" size="3" name="quantite[' . $i . ']" value="' . $quantite_commandable . '" ';

			if (is_advanced_stock_module_active() && $prod['on_stock'] == 1) {

				echo 'onchange="java script:if(this.value>' . $stock_reel . ') {this.value=\'' . $stock_reel . '\'; alert(\'' . QUANTITY_INSUFFICIENT . '\');}"';

			}

			echo ' />

					<a href="java script: frmsubmit(\'recalc\');"><img src="images/ok.gif"  style="vertical-align:top;" alt="ok" /></a>

				</td>

				<td class="lignecaddie" align="center">- ' . ($remise_displayed > 0 ? fprix($remise_displayed, true) : '') . '</td>

				<td class="lignecaddie" align="center">' . fprix($total_prix_displayed, true) . '</td>

			</tr>

';

		}

	}

	echo '

		</table>

		<div id="step2caddie">';


	if (!empty($_SESSION['caddie']->total_ecotaxe_ttc)) {

		echo '

			<p>

				<label>' . ECOTAXE . ' ' . TTC . '</label>' . fprix($_SESSION['caddie']->total_ecotaxe_ttc, true) . '

			</p>';

	}

	// - Si la session client contient une remise > 0

	if (!empty($_SESSION['caddie']->total_remise)) {

		echo '

			<p>

				<label>' . REMISE . ' ' . INCLUDED . ' ' . $Taxes_diplayed . ': </label>

				' . fprix($total_remise_displayed, true) . '

			</p>

';

		if (!empty($_SESSION['caddie']->percent_code_promo) || !empty($_SESSION['caddie']->valeur_code_promo)) {

			echo '

			<p class="italic"> dont le code promotionnel ' . $_SESSION['caddie']->code_promo . ' : '

			 . (!empty($_SESSION['caddie']->percent_code_promo)? fprix($_SESSION['caddie']->total_reduction_percent_code_promo, true):fprix($_SESSION['caddie']->valeur_code_promo, true)) . '

			</p>

';

		}

	}


	if (!empty($_SESSION['caddie']->avoir)) {

		echo '

			<p>

				<label>' . AVOIR . ' : </label> - ' . fprix($_SESSION['caddie']->avoir, true) . '

			</p>';

	}

	echo '

			<p>

				<label>' . SHIPPING_COST . ' : </label>';


	echo (!empty($_SESSION['caddie']->cout_transport) ? fprix($_SESSION['caddie']->cout_transport, true) : OFFERED . '&nbsp;' . FROM . ' ' . fprix($seuil_total, true));


	echo '

			</p>

';

	if ($_SESSION['caddie']->total > 0) {

		if (!is_micro_entreprise_module_active()) {

			echo '

			<p>

				<label>' . TOTAL_HT . ' : </label>

				' . fprix($_SESSION['caddie']->total_ht, true) . '

			</p>

			<p>

				<label>' . VAT . ' :</label>

				' . fprix($_SESSION['caddie']->total_tva, true) . '

			</p>';

		} else {

			echo '

			<p>' . NO_VAT_APPLIABLE . '</p>';

		}

		echo'

			<p class="caddie_red">

				<label>' . NET . ' ' . TTC . ' : </label>' . fprix($_SESSION['caddie']->total, true) . '

			</p>

';

	}


	if ($_SESSION['caddie']->total_points > 0) {

		echo '

			<p>

				<label>' . ORDER_POINT . ' : </label>

				' . $_SESSION['caddie']->total_points . '&nbsp;' . POINT . '

			</p>

';

	}

	echo '

			<div id="choix_zone">

';


	if ($mode_transport == 1) {

		echo '

				<p class="caddie_bold">';

		if (isset($_SESSION['caddie']->pays)) {

			$queryPays = query('SELECT pays_' . $_SESSION['langue'] . ' FROM peel_pays WHERE pays_' . $_SESSION['langue'] . ' = "' . addslashes($_SESSION['caddie']->pays) . '"');

			if (num_rows($queryPays) > 0) {

				$objPays = fetch_assoc($queryPays);

				$ship = $objPays['pays_' . $_SESSION['langue']];

			}

		}

		if (!empty($erreur_pays)) {

			echo '

					<span style="color:red;"><b>' . $erreur_pays . '</b></span><br />';

		}

		echo COUNTRY_SHIP . ' (*) :

					<select class="formulaire1" name="pays_zone" onchange="java script:frmsubmit(\'recalc\')">

						<option value="|">' . COUNTRY_CHOOSE . '</option>';


		$sqlPays = 'SELECT id, pays_' . $_SESSION['langue'] . ', zone FROM peel_pays WHERE etat = "1" ORDER BY position, pays_' . $_SESSION['langue'];


		$resPays = query($sqlPays);


		if ($resPays) {

			if (num_rows($resPays) > 0) {

				while ($Pays = fetch_assoc($resPays)) {

					echo '

						<option value="' . $Pays['id'] . '|' . $Pays['zone'] . '"';

					if (empty($_SESSION['caddie']->pays) && vb($_SESSION['utilisateur']['pays']) == $Pays['id']) {

						echo ' selected="selected"';

						$_SESSION['caddie']->determine_pays_zone($Pays['id'], $Pays['zone']);

					} elseif (vb($_SESSION['caddie']->pays) == $Pays['pays_' . $_SESSION['langue']]) {

						echo ' selected="selected"';

					}

					echo '>' . html_entity_decode($Pays['pays_' . $_SESSION['langue']]) . '</option>

';

				}

			}

		}


		echo '

					</select>

				</p>

';

		if (!empty($_SESSION['caddie']->zone)) {

			echo '<p>' . SHIPPING_ZONE . ' : ' . $_SESSION['caddie']->zone . '</p>';

		}

		echo '

				<p class="caddie_bold">';

		if (!empty($_SESSION['caddie']->zoneId)) {

			// Ici on est dans le cas où le calcul des frais de ports est par poids (en effet, si c'est par montant total, il n'y a pas de zones)

			if (!empty($erreur_type)) {

				echo '

			<span style="color:red;"><b>' . $erreur_type . '</b></span><br />';

			}

			$sqlType = 'SELECT DISTINCT(t.id), t.nom_' . $_SESSION['langue'] . '

				FROM peel_tarifs tf, peel_types t

				WHERE t.id = tf.type AND tf.zone = "' . intval($_SESSION['caddie']->zoneId) . '"';

			$resType = query($sqlType);


			if ($resType) {

				if (num_rows($resType) > 0) {

					echo SHIPPING_TYPE . ' (*) :

				<select class="formulaire1" name="type" onchange="java script:frmsubmit(\'recalc\')">

					<option value="">' . SHIP_TYPE_CHOOSE . '</option>

';

					while ($Type = fetch_assoc($resType)) {

						echo '

					<option value="' . $Type['id'] . '"';

						if (vb($_SESSION['caddie']->typeId) == $Type['id']) echo ' selected="selected"';

						echo '>' . html_entity_decode($Type['nom_' . $_SESSION['langue']]) . '</option>

';

					}

					echo '

				</select>

';

				} else {

					echo '

				<span style="color:red;">' . ERREUR_TYPE . '</span><br />';

				}

			}

		}

		echo '

				</p>

';

	}


	if (est_identifie()) {

		echo '

				<p class="caddie_bold">

					<label for="code_promo">' . CODE_PROMO . ' : </label><br />

					<input type="text" class="formulaire1" id="code_promo" name="code_promo" value="' . strtoupper(vb($_SESSION['caddie']->code_promo)) . '" onchange="java script:frmsubmit(\'recalc\')" />

					<a href="java script: frmsubmit(\'recalc\');"><img src="images/ok.gif" style="vertical-align:top;" alt="ok" /></a><br />

				</p>';

	} else {

		echo '

				<p class="caddie_bold">

					<a class="notice" href="'.$wwwroot.'/membre.php" title="Identifiez vous pour b&eacute;n&eacute;ficier de votre r&eacute;duction">Identifiez-vous</a> maintenant si vous avez un bon de r&eacute;duction

				</p>';

	}


	echo '

				<div class="right">

					<ul class="boutoncaddie">

						<li><a href="java script: frmsubmit(\'recalc\');" onmouseover="return overlib(\'Vos frais de port sont offerts à partir de ' . fprix($seuil_total, true) . ' d\'achat\');" onmouseout="return nd();">' . UPDATE . '</a></li>

						<li><a href="' . $wwwroot . '/achat/index.php">' . SHOPPING . '</a></li>

						<li><a href="java script: frmsubmit(\'vide\');">' . EMPTY_LIST . '</a></li>

					</ul>

				</div>

';


	if ($_SESSION['caddie']->total > 0) {

		echo '

				<div style="text-align:center">

					<div class="bouton">

						<a class="blanc" href="java script: frmsubmit(\'commande\');" onmouseover="return overlib(\'Vos frais de port sont offerts à partir de ' . fprix($seuil_total, true) . ' d\'achat\');" onmouseout="return nd();">' . ORDER . '</a>

					</div>

				</div>

';

	} else {

		echo '

				<div style="text-align:center"><p>' . MSG_SUGGEST . '</p></div>

';

	}

	echo '

				<input type="hidden" name="func" value="" />

			</div>

		</div>

	</form>

';

}

echo '</div>';


?>

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Re bonjour à tous!!

Mon problème est réglé!! Je suis très contente, j'ai un peu poussé mes recherches google et hop!

Alors le problème vient bien de la ligne 19. Il faut la remplacer:

if ($_SESSION['caddie']->compte_elements() == 0) {
par:
if ($_SESSION['caddie']->compte_elements() != 0) {

Il manquait donc un petit point d'exclamation =)

J'espère que cela aidera d'autres personnes !!

Bien à vous,

Marine~

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonsoir Marine,

Les lignes de code :

if ($_SESSION['caddie']->compte_elements() == 0) {

echo '<p>' . nl2br(EMPTY_CADDIE) . '</p>';

}

signifient "Si on compte zéro articles dans le caddie, alors afficher : Le caddie est vide"

Si vous remplacez

if ($_SESSION['caddie']->compte_elements() == 0) {

par

if ($_SESSION['caddie']->compte_elements() != 0) {

alors vous écrivez : signifient "Si on ne compte pas zéro articles dans le caddie, alors afficher : Le caddie est vide"

ce qui est erroné !!!

La correction à apporter est de remplacer

if ($_SESSION['caddie']->compte_elements() == 0) {

par

if (!empty($_SESSION['caddie']) && $_SESSION['caddie']->compte_elements() == 0) {

(on vérifie que le caddie existe avant d'en compter les éléments)

Cette correction sera apportée à la prochaine version de PEEL.

Cordialement,

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping