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.
comment tu fais pour savoir a quel utilisateur appartient les lignes de la table ?
C'est quoi ta clé primaire ?
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.
| 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" ) ?
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.
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..
merci pour ta reponse : slyjohns
je suis un newbie, pourrais tu m'eclairer et me dire comment faire une telle chose en php ?
merci...
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".
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.
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 ?
faut pas le mettre en varchar mais en int (ou tinyint).
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é
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.
Lorsque tu affiches tes différentes ligne, tu récupères le numéro et tu le fout en paramètre dans ton lien.
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.
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
merci.
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.
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 :
|
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
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.
Ca y est , j'ai le truc, bon j'vais pas mentir, apres 7 heures de casses têtes en essayant toutes les possibilités , j'ai fini par craquer et je suis allé pomper un peu, et j'ai fini par trouver:
En mettant le lien directement dans le "while" il se multiplie autant qu'il y a de ligne et du coup grâce à une astuce on récupère la variable "num" de cette ligne et on l'envois à la commande "delete from $table where num=$del".
LA fameuse ligne de commande:
<A href="<?echo $URL."?del=".$val["num"]; ?>">suprimer</A>
[/color]
Sa tue !
En tout cas merci pour tout SLY !
LE ZAO
Il y a 206 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
