Problème de disparition des données Mysql de mon tableau PHP
Posté : 25 juil. 2012, 20:34
Bonsoir.
Voilà, j'ai créé une mini-boutique dont voici le fonctionnement :
1) Le client est sur la catalogue, il ajoute au panier un produit.
2) Le produit est envoyé à la page du panier sous la forme url/id=idproduit.
3) L'id produit est récupéré sur la page du panier et ses informations, dont le prix notamment, sont indiqués dans un tableau récapitulatif.
Mais voici mon problème : dès que je quitte la page ou que je la rafraîchis, la ligne disparaît du tableau pour une raison qui m'est inconnue !
Voici la page du panier, si vous avez besoin d'autre chose précisez-le moi ! D'avance merci pour toute aide qui me sera extrêmement précieuse...
Cordialement, maisonmeto
.
Code source du panier :
Voilà, j'ai créé une mini-boutique dont voici le fonctionnement :
1) Le client est sur la catalogue, il ajoute au panier un produit.
2) Le produit est envoyé à la page du panier sous la forme url/id=idproduit.
3) L'id produit est récupéré sur la page du panier et ses informations, dont le prix notamment, sont indiqués dans un tableau récapitulatif.
Mais voici mon problème : dès que je quitte la page ou que je la rafraîchis, la ligne disparaît du tableau pour une raison qui m'est inconnue !
Voici la page du panier, si vous avez besoin d'autre chose précisez-le moi ! D'avance merci pour toute aide qui me sera extrêmement précieuse...
Cordialement, maisonmeto
Code source du panier :
<form method="post" action="panier.php" align="center">
<?php
mysql_connect("$sql_host", "$sql_user", "$sql_password");
mysql_select_db("$sql_db");
?>
<table border="1" bgcolor="cccccc"><tr>
<th>Serveur</th>
<th>Disponibilité</th>
<th>Quantité de kamas</th>
<th>Prix unitaire</th>
<th>Quantité</th>
<th>Supprimer</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM produits WHERE id=' . $id . '') or die("");
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les données.
{
?>
<tr>
<td><?php echo stripslashes($donnees['nom']); ?></td>
<td>
<?php if ($donnees['Disponibilité'] == 1)
{
echo "<center><img src=\"style/logos/yes.png\"></center>";
}
else
{
echo "<center><img src=\"style/logos/no.jpg\"></center>";
}
?>
</td>
<td><?php echo stripslashes($donnees['Quantité']); ?>K</td>
<td><?php echo stripslashes($donnees['prix']); ?>€</td>
<td><input type="text" size="4" name="q[]" value="<?php echo $q ?>".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])./></td>
<td><center><a href="panier.php?action=suppression&id=<?php echo $id ?>"><img src="style/logos/delete.png"></a></center></td>
</tr>
<?php
} // Fin de la boucle
?>
</table>
<p align="Right" ><input type="submit" value="Recalculer"/>
<input type="hidden" name="action" value="refresh"/></p>
</form>
(sur la même page il y a aussi ceci <?php
session_start();
include_once("fonctions_paniers.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 ou GET
$q = (isset($_POST['q'])? $_POST['q']: (isset($_GET['q'])? $_GET['q']:null )) ;
$id = (isset($_POST['id'])? $_POST['id']: (isset($_GET['id'])? $_GET['id']:null )) ;
//Suppression des espaces verticaux
$l = preg_replace('#\v#', '',$l);
//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($q,$id);
break;
Case "suppression":
supprimerArticle($id);
break;
Case "refresh" :
for ($i = 0 ; $i < count($QteArticle) ; $i++)
{
modifierQTeArticle($_SESSION['panier']['id'][$i],round($QteArticle[$i]));
}
break;
Default:
break;
}
}
echo '<?xml version="1.0" encoding="utf-8"?>';?>
Et mes fonctions panier :
<?php
/**
* Verifie si le panier existe, le créé sinon
* @return booleen
*/
function creationPanier(){
if (!isset($_SESSION['panier'])){
$_SESSION['panier']=array();
$_SESSION['panier']['libelleProduit'] = array();
$_SESSION['panier']['qteProduit'] = array();
$_SESSION['panier']['prixProduit'] = array();
$_SESSION['panier']['verrou'] = false;
}
return true;
}
/**
* Ajoute un article dans le panier
* @param string $libelleProduit
* @param int $qteProduit
* @param float $prixProduit
* @return void
*/
function ajouterArticle($qteProduit,$id){
//Si le panier existe
if (creationPanier() && !isVerrouille())
{
//Si le produit existe déjà on ajoute seulement la quantité
$positionProduit = array_search($libelleProduit, $_SESSION['panier']['libelleProduit']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
}
else
{
//Sinon on ajoute le produit
array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
}
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Modifie la quantité d'un article
* @param $libelleProduit
* @param $qteProduit
* @return void
*/
function modifierQTeArticle($libelleProduit,$qteProduit){
//Si le panier éxiste
if (creationPanier() && !isVerrouille())
{
//Si la quantité est positive on modifie sinon on supprime l'article
if ($qteProduit > 0)
{
//Recharche du produit dans le panier
$positionProduit = array_search($libelleProduit, $_SESSION['panier']['libelleProduit']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qteProduit'][$positionProduit] = $qteProduit ;
}
}
else
supprimerArticle($libelleProduit);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
/**
* Supprime un article du panier
* @param $libelleProduit
* @return unknown_type
*/
function supprimerArticle($libelleProduit){
//Si le panier existe
if (creationPanier() && !isVerrouille())
{
//Nous allons passer par un panier temporaire
$tmp=array();
$tmp['libelleProduit'] = array();
$tmp['qteProduit'] = array();
$tmp['prixProduit'] = array();
$tmp['verrou'] = $_SESSION['panier']['verrou'];
for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
{
if ($_SESSION['panier']['libelleProduit'][$i] !== $libelleProduit)
{
array_push( $tmp['libelleProduit'],$_SESSION['panier']['libelleProduit'][$i]);
array_push( $tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);
array_push( $tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$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']['libelleProduit']); $i++)
{
$total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$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']['libelleProduit']);
else
return 0;
}
?>
Alors, où est le problème ??? Encore merci !