IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Impossible d'afficher le contenu de mon panier et supprimer des éléme


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Par défaut Impossible d'afficher le contenu de mon panier et supprimer des éléme
    Bonjour,

    je commence le "panier" via les SESSIONS.

    J'ai fais pour commencer un exemple assez simple. J'arrive à ajouter des éléments, à vider l'entièreté de mon panier. Par contre j'ai un problème pour afficher le contenu. Il m'affiche "Array" au lieu de l'intitulé de chaque produits. J'ai également un problème qui est sans doute lié à cela c'est que je n'arrive pas à supprimer un élément.

    Voici mon code, si quelqu'un à une idée.

    D'avance merci

    Mes fonctions

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <?php
    /* ------------------------ */
    /* Déclaration de Fonctions */
    /* 		  Pour panier		*/
    /* ------------------------ */
     
    /* => Fonction ajout d'un produit <= */
    function ajout($produit)
    	{
    	$new_prod['produit']=$_GET['pro_nom'];
    		$new_prix['prix']=$_GET['prix'];
    		echo '<p>Produit <u>'.$new_prod['produit'].'</u> a été ajouté</p>';
    		array_push($_SESSION['panier']['produit'],$new_prod);
    		array_push($_SESSION['panier']['prix'],$new_prix);
    	}
     
    /* => Vider le panier <= */
    function vider()
    	{
    	echo '<p>Le panier est vidé</p>';
    		unset($_SESSION['panier']);
    	}
     
     
    /* => Calcul contenu du panier <= */
    function total_panier()
    	{
    	 if(!empty($_SESSION['panier']['produit']))
    	 {
    		$panier=count($_SESSION['panier']['produit']);
    		return $panier;
    	 }
    	 else
    	 {
    	 $panier=0;
    	 return $panier;
    	 }
    	}
     
     
    /* => Affichage du panier <= */
    function affiche_panier()
    	{
    	echo '<table id="tableau" border="1" width="500px" height="300px">';
            echo '<thead>';
               echo '<tr>';
                   echo '<th scope="col" id="">Produits</th>';
                   echo '<th scope="col" id="">Prix</th>';
                   echo '<th scope="col" id="">Choix</th>';
                echo '</tr>';
           echo '</thead>';
            echo '<tbody>';
    $panier=count($_SESSION['panier']['produit']);
    for ($i=0; $i<$panier; $i++)
    	{
     	 		echo '<tr>';
     
                    echo '<td>'.$_SESSION['panier']['produit'][$i].'</td>';
                    echo '<td>'.$_SESSION['panier']['prix'][$i].'</td>';
                    echo '<td><a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;produit='.$_SESSION['panier']['produit'][$i].'">Supprimer cet article</a></td>';
                echo '</tr>';
    	}
            echo '</tbody>';
      echo '</table>';	
     
    	}	
    ?>

    Ma page ou je vois mes produits et ou je peux en ajouter ou vider mon panier.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    <?php
     
    session_start(); 
     
    /*On vérifie si le panier existe*/
    if(!isset($_SESSION['panier']))
    	{
    	/* Initialisation du panier */ 
    	$_SESSION['panier'] 			= array();
     
    	/*Subdivision du panier*/
    	$_SESSION['panier']['produit']	= array();
    	$_SESSION['panier']['prix']		= array();
    	}
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
        <title>Document sans nom</title>
    </head>
     
    <body>
        <p>Liste de nos produits</p>
    <?php
     
    include('connex.inc.php');
            $idcom=connex('panierdim', 'myparam');
            mysql_query("SET NAMES utf8"); /*TRES IMPORTANT -> permet d'éviter les problèmes d'affichage d'accents*/
    include('function.inc.php');
    ?>
     
    <?php
    /* En Cas d'ajout d'article */
    /* ------------------------ */
     
    	if (isset($_GET['pro_nom']))
    		{
    		$produit=$_GET['pro_nom'];
    		ajout($produit);
    		}
     
    /*     Vider le panier      */
    /* ------------------------ */
     
    	if (isset($_GET['choix'])=="vider")
    		{
    		vider();
    		}		
    ?>
    <?php
    echo '<p>Votre panier contient actuellement '.total_panier().' articles</p>';
    $panier=total_panier();
    /* Requete à la base */
    $request_products=mysql_query("SELECT pro.pro_id, pro.pro_nom, pro.prix
    							   FROM t_produits_pro pro ORDER BY pro.pro_nom ASC") or die ("Sélection de la base impossible");
     
    /* Tableau de produits + prix */							   
       echo '<table id="tableau" border="1" width="500px" height="300px">';
            echo '<thead>';
               echo '<tr>';
                   echo '<th scope="col" id="">Produits</th>';
                   echo '<th scope="col" id="">Prix</th>';
                   echo '<th scope="col" id="">Choix</th>';
                echo '</tr>';
           echo '</thead>';
            echo '<tbody>';
    	while ($donnees_products=mysql_fetch_array($request_products))
    		{
    	 		echo '<tr>';
                    echo '<td>'.$donnees_products['pro_nom'].'</td>';
                    echo '<td>'.$donnees_products['prix'].'</td>';
                    echo '<td><a href="'.$_SERVER['PHP_SELF'].'?pro_nom='.$donnees_products['pro_nom'].'&amp;prix='.$donnees_products['prix'].'" id="ajout" ">Ajouter au panier</a></td>';
                echo '</tr>';
    		}
    ?>
                  </tbody>
        	</table>
    <!--FIN DE TABLEAU-->
    <p><a href="<?php echo $_SERVER['PHP_SELF']; ?>?choix=vider">Vider mon panier</a></p>
    <!--  <p><a href="index.php?choix=vider">Vider mon panier</a></p>    -->
     
     <p><a href="panier.php">Terminer mes achats et consulter mon panier</a></p>   
    <?php
    if(!empty($_SESSION['panier']) AND $panier!=0)
    	{echo '<pre>'; var_dump($_SESSION['panier']); echo '</pre>';
    	echo '<br/>';
    	print_r($_SESSION['panier']);
    	}
    ?>
     
    </body>
    </html>

    Et enfin ma page panier qui devrait afficher l'intitulé de chacun des produits mis dans le panier. Le nombre d'éléments est lui bon.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     
    <?php
    session_start(); 
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Document sans nom</title>
    </head>
     
    <body>
     
    <?php
    include('function.inc.php');
     
    if(!empty($_SESSION['panier']['produit']))
    	{
    	$panier=count($_SESSION['panier']['produit']);
    	var_dump($_SESSION['panier']['produit']);
    	}
    	else
    	{
    	$panier='0';
    	}
    echo '<p>Contenu de votre commande : ' .$panier.' articles </p>';
    /* affiche_panier(); */
    echo '<table id="tableau" border="1" width="500px" height="300px">';
            echo '<thead>';
               echo '<tr>';
                   echo '<th scope="col" id="">Produits</th>';
                   echo '<th scope="col" id="">Prix</th>';
                   echo '<th scope="col" id="">Choix</th>';
     
                echo '</tr>';
           echo '</thead>';
            echo '<tbody>';
     
    for ($i=0; $i<$panier; $i++)
    	{
     	 		echo '<tr>';
     	 			$produit=$_SESSION['panier']['produit'][$i];
     	 			$prix=$_SESSION['panier']['prix'][$i];
                    echo '<td>'.$_SESSION['panier']['produit'][$i].'</td>';
                    echo '<td>'.$_SESSION['panier']['prix'][$i].'</td>';
                    echo '<td><a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;produit='.$_SESSION['panier']['produit'].'">Supprimer cet article</a></td>';
                echo '</tr>';
    	}
            echo '</tbody>';
      echo '</table>';	
     
    /* ------------------------------- */	
    /* En Cas de suppression d'article */
    /* ------------------------------- */	
    if (isset($_GET['choix'])=="supprimer")
    	{
    	$suppression=false;
    	$suppr_produit=$_GET['produit'];
    	echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>';
     
    	/* Stock contenu du panier sans celui à supprimer */
    	$panier_tmp=array("produit"=>array(), "prix"=>array());
     
    	/* Comptage des articles du panier */
    	$nb_produits=count($_SESSION['panier']['produit']);
    	for($i=0; $i<$nb_produits; $i++)
    		{
    		if($_SESSION['panier']['produit'][$i]!=$suppr_produit)
    			{
    			array_push( $panier_tmp['produit'], $_SESSION['panier']['produit'][$i]);
    			array_push( $panier_tmp['prix'], $_SESSION['panier']['prix'][$i]);
    			}
    		}
    	/* Le transfert est terminé on réinitialise le panier */
    	$_SESSION['panier']=$panier_tmp;
    	/* Suppression du panier temporaire */
    	unset($panier_tmp);
    	$suppression=true;
    	return $suppression;
    	echo '<p><a href="index.php">Continuer mes achats</a></p>';
    	}	
    echo '<p><a href="index.php">Continuer mes achats</a></p>';
    ?>
     
    </body>
    </html>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut
    pour moi ton problème vient de la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function ajout($produit)
    {
            $new_prod['produit']=$_GET['pro_nom'];
    	$new_prix['prix']=$_GET['prix'];
    	echo '<p>Produit <u>'.$new_prod['produit'].'</u> a été ajouté</p>';
    	array_push($_SESSION['panier']['produit'],$new_prod);
    	array_push($_SESSION['panier']['prix'],$new_prix);
    }
    deja tu passe $produit en paramètre et tu ne t'en sers pas ... et ensuite tu ajoute dans ta session $new_prod[] qui est un tableau ( d'ou ton souci ).

    essaye déjà de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function ajout($nom_produit,$prix)
    {
            $new_prod = $nom_produit;
    	$new_prix = $prix;
    	echo '<p>Produit <u>'.$new_prod.'</u> a été ajouté</p>';
    	array_push($_SESSION['panier']['produit'],$new_prod);
    	array_push($_SESSION['panier']['prix'],$new_prix);
    }
    après peut être que le array_push() pose également un problème mais essaye déjà et redit moi.

  3. #3
    Membre éclairé
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Par défaut
    Hello proxichou,

    merci pour ta réponse. Oui effectivement c'était cela mon erreur.

    L'affichage est à présent correcte.

    Par contre la suppression ne se fait toujours pas. Serait-ce le même problème?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td><a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;produit='.$_SESSION['panier']['produit'].'">Supprimer cet article</a></td>';
    tu ne passes pas le bon produit dans ta variable 'produit' dans l'url :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td><a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;produit='.$produit.'">Supprimer cet article</a></td>';
    dis moi si c'est bon.

  5. #5
    Membre éclairé
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Par défaut
    Cela fonctionne effectivement, mais sur me page panier, j'affiche le contenu de mon panier et lorsque je supprime un élément le tableau ne se met pas directement à jour alors que la page est sensée se rafraîchir?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut
    comme tu l'as fais, il n'y a pas de rafraichissement ... ou du moins je ne le vois pas.

    a quoi te sert ton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $suppression = false;
    $suppression = true;
    return $suppression;
    ?

    je ne comprend pas ce que tu veux faire avec cela, tu n'es pas dans une fonction donc le 'return' me semble bizarre.

Discussions similaires

  1. Afficher le contenu de mon répertoire
    Par ledid33 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/01/2012, 23h23
  2. impossible d'afficher mes ImageIcons dans mon .jar
    Par yoann34 dans le forum Composants
    Réponses: 3
    Dernier message: 30/07/2009, 09h09
  3. Réponses: 9
    Dernier message: 20/01/2008, 16h16
  4. Réponses: 2
    Dernier message: 03/02/2007, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo