lien annulé pour panier boutique en sql - Programmation
Ceci répond-il à votre question ? Oui | Non
 

Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : lien annulé pour panier boutique en sql
 
zao
Profil : IDNaute
Plus d'informations

Salut.
Encore un nouveau probleme pour les programmeurs en herbe.
 
j'ai fabriqué une boutique en ligne,qui est geré par base mysql.
 
j'ai un panier qui contient les produits de mon client.
Le panier est une table sql.
(chaque utilisateur a sa propre table, donc son propre panier).
 
Comment faire pour appliquer un lien qui permetré d'effacer une ligne de la table.
 
Pour être plus precis: chaque ligne de la table contient les renseignements du produit:  
(il y a 3 champs)
 
-PRODUIT  -TAILLE -QUANTITE
Comment ajouter un champ (annuler) qui permetré d'effacer la ligne correspondant au produit.
 
N'hesitez pas a me demander plus de détails, si vous n'avez pas saisi.
 
MERCI pour votre aide.

Liens

Profil : IDNaute
Plus d'informations

comment tu fais pour savoir a quel utilisateur appartient les lignes de la table ?
 
C'est quoi ta clé primaire ?

zao
Profil : IDNaute
Plus d'informations

J'utilise les variables de session.
 
exemple : $table="$_SESSION[nom]";
 
grace a cette commande précéde de :
session_start();
 
je peux enregistrer ou lire une table specifique a un utilisateur.

Profil : IDNaute
Plus d'informations

Citation :

une table specifique a un utilisateur


 
Ta une table par utilisateur ?
 
Sinon tu peut pas faire une page qui servirait a virer une ligne (avec un "delete from" ) ?

Profil : IDNaute
Plus d'informations

Et bien oui, si un panier = une table il faut que tu rajoute un champ par table où un numero est incrementé.
Un numero unique pour chaque article du panier.
Tu n'as plus qu'a faire un bouton "supprimer" qui renvoi le numero de l'article du panier a supprimer.
Et comme l'a dit notre ami Jarash, une petite requette delete from avec ta variable numéro de l'article a supprimer.
 
Sly.

zao
Profil : IDNaute
Plus d'informations

c'est ce que je suis en train de faire , mais sa s'avere tres compliqué, exemple de mon code :
 
$produit = $produit;
$taille = $taille;
$quantite = $quantite;
$annule = "<a href=\"?delete\">effacer</a>";
 
// on ecrit les variables dans la table
 
$table="$_SESSION[nom]";
   $query = "INSERT INTO $table(produit,taille,quantite,annule)";
   $query .= " VALUES('$produit','$taille','$quantite','$annule')";  
   $result = mysql_query($query);
 
if (isset($_GET["delete"])) {
$SQL = "DELETE FROM $_SESSION[nom]"
   . " WHERE produit = 'eclectikblanc'";
mysql_query($SQL);}
[/color]
 
Comme tu peux le voir j'arrive a inserer un lien effacer pour chaque ligne , mais pour l'instant sa n'efface qu'un produit spécifique en l'occurence :  
 
le produit : 'eclectikblanc'
 
Toute la dificulté réside dans le fait de pouvoir creer un lien coorespondant au produit de la igne et non pas a un produit prédefini....
 
je ne sais pas comment faire..
 

zao
Profil : IDNaute
Plus d'informations

merci pour ta reponse : slyjohns
 
je suis un newbie, pourrais tu m'eclairer et me dire comment faire une telle chose en php ?
 
merci...

Profil : IDNaute
Plus d'informations

dans ta table, tu dois créer un champs "id" qui te servira de clé primaire. C'est avec elle que tu pourra identifier tes différentes lignes. Ensuite, tu n'a qu'a mettre dans ton lien l'id en parametre. Enfin, dans ton "delete from", tu finis par "where id = $id".

Profil : IDNaute
Plus d'informations

Dans ta table panier il te faut rajouter un champ "num" par exemple, ce sera ta clé primaire ce champ "num" sera du "int", unique (forcément puisque 1 numero sera egal a un article) et en auto-increment (comme ca tu n'as pas a gerer ca ;)).
Voila pour la table.
 
Ensuite sur ta page d'affichage du panier, je ne sais pas comment tu as gerer ca, mais quand tu recuperes les infos des produits (une ligne par produit) tu recuperes aussi le numero du produit (num).
Et donc ton lien "supprimer" tu le fais pointer vers une page (ou une fonction) avec "num" en parametre. Et tu as juste a faire un delete_from avec le "num".
 
Voila.
Bon courage A+
 
Sly.

zao
Profil : IDNaute
Plus d'informations

j'ai fais un champ ID dans ma table et je lui est apliqué la fonction AUTO_INCREMENT de mysql
 
pour qu'il creer une nouvelle ID a chaque ligne mais mysql me repond:
 
 ERREUR !! Incorrect column specifier for column 'id'  
[/color]
 
 
 
je ne vois pas ou est l'erreur ? je l'ai mis en varchar(25)
 
aurais tu une idée , est ce bien ca qu'il faut faire ?

Profil : IDNaute
Plus d'informations

faut pas le mettre en varchar mais en int (ou tinyint).

zao
Profil : IDNaute
Plus d'informations

laisse tomber la question d'avant, effectivement en "INT" au lieu de "VARCHAR" sa marche.
 
merci beaucoup pour ton aide , j'ai deja bien avancé

zao
Profil : IDNaute
Plus d'informations

ok sa fonctionne, chaque ligne ajouté dans le panier possede son propre numero dans le champ "num"
 
(le champ "num" est auto_incrementé)
 
mais maintenant, comment incrementer la fonction :
 
DELETE * FROM $table where num ='1'
 
......................................................................................
 
Car je dis ceci :
   
 
$produit = $produit;
$taille = $taille;
$quantite = $quantite;
$annule = "<a href=\"?delete\">effacer</a>";  ";
   $query = "INSERT INTO $table(produit,taille,quantite,annule)";
   $query .= " VALUES('$produit','$taille','$quantite','$annule')";  
   $result = mysql_query($query);
   
if (isset($_GET["delete"])) {
$SQL = "DELETE FROM $_SESSION[nom]"
   . " WHERE num = '1'";
mysql_query($SQL);}
"
   . " WHERE num = '1'
 
DELETE FROM $_SESSION[nom]"
   . " WHERE num = '2'
[/color]
etc............
 
(j'espere avoir été clair)
 
 merci pour votre aide.

Profil : IDNaute
Plus d'informations

Lorsque tu affiches tes différentes ligne, tu récupères le numéro et tu le fout en paramètre dans ton lien.

Profil : IDNaute
Plus d'informations

Les quelques lignes que tu montres la servent a creer un nouveau panier.
Quand tu affiches un panier existant tu vas bien faire appel a ta base pour afficher les infos.
Coupler avec une petite boucle pour l'affichage de tout tes articles.
C'est a ce moment la où il faut que tu recuperes ta variable "num". Comme ca chaque ligne (donc chaque article) recupere son numero.
Et ton lien supprimer va se servir de cette variable pour supprimer le bon article.
 
Sly.

zao
Profil : IDNaute
Plus d'informations

comment puis-je faire ca ?
 
voici mon code pour le moment:
 
j'insere un lien DELETE dans un champ "ANNULE"
pour chaque ligne.
Chaque ligne a son champ caché "num" auto_incrementé (son identité)
 
 
$annule = "<a href=\"?delete\">effacer</a>";
 
 
<?
if (isset($_GET["delete"])) {
$SQL = "DELETE FROM $_SESSION[nom]"
   . " WHERE num = '1'";
mysql_query($SQL);}
?>  
[/color]
Qui me sert a suprimer la ligne correspondante au champ "num"
Le champ dupliqué a chaque ligne est toujours le meme : <a href=\"?delete\">effacer</a>  
 
je sais, on m'a dis de declarer ma variable dans le "while()", mais j'y arrive po.
Pourais tu m'expliquer comment faire exactement pour incrementer ma variable 1 dans "num"
ou pour faire en sorte que mon lien annule prenne en consideration ma nouvelle ligne ?
 
PS; je suis completement paumé  !!! lol
:crying:
merci.

Profil : IDNaute
Plus d'informations

Re,
 
On va reprendre un peu plus au debut.
 
Pour afficher le contenu de ton panier, tu fais une requete pour recup toute les infos concernant ce meme panier, et avec une boucle ca va te creer une ligne pour chaque article.
 
Dans chaque ligne tu affiches bien les infos de l'article, tu peux donc associer la variable "num" que tu recuperes dans ta base (tu mets ca dans un champ cacher). Tu as donc bien pour chaque ligne un article different, avec toute les infos s'y rapportant y compris l son numero unique: "num".
 
Dans ton lien annuler, tu envois cette variable "num" vers une page de suppression qui l'utilisera comme identifiant pour supprimer le bon article dans ta base.
 
Je prefere t'expliquer plutot que te donner des morceau de code ou te le faire carrement. Tu progressera plus comme ca.
 
Tu as la demarche maintenant a toi de coder, avec un ensemble de fonctions simples ca se fera tres bien.
 
Sly.

zao
Profil : IDNaute
Plus d'informations

RE:
 
Afficher le "num" pour chaque ligne , jusqu'ici tous va bien ,j'y arrive.
 
Mais ce que je saisi moins c'est quand tu dis :
 
 

Citation :


slyjohns a écrit :
 
Dans ton lien annuler, tu envois cette variable "num" vers une page de suppression qui l'utilisera comme identifiant pour supprimer le bon article dans ta base.
 
 


 
Moi j'ai mis comme lien annuler dans le champ "annule" cette ligne de commande :
 
<a href=\"?delete\">effacer</a>
 
Je ne vois pas comment je peux récuperer la variable
$val["num"] et la mettre dans mon lien ?
[/color]
 
Surement que je ne dois pas utiliser ce genre de lien?
 
Peux tu me donner plus de détails ?
(je suis debutant, il ya encore une semaine , je ne savais meme pas me connecter a une base sql , lol)
 
merci

Profil : IDNaute
Plus d'informations

En faite tu n'as meme pas besoin d'un champ cacher, tu recuperes ta variable "num" tu la stock dans $id_article.
 
Et pour ton lien ce sera un truk du genre supprim.php?num=$id_article
Comme ca dans ta page supprim.php tu pourras recuperer "num" pour supprimer to article.
 
Bon la c'est un exemple pour que tu comprenne bien le fonctionnement, on preferera peut etre passer les variables autrement: de facon cachées, mais c'est une autre histoire lol.
 
Sly.