Probleme ajout panier dans boutique php

Fermé
diice Messages postés 131 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 25 février 2017 - 4 juil. 2009 à 15:48
diice Messages postés 131 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 25 février 2017 - 4 juil. 2009 à 19:49
Bonjour à tous,

Je suis en phase terminale d'une boutique en php.

Mais juste un p'tit souci qui vient de je ne sais ou.
J'ai bien regardé dans mon code, et j'avoue que je suis perdu, je sais pas du tout d'ou pourrait venir l'erreur.

quand on arrive sur le site, qu'on veut passer un article dans le panier celui ci ne se fait pas, et me ramene l'erreur de la fonction CreationPanier().
Par contre quand j'actualise la page, il se met dans le panier nikel...

et le soucis c'est que cette erreur n'arrive qu'une fois, uniquement lors de l'arrivée pour la premiere fois sur le site...
apres avoir faire la manip de rafraichir une fois, meme si je vide le panier, je peux sans probleme ajouter un nouvel article sans l'erreur et ce tout le long de ma navigation sur le site.

vous pouvez tester sur le site en test ici : http://www.neverdeadcompany.fr

j'ai essayé de mettre session_start(); sur tout le site, mais ca ne change rien...

je vous met le code de ma fonction :
function CreationPanier(){
$ret=false;

if (isset($_SESSION['panier']))
{ $ret = true; }
else
{

  $_SESSION['panier']=array();
  $_SESSION['panier']['idsessProduit'] = array();
  $_SESSION['panier']['libelleProduit'] = array();
  $_SESSION['panier']['tailleProduit'] = array();
  $_SESSION['panier']['qteProduit'] = array();      
  $_SESSION['panier']['prixProduit'] = array();
  $_SESSION['panier']['cDe'] = array();
}
return $ret;
}

function ajouterArticle($idsessProduit,$libelleProduit,$tailleProduit,$qteProduit,$prixProduit,$cDe){

if (CreationPanier())
{
$positionProduit = array_search($idsessProduit,  $_SESSION['panier']['idsessProduit']);
	
  if ($positionProduit !== false)
  {
   $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
  }
  else
  {
   array_push( $_SESSION['panier']['idsessProduit'],$idsessProduit);
   array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
   array_push( $_SESSION['panier']['tailleProduit'],$tailleProduit);
   array_push( $_SESSION['panier']['qteProduit'],$qteProduit); 
   array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
   array_push( $_SESSION['panier']['cDe'],$cDe);
  }

}

else {
  echo "<div class='txtorange' style='border:1px solid #74ef00; margin:5px 5px 5px 5px; padding: 5px 5px 5px 5px;'>Un problème est survenu à l'ajout de votre article, <A HREF='#' onclick='document.location.reload();return(false)'><b>rafraichissez la page pour entrer celui ci dans votre panier...</b></a> sinon veuillez contacter l'administrateur du site.</div><br>";
}
}


et vous met le code de mon panier :
// SI 'action' EST PASSE EN URL
if (isset($_GET['action']))
{
$erreur=false;
 if (in_array($_GET['action'],array('ajout', 'suppression', 'refresh', 'suppsess')))
 { $action = $_GET['action']; }
 else { $erreur=true; }

 $idl = $_POST['idpro']."-".$_POST['taillepost'];
 $l = $_POST['idpro'];
 $t = $_POST['taillepost'];
 $q = intval($_POST['pnum']);
 $p = $_POST['px'];
 $cmd= $_GET['cde'];

}
// SI 'action' est passé en formulaire
elseif(isset($_POST['action']))
{
 unset($_GET);
 $erreur=false;
	
 if (in_array($_POST['action'],array('ajout', 'suppression', 'refresh', 'suppsess')))
  { $action=$_POST['action']; }
 else { $erreur=true; }
	
 $idl = $_POST['idpro']."-".$_POST['taillepost'];
 $l = $_POST['idpro'];
 $t = $_POST['taillepost'];
 $p = $_POST['px'];
 $cmd= $_GET['cde'];
 $QteArticle = array();



 $i=0;
 foreach ($_POST['QteArticle'] as $contenu)
 {
 $QteArticle[$i++] = intval($contenu);  
 }
	
}




if ($erreur==false){

 switch($action){

  Case "ajout":
  ajouterArticle($idl,$l,$t,$q,$p,$cmd);
  break;

  Case "suppression":
  supprimerArticle($_GET['idl']);
  break;

  Case "refresh" :

  for ($i = 0 ; $i < count($QteArticle) ; $i++)
  {
    modifierQTeArticle($_SESSION['panier']['idsessProduit'][$i],$_SESSION['panier']['libelleProduit'][$i],$_SESSION['panier']['tailleProduit'][$i],round($QteArticle[$i]),$_SESSION['panier']['prixProduit'][$i],$_SESSION['panier']['cDe'][$i]);
  }
  if (!empty($idl)) { $_SESSION['panier']['idsessProduit'][$i]=$idl; }
  break;

  Case "suppsess":
$nbArticles=count($_SESSION['panier']['idsessProduit']);
   
session_unregister("panier");
  break;

  Default:
  break;
      
 }
}

/// DEBUT GRAPHIQUE DU TABLEAU

if (CreationPanier()) 
{
$nbArticles=count($_SESSION['panier']['idsessProduit']);

  if (empty($nbArticles)) {  echo "<tr><td>Votre panier est vide </ td></tr>"; }
  elseif ($_GET['action']=="suppsess") { echo "<tr><td>Votre panier est vide </ td></tr>"; }
  else
  {

$bg=0;
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
$idprod=$_SESSION['panier']['libelleProduit'][$i];

//SUPPRESSION ARTICLE SI MODIFICATION
if (!empty($_GET['mod'])) {	
	if ($_SESSION['panier']['cDe'][$i]==$_GET['mod'])
	{
	supprimerArticle($_SESSION['panier']['idsessProduit'][$i]);
	}
}

$sql = "SELECT *  FROM $table_produit where id_pro='".$idprod."'";
$sql = mysql_db_query($base,$sql);
$site=mysql_fetch_array($sql);

if (empty($site['im_prod'])) { $img="/img/no.gif"; }
else { $img="/photos/$site[im_prod]"; }

if (!empty($_SESSION['panier']['libelleProduit'][$i])) {

/// TABLEAU D'aFFICHAGE DE MES PRODUITS

$bg++;   }
}



les variable sont passée en $_POST en prevance de la page detail.php avec le formulaire suivant :
<form action="<?Php echo $urlsite; ?>/panier.php?action=ajout" method="post" name="checknum" onSubmit="return checkban()">
<select name="pnum" id="pnum" class="form">
<?Php for($z=1; $z<=10; $z++)
{
   echo "<option value='".$z."'>".$z."</option>\r\n";
}
?></select> </td>
    <td width="30" align="center" valign="middle"><input name="envoyer" type="image" src="/img/ico_pan.png" align="top" title="AJOUTER AU PANIER" alt="AJOUTER AU PANIER" /></td>
  </tr>
  <?Php if (!empty($taillearticle)) {?>
<input name="taillepost" type="hidden" value="<?Php echo $taillearticle; ?>" />
<?Php } ?>
<input name="idpro" type="hidden" value="<?Php echo $idarticle; ?>" />
<input name="px" type="hidden" value="<?Php echo $pxttcfinal; ?>" />
<input name="cde" type="hidden" value="" /> <!-- variable normalement vide, je m'en sers ailleurs en la remplissant, le bug ne vient pas de la ;) -->
</form>


voilà ! si vous pouviez m'aider a trouver une coquille, ou je sais pas ce qui pourrait causer ca, ca fait 3 jours que je suis sur le probleme, et j'ai beau le tourner dans tous les sens, je vois pas ! je suis peut-etre trop dedans !

merci d'avance,
A voir également:

1 réponse

diice Messages postés 131 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 25 février 2017 1
4 juil. 2009 à 19:49
une petite réponse ??? allerrrrr ;);)

merci !!!
0