Gros problème suppression 1 seul article [Résolu]

gpmx 3 Messages postés lundi 15 janvier 2018Date d'inscription 19 janvier 2018 Dernière intervention - 15 janv. 2018 à 15:35 - Dernière réponse : jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention
- 19 janv. 2018 à 12:39
Bonjour à tous,

Voici plusieurs jours que je navigue entre tests de variables et différents codes pour trouver ma solution.
Mais pas moyen !
Je souhaite dans mon caddie dynamique, avec un bouton Supprimer pour chaque article retirer cet article, le souci c'est que malgré tous mes efforts il me supprimer toujours tous le caddie .

Un peu d'aide serait la bienvenue !

Page Caddie_del.php:


<?php session_start();
if(isset($_POST))
{
//var_dump($_SESSION['caddy']);
//var_dump($_POST['id']);
for($i=0;$i<count($_SESSION['caddy']);$i++)
{
for($j=0;$j<count($_POST['id']);$j++)
{
if($_POST['id'][$j] == $_SESSION['caddy'][$i]['prod'])
{
$panier=$_SESSION['caddy'][$i];
array_splice($_SESSION['caddy'],$i,1);
if($_SESSION['caddy'][$i] == 0)
{
session_destroy();
}
else
{
$_SESSION['caddy'][$i]=$panier;
}
}
}
}
header("Location:caddie.php");
}
else
{
echo "Erreur ! Recommencer ! ...";
}
?>


Page caddie.php :

<?php
if(isset($_SESSION['caddy']))
{
$prix_tot_ht=0;
for($i=0;$i<count($_SESSION['caddy']);$i++)//Pour chaque articles du panier
{
$sql='Select id,cat,nom,prix FROM produits WHERE id="'.$_SESSION['caddy'][$i]['prod'].'"';
$res=mysqli_query($link,$sql) or die ('Erreur SQL!'.$sql.mysqli_error($link));
while($val=mysqli_fetch_array($res))
{
$id=$val['id'];
$cat=$val['cat'];
$tva=19.6;
$prix_ligne=$val['prix']*$_SESSION['caddy'][$i]['qte'];
$prix_tot_ht+=$prix_ligne;
$prix_temp=($prix_tot_ht*$tva)/100;
$prix_tot_ttc=$prix_tot_ht+$prix_temp;
echo "<tr>";
?>
<td width="96" height="30"><?php echo $val['nom']; ?></td>
<td width="96" height="30"><?php echo $val['prix']; ?> €</td>
<td width="96" height="30">
<?php
if($cat=="objet")
{
?>
<select name="qte[]" class="text" OnChange="return Recharge();">
<?php
$recup="SELECT * FROM quantite ORDER BY id";
$query = mysqli_query($link,$recup)or die('Erreur SQL!'.$recup.mysqli_error($link));
while ($data = mysqli_fetch_array($query))
{
if($data['qte'] == $_SESSION['caddy'][$i]['qte'])
{
?>
<option value="<?php echo $data['qte'];?>" selected><?php echo $data['qte']; ?></option>
<?php
}
else
{
?>
<option value="<?php echo $data['qte'];?>"><?php echo $data['qte']; ?></option>
<?php
}
}
?>
</select>
<input type="hidden" name="id[]" value="<?php echo $id; ?>">
<?php
}
else
{
echo $_SESSION['caddy'][$i]['qte'];
?>
<input name="qte" type="hidden" class="text" value="<?php echo $_SESSION['caddy'][$i]['qte']; ?>" size="4">
<input type="hidden" name="id" value="<?php echo $_SESSION['caddy'][$i]['prod']; ?>">
<?php
}
?>
</td>
<td width="96" height="30"><?php echo number_format($prix_ligne,2,'.','');?> € </td>
<td width="96">
<input name="Submit" type="submit" class="text" value="Retirer" OnClick="return Supp();">
</td>
<?php
}
}
}
else
{
echo "<br>        <span class=textOrange>Votre caddie est vide ! ...</span><br><br><br>";
}
echo "</tr>"
?>


Après ce test (qui n'a pas été le seul) :

if($_POST['id'][$j] == $_SESSION['caddy'][$i]['prod'])
{
echo $_POST['id'][$j];
echo"==";
echo $_SESSION['caddy'][$i]['prod'];
echo"<br>";

/*$panier=$_SESSION['caddy'][$i];
array_splice($_SESSION['caddy'],$i,1);
if($_SESSION['caddy'][$i] == 0)
{
session_destroy();
}
else
{
$_SESSION['caddy'][$i]=$panier;
}*/
}


Voilà le résultat: Je n'ai accès au produit à retirer , je n'arrive plus à cerner;


1==1
3==3
4==4
Afficher la suite 

Votre réponse

4 réponses

jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 15 janv. 2018 à 16:41
0
Merci
Bonjour,

Plutôt que du array_splice ... fais donc un http://php.net/manual/fr/function.unset.php

De plus.. ne bosses pas directement sur la variable SESSION (ni les POST) .. mais passe par des variables intermédiaire ...
$caddy= !empty($_SESSION['caddy']) ? $_SESSION['caddy'] : NULL;
$id = !empty($_POST['id']) ? $_POST['id'] : NULL;
 


NB: l'instruction session_destroy(); .. détruit TOUTES tes variables de session. Tout.. vraiment tout !

gpmx 3 Messages postés lundi 15 janvier 2018Date d'inscription 19 janvier 2018 Dernière intervention - 15 janv. 2018 à 22:07
Hello,

Ok merci pour tes conseils, je vais rééssayer Unset avec $ intermédiaire!
Je reviendrai si ca ne va pas !!! :)

Cdt
Commenter la réponse de jordane45
gpmx 3 Messages postés lundi 15 janvier 2018Date d'inscription 19 janvier 2018 Dernière intervention - 19 janv. 2018 à 11:44
0
Merci
Bonjour,

Pour ceux qui cherche une solution, la mienne est celle-ci:

Page Supprimer article:

<?php session_start();
if(isset($_GET['id']))
{
for($i=0;$i<count($_SESSION['caddy']);$i++)
{
if($_GET['id'] == $_SESSION['caddy'][$i]['prod'])
{
echo $_GET['id'] ."==". $_SESSION['caddy'][$i]['prod'];
unset($_SESSION['caddy'][$i]);
$_SESSION['caddy'][$i] = array("prod"=>$_SESSION['caddy'][$i]['prod'],"qte"=>$_SESSION['caddy'][$i]['qte']);
if($_SESSION['caddy'][$i] == array())
{
unset($_SESSION['caddy'][$i]);
}
}
}
header("Location:caddie.php");
}
else
{
echo "Erreur ! Recommencer ! ...";
}
?>


Page caddie:

<a href="caddie_del.php?id=<?php echo $id; ?>">Supprimer</a>
Commenter la réponse de gpmx
jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - Modifié par jordane45 le 22/01/2018 à 11:37
0
Merci
Si je ne fais pas erreur ... ton code se résume à
<?php 
session_start();

$caddy= !empty($_SESSION['caddy']) ? $_SESSION['caddy'] : NULL;
$id = !empty($_POST['id']) ? $_POST['id'] : NULL;

if($id && !empty($caddy[$id])){
 unset($caddy[$id]);
 header("Location:caddie.php");
 exit();
}

La boucle est totalement inutile.

Cordialement, 
Jordane                                                                 
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.