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

Messages postés
3
Date d'inscription
lundi 15 janvier 2018
Dernière intervention
19 janvier 2018
-
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

3 réponses

Messages postés
23618
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
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
Messages postés
3
Date d'inscription
lundi 15 janvier 2018
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
Commenter la réponse de jordane45
Messages postés
3
Date d'inscription
lundi 15 janvier 2018
Dernière intervention
19 janvier 2018
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
Messages postés
23618
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
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.