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

Signaler
Messages postés
3
Date d'inscription
lundi 15 janvier 2018
Statut
Membre
Dernière intervention
19 janvier 2018
-
Messages postés
32420
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
-
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

3 réponses

Messages postés
32420
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
347
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 !

Messages postés
3
Date d'inscription
lundi 15 janvier 2018
Statut
Membre
Dernière intervention
19 janvier 2018

Hello,

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

Cdt
Messages postés
3
Date d'inscription
lundi 15 janvier 2018
Statut
Membre
Dernière intervention
19 janvier 2018

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>
Messages postés
32420
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
347
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