Bonsoir,
Utilisant le tutoriel sur la création d'un panier, j'ai dû réaliser un formulaire dans ma page details.php pour que le client puisse indiquer la quantité qu'il désire et récupérer le résultat dans la même page pour l'intégrer avec les autres données dans un <a href... pour envoi vers le panier.
J'ai d'abord fait ceci :
mais je me retrouvais avec une" Erreur SQL ! Resource id #4".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <form action="detail.php" method="post"> <b>Quantité :</b> <input type="text" name="qte" size="3"> <input type="image" name="image" value="ok" src="images/panier_bleu_plein.png" align="absmiddle" border="0" height="35" width="35"> </form>
Voici le script de la page detail.php se trouvant avant le formulaire :
J'ai ensuite remplacé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 <?php session_start(); $id = $_GET['id']; require("configuration.php"); $result = mysql_query("SELECT $sbbproduit.id, $sbbproduit.hid, $sbbproduit.sid, $sbbproduit.libelle, $sbbproduit.ancienprix, $sbbproduit.spec, $sbbproduit.photoarticle, $sbbproduit.frais, $sbbproduit.promo, $sbbproduit.prix, $sbbproduit.visu, $sbbfrs.frsid, $sbbfrs.societe FROM $sbbproduit, $sbbfrs WHERE $sbbproduit.frsid= $sbbfrs.frsid AND $sbbproduit.id='$id'"); $row = mysql_fetch_row($result) or die('Erreur SQL !<br />'.$result.'<br />'.mysql_error()); ?> <title>En détail...</title> <link href="style.css" type="text/css" rel="stylesheet" media="all"> </head> <body> <div align="center"> <div id="header"></div> <div id="sommaire"></div> <div id="corps"> <div id="colonne_centre"> <div id="txtcol_centre"> <table width="100%" border="0"> <tr><?php if ($row[6] != "nul") { $split = explode("../", $row[6]); $row[6] = $split[1]; $img = "<img src=\"$row[6]\" width='120' height='120' target='blank'>"; $image2 = "<a href='$row[6]' target='blank'>Photo taille réelle</font></a><br>"; } else { $img = "<img src=\"$images/na.jpg\" width=100 border=0>"; } echo "<td colspan='2'>$img</a><br>$image2</td>"; ?></tr> <tr height="20"> <td valign="top" height="20"></td> <td height="20"></td> </tr> <tr><?php $libelle = $row[3]; ?> <td valign="top"><b>Article : </b></td> <?php echo "<td>$libelle</font></td>"; ?></tr> <tr> <td valign="top"><b>Descriptif : </b></td> <? $descriptif = $row[5]; $descriptif = str_replace("[retour]","<br>",$descriptif); $descriptif = str_replace("[gras]","<b>",$descriptif); $descriptif = str_replace("[/gras]","</b>",$descriptif); echo "<td>$descriptif</font></td>"; ?></tr> <tr> <td valign="top"><b>Prix net :</b></td> <? $price = $row[9]; $price = sprintf("%0.2f", $price); echo "<td><font color=\"red\"><b>$price $devises</b></font></td>"; ?></tr> <? $ancienprix = $row[4]; $ancienprix = sprintf("%0.2f", $ancienprix);?> <tr> <td valign="top">Prix public : </td> <?php echo "<td>$ancienprix $devises</font></td>"; $gain = ($row[9] - $row[4]); $gain = sprintf("%0.2f", $gain); ?></tr> <tr> <td valign="top"><b>Economie réalisée : </b></td> <?php echo "<td><b>$gain $devises</b></font></td>"; ?></tr> <?php $fournisseur = $row[12]; ?> <tr><td valign="top"><b>Fournisseur : </b></td> <?php echo "<td> <b>$fournisseur</b></font></td>"; ?></tr> </table> // puis vient le formulaire
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <form action="detail.php" method="post">
et je n'ai plus eu cette erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <form action="#" method="post">
Il me fallait récupérer le résultat pour l'insérer au milieu des autres données destinées à alimenter le panier.
J'ai donc fait ceci :
en insérant le <a href... à l'intérieur des parenthèses de ma condition afin que le "Ajouter au panier" n'apparaisse pas en même temps que le bouton du formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php if ( isset($_POST['qte']) && !empty($_POST['qte']) ) { $qte = $_POST['qte']; ?> <a href="panier.php?action=ajout&l=<?php echo $libelle; ?>&f=<?php echo $fournisseur; ?>&q=<?php echo $qte; ?>&p=<?php echo $price; ?>&g=<?php echo $gain; ?>" onclick="window.open(this.href, '', 'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350'); return false;">Ajouter au panier</a> <? } ?>
Cela fonctionne très bien mais, oblige le visiteur du site à d'abord envoyer le formulaire après avoir rempli le champ de quantité, puis ensuite, à cliquer sur "Ajouter au panier" qui vient d'apparaître sur la page pour envoyer les données au panier (le champ de texte et son bouton étant toujours visibles).
Je suppose qu'il doit y avoir une façon de procéder pour éviter cette double manipulation et que le simple fait, pour le client, de cliquer sur le bouton, l'amène au panier, mais j'avoue avoir cherché et ne pas l'avoir trouvée...
Merci par avance de votre aide.
Partager