Bonjour,
J'ai un petit problème dans la conception de mon panier ... Je dois gérer une billetterie.
Je ne comprends pas ce qui ne va pas, par exemple pour supprimer un billet je récupère l'ID du billet et le transmet à une fonction qui se charge de supprimer le billet du panier.
En mettant cette fonction :
ça marche sauf dans l'affichage de l'ID.
En fait je ne comprends pas comment ça peut marcher parce que ça ne récupère pas l'ID dans le reste du code.
Lorsque je clique sur supprimer la ligne va être supprimer mais aucun ID ne sera transmis ...
c'est assez étrange !
voici le code du panier :
Le code des fonctions qui sont appelées :
Pourriez-vous m'aider à résoudre ces problèmes ?
Modifié par Petit Rasta (20 Mar 2010 - 16:17)
J'ai un petit problème dans la conception de mon panier ... Je dois gérer une billetterie.
Je ne comprends pas ce qui ne va pas, par exemple pour supprimer un billet je récupère l'ID du billet et le transmet à une fonction qui se charge de supprimer le billet du panier.
En mettant cette fonction :
//Suppression des espaces verticaux
$id = preg_replace('#\v#', '',$é);
ça marche sauf dans l'affichage de l'ID.
En fait je ne comprends pas comment ça peut marcher parce que ça ne récupère pas l'ID dans le reste du code.
Lorsque je clique sur supprimer la ligne va être supprimer mais aucun ID ne sera transmis ...
c'est assez étrange !
voici le code du panier :
<?php
/* Début du script du Panier */
include_once("fonctions-panier.php");
require 'Pages/inc/params.php';
$erreur = false;
$action = (isset($_POST['action'])? $_POST['action']: (isset($_GET['action'])? $_GET['action']:null )) ;
if($action !== null)
{
if(!in_array($action,array('ajout', 'suppression', 'refresh')))
$erreur=true;
//récuperation des variables en POST(lors de la modification) ou GET(lors du clic sur la page bonbon)
$type_billet = (isset($_POST['type_billet'])? $_POST['type_billet']: (isset($_GET['type_billet'])? $_GET['type_billet']:null )) ;
$type_match = (isset($_POST['type_match'])? $_POST['type_match']: (isset($_GET['type_match'])? $_GET['type_match']:null )) ;
mysql_connect($host,$user,$password) or die('Erreur de connexion au SGBD.');
mysql_select_db($base) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());
$query="SELECT Prix FROM Billets where Nom = '$type_billet' ";
$r=mysql_query($query);
if (mysql_num_rows($r) > 0)
{
$p=mysql_result($r,0);
}
mysql_close(); /* On ferme la connexion */
mysql_connect($host,$user,$password) or die('Erreur de connexion au SGBD.');
mysql_select_db($base) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());
$query="SELECT ID FROM Billets where Nom = '$type_billet' ";
$r=mysql_query($query);
if (mysql_num_rows($r) > 0)
{
$id=mysql_result($r,0);
}
mysql_close(); /* On ferme la connexion */
$q = (isset($_POST['choix'])? $_POST['choix']: (isset($_GET['q'])? $_GET['q']:null )) ;
//Suppression des espaces verticaux
$id = preg_replace('#\v#', '',$é);
//On verifie que $p soit un float
$p = floatval($p);
//On traite $q qui peut etre un entier simple ou un tableau d'entier
if (is_array($q)){
$QteArticle = array();
$i=0;
foreach ($q as $contenu){
$QteArticle[$i++] = intval($contenu);
}
}
else
$q = intval($q);
}
if (!$erreur){
switch($action){
Case "ajout":
ajouterArticle($id,$q,$p,$type_billet);
break;
Case "suppression":
supprimerArticle($id);
break;
Case "refresh" :
for ($i = 0 ; $i < count($QteArticle) ; $i++)
{
modifierQTeArticle($_SESSION['panier']['IdBonbons'][$i],round($QteArticle[$i]));
}
break;
Default:
break;
}
}
?>
<form name="form" method="post" action="index.php?page=panier" onsubmit="envoyer(this.form);" />
<table summary="Votre Panier">
<caption style="text-decoration:underline; font-size:medium;">Votre panier</caption>
<tr>
<th>Identifiant</th>
<th>Nom Billet</th>
<th>Quantité</th>
<th>Prix Unitaire</th>
<th>Action</th>
</tr>
<?php
/* Suite du Script */
if (creationPanier())
{
$nbArticles=count($_SESSION['panier']['IdBonbons']);
if ($nbArticles <= 0)
echo "<tr><td colspan='4'>Votre panier est vide </td></tr>";
else
{
for ($i=0 ;$i < $nbArticles ; $i++)
{
echo "<tr>";
echo "<td>".htmlspecialchars($_SESSION['panier']['IdBonbons'][$i])."</td>";
echo "<td>".htmlspecialchars($_SESSION['panier']['type_billet'][$i])."</td>";
echo "<td><input type=\"text\" size=\"4\" name=\"choix[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteBonbons'][$i])."\"/></td>";
echo "<td>".htmlspecialchars($_SESSION['panier']['prixBonbons'][$i])."</td>";
echo "<td><a href=\"".htmlspecialchars("index.php?page=panier&action=suppression&id=".rawurlencode($_SESSION['panier']['IdBonbons'][$i]))."\">Supprimer</a></td>";
echo "</tr>";
}
echo "<tr><td colspan=\"2\"> </td>";
echo "<td colspan=\"2\">";
echo "Total de vos achats : ".MontantGlobal()." €";
echo "</td></tr>";
$total_achat = MontantGlobal(); //On récupère le prix total
echo "<tr><td colspan=\"4\">";
echo "<input type=\"submit\" value=\"Rafraichir\"/>";
echo "<input type=\"submit\" value=\"Commander\" onclick=\"document.form.action='index.php?page=commande&nbArticles=$nbArticles&total_achat=$total_achat'\" />";
echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";
echo "</td></tr>";
}
}
?>
</table>
Le code des fonctions qui sont appelées :
<?php
/**
* Verifie si le panier existe, le créé sinon
* @return booleen
*/
function creationPanier(){
if (!isset($_SESSION['panier'])){
$_SESSION['panier']=array();
$_SESSION['panier']['IdBonbons'] = array();
$_SESSION['panier']['qteBonbons'] = array();
$_SESSION['panier']['type_billet'] = array();
$_SESSION['panier']['prixBonbons'] = array();
$_SESSION['panier']['verrou'] = false;
}
return true;
}
/**
* Ajoute un article dans le panier
* @param string $IdBonbons
* @param int $qteBonbons
* @param float $prixBonbons
* @return void
*/
function ajouterArticle($IdBonbons,$qteBonbons,$prixBonbons, $billet){
//Si le panier existe
if (creationPanier() && !isVerrouille())
{
//Si le produit existe déjà on ajoute seulement la quantité
$positionProduit = array_search($IdBonbons, $_SESSION['panier']['IdBonbons']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qteBonbons'][$positionProduit] += $qteBonbons ;
}
else
{
//Sinon on ajoute le produit
array_push( $_SESSION['panier']['IdBonbons'],$IdBonbons);
array_push( $_SESSION['panier']['type_billet'],$type_billet);
array_push( $_SESSION['panier']['qteBonbons'],$qteBonbons);
array_push( $_SESSION['panier']['prixBonbons'],$prixBonbons);
}
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Modifie la quantité d'un article
* @param $IdBonbons
* @param $qteBonbons
* @return void
*/
function modifierQTeArticle($IdBonbons,$qteBonbons){
//Si le panier éxiste
if (creationPanier() && !isVerrouille())
{
//Si la quantité est positive on modifie sinon on supprime l'article
if ($qteBonbons > 0)
{
//Recherche du produit dans le panier
$positionProduit = array_search($IdBonbons, $_SESSION['panier']['IdBonbons']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qteBonbons'][$positionProduit] = $qteBonbons ;
}
}
else
supprimerArticle($IdBonbons);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Supprime un article du panier
* @param $IdBonbons
* @return unknown_type
*/
function supprimerArticle($IdBonbons){
//Si le panier existe
if (creationPanier() && !isVerrouille())
{
//Nous allons passer par un panier temporaire
$tmp=array();
$tmp['IdBonbons'] = array();
$tmp['qteBonbons'] = array();
$tmp['type_billet'] = array();
$tmp['prixBonbons'] = array();
$tmp['verrou'] = $_SESSION['panier']['verrou'];
for($i = 0; $i < count($_SESSION['panier']['IdBonbons']); $i++)
{
if ($_SESSION['panier']['IdBonbons'][$i] !== $IdBonbons)
{
array_push( $tmp['IdBonbons'],$_SESSION['panier']['IdBonbons'][$i]);
array_push( $tmp['type_billet'],$_SESSION['panier']['type_billet'][$i]);
array_push( $tmp['qteBonbons'],$_SESSION['panier']['qteBonbons'][$i]);
array_push( $tmp['prixBonbons'],$_SESSION['panier']['prixBonbons'][$i]);
}
}
//On remplace le panier en session par notre panier temporaire à jour
$_SESSION['panier'] = $tmp;
//On efface notre panier temporaire
unset($tmp);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Montant total du panier
* @return int
*/
function MontantGlobal(){
$total=0;
for($i = 0; $i < count($_SESSION['panier']['IdBonbons']); $i++)
{
$total += $_SESSION['panier']['qteBonbons'][$i] * $_SESSION['panier']['prixBonbons'][$i];
}
return $total;
}
/**
* Fonction de suppression du panier
* @return void
*/
function supprimePanier(){
unset($_SESSION['panier']);
}
/**
* Permet de savoir si le panier est verrouillé
* @return booleen
*/
function isVerrouille(){
if (isset($_SESSION['panier']) && $_SESSION['panier']['verrou'])
return true;
else
return false;
}
/**
* Compte le nombre d'articles différents dans le panier
* @return int
*/
function compterArticles()
{
if (isset($_SESSION['panier']))
return count($_SESSION['panier']['IdBonbons']);
else
return 0;
}
?>
Pourriez-vous m'aider à résoudre ces problèmes ?
Modifié par Petit Rasta (20 Mar 2010 - 16:17)