Page 1 sur 1

suppression d'article dans un caddie

Posté : 16 mai 2005, 23:47
par oceane751
bonjour,

je suis en train de creer un caddie virtuel et j'ai un petit probleme au niveau de la suppression d'article dans ce caddie

voici le code qui devrait supprimer l'article choisi :

<?
// caddie_del.php... ...sert à supprimer un élément du caddie...
session_start();

if(isset($_GET['article']))
{
// si un produit ets spécifié.;;
$quantite = count($panier);
for($i=0;$i<$quantite;$i++)
{
// on fait une boucle qui parcours le panier...
if($panier)[$i]['article'] == $_GET['article'])
{
// une fois arrivé au produit voulu, on le supprime...
array_splice($panier),$i,1);
}
}

et voici le code où il y a les fonctions du panier :

<?php //sert pour le panier
//contient des fonctions utiles
if (!session_id())
session_start();

function aff_panier()
{
for ($i = 1; $i <= 23 ; $i++)
{
}


if(!($base=mysql_connect("localhost","root","")))
{
echo "<br><B>probleme lors de la connexion à MySql</B><br>";
exit();
}
else
{
mysql_select_db(BASE, $base);
for ($i = 1; $i <= 23 ; $i++)
{
if (($tab_com = mysql_query("SELECT ref_produit, designation_produit , prix_produit
FROM produit
WHERE ref_produit = '".$_SESSION['panier']['ref_produit'][$i]."'
AND '".$_SESSION['panier']['quantite'][$i]."' > 0", $base)))

$res_com = mysql_fetch_array($tab_com); //tableau contenant les valeurs de la requete (resultat_commande)
//print_r ($res_com);

$quantite = $_SESSION['panier']['quantite'][$i];
$prix = $res_com[2]*$quantite;

if ($quantite > 0)
{
echo " <tr align=\"center\">
<td><b>".$res_com[1]."</b></td>
<td><b>".$res_com[2]."</b></td>
<td><b>".$quantite."</b></td>
<td><b>".$prix." €</b></td>


<td><b><form><input type=\"submit\" value=\"cliquez ici\"> <a href = http://YYYYYYYYYYYY/XXXXXXXX/supprime.php></a></form>




</tr>";
}
}
}


}
?>

mon code marche tres bien sauf pour la suppression d'article

merci pour votre aide

Posté : 17 mai 2005, 00:14
par Cyrano
Salut,
d'abord, sois assez aimable d'utiliser les boutons [ PHP ] quand tu envoies du code, on aura une coloration syntaxique et l'indentation sera conservée, ce sera plus facile à lire, et n'oublie pas d'activer les bbCode si ce n,est pas déjà fait.

Pour ton code, tu as une erreur reproduite deux fois au début : Tu as écrit:
 array_splice($panier),$i,1);
Tu as fermé deux fois une parenthèse, ce devrait être :
 array_splice($panier,$i,1);
Pour le reste, on verra si ça ne fonctionne toujours pas mieux ;)

suppression d'article dans un caddie

Posté : 18 mai 2005, 00:23
par oceane751
huumm cela ne fonctionne pas plus

mais je t'explique un peu le cheminement, se sera peut être plus facile pour m'aider... ;)
le futur client se loggue, puis ajoute 1 ou plusieurs articles dans son panier
je te donne le code du panier : "comandeinfo.php"

<?

include ("definitioninfo.php");
include ("aff_panier.inc.php");

if (!session_id())
session_start();


if (!isset($_SESSION['panier'])) //$panier pas defini //sert pour la gestion du panier
{ //ne pas tenir compte pr le moment
$panier = array (
"ref_produit" => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23),
"quantite" => array (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
);
$_SESSION['panier'] = $panier;
$_SESSION['total'] = 0;
}

session_register('article');
session_register('prix');
session_register('quantite');
session_register('ref_produit');

for ($i = 0; $i < 23; $i++) //pr le panier
{
//echo("article : ".$_SESSION['panier']['ref_produit'][$i]);
//echo(" quantite : ".$_SESSION['panier']['quantite'][$i]."<br>");
}


$quantite = $_POST['quantite']; ==> LIGNE 32
$article = $_POST['article']; ==> LIGNE 33
///echo "quantite post = ".$quantite;


if(!($base=mysql_connect("localhost","root","")))
{
echo "<br><B>probleme lors de la connexion à MySql</B><br>";
exit();
}
else
{
mysql_select_db(BASE, $base);
if (($tab_com = mysql_query("SELECT ref_produit, designation_produit , prix_produit
FROM produit
WHERE designation_produit = '".$article."'", $base)))
$res_com = mysql_fetch_array($tab_com); //tableau contenant les valeurs de la requete (resultat_commande)
}
$_SESSION['article'] = $res_com[1];
$_SESSION['prix'] = $res_com[2];
$_SESSION['quantite'] = $quantite;
$_SESSION['ref_produit']= $res_com[0];
//$_SESSION['panier']['quantite'][$_SESSION['ref_produit']]++; //pr le panier
$_SESSION['panier']['quantite'][$_SESSION['ref_produit']] = $_SESSION['panier']['quantite'][$_SESSION['ref_produit']]+$quantite;

$_SESSION['total'] = $_SESSION['total']+($res_com[2]*$quantite);
//$_SESSION['TTC'] = $_SESSION['total']+ $_SESSION['total']*(19.6/100); // à aligner a droite

echo "<html>
<head>
<title>Bienvenue sur materiel-informatique.fr</title></head>
<body bgcolor=#99ff99 align=right>
<h1 align=\"center\"><font size=+6><font color=\"#000000\"><u>Votre Panier de Commande :</u></font></font></h1>
<br>
<p><form method = \"POST\" action=\"<table border=\"1\">
<align=\"center\">

<tr>

<td><b><center>Article</b></td><br>
<td><b><center>Prix Unitaire</b></td>
<td><b><center>Quantité</b></td>
<td><b><center>Montant</b></td>
<td><b><center><img src ='http://127.0.0.1/oceanecoin/SITE%20INFO ... .gif'></td>


</tr>";
//<a href='supprime.php'=$_SESSION['panier']['ref_produit'][$i]>'supprimer'</a>

aff_panier(); //fonction de gestion du panier
/*echo " <tr align=\"center\">
<td><b>".$res_com[1]."</b></td>
<td><b>".$res_com[2]."</b></td>
<td><b>".$quantite."</b></td>
<td><b>".$res_com[2]*$quantite." €</b></td>
</tr>";*/

echo "<tr><td></td><td></td><td><b><center>Total : </b></td><td align = \"center\"><b>".$_SESSION['total']."€</b></td></tr>";
//echo "<tr><td></td><td></td><td><b><center>TVA : </b></td><td align = \"right\"><b>".$_SESSION['total']*(19.6/100)."€</b></td></tr>";
//echo "<tr><td></td><td></td><td><b><h3><center>TOTAL TTC : </b></td><td align = \"right\"><h3><u><b>".$_SESSION['TTC']."€</b></td></tr>"; //sert pour le panier
//echo "<tr><td></td><td></td><td><b><u>TOTAL :</u></b></td><td align = \"right\"><b>".$res_com[2]*$quantite." €</b></td></tr>
echo "<tr><td></td><td></td><td></td><td colspan='1'><form method = \"POST\" action=\"</table>
</form>
</body>
</html>";
?>

puis la personne peut donc supprimer l'article en cliquant sur "cliquez ici" (bouton dans le code "aff_panier.inc.php")

erreur lorsque le client supprime :

Notice: Undefined index: quantite in c:\program files\easyphp1-7\www\XXXXXXXXX\boutiqueinfo\commandeinfo.php on line 32

Notice: Undefined index: article in c:\program files\easyphp1-7\www\XXXXXXX\boutiqueinfo\commandeinfo.php on line 33


mais comment faire pour que le client arrive sur la même page de son panier mais sans l'article qui a donc été supprimé?

merci !!

Posté : 18 mai 2005, 00:54
par Cyrano
...d'abord, sois assez aimable d'utiliser les boutons [ PHP ] quand tu envoies du code, on aura une coloration syntaxique et l'indentation sera conservée, ce sera plus facile à lire, et n'oublie pas d'activer les bbCode si ce n,est pas déjà fait.
Visiblement, tu n'as pas tout lu. trouves-tu ton code agréable à lire ??

Ill y a une chose que tu vas essayer: quand tu as ton panier affiché, fais donc afficher le code source de la page, le code html que tu as obtenu et regarde bien si ton code a des chances d'envoyer les valeurs voulues à l'endroit voulu. Je vois quand même des trucs dans ce code pas normaux, ça par exemple:

Code : Tout sélectionner

<form method = "POST" action="</table> </form>
ça, c'est tout ce que tu veux, mais pas du html normal.

Générer du html avec PHP, ça ne se fait pas au petit bonheur, il faut de la rigueur là aussi. Et puis ça ralentit l'application de faire interpréter du html inutilement par php. Au lieu de :
if(!($base=mysql_connect("localhost","root","")))
{
echo "<br><B>probleme lors de la connexion à MySql</B><br>";
exit();
} 
Il vaut mieux faire:
if(!($base=mysql_connect("localhost","root","")))
{
?>
<br><B>probleme lors de la connexion à MySql</B><br>
<?php
    exit();
}