IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Petit souci de JS pour un panier


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut Petit souci de JS pour un panier
    Bonjour,

    Je viens vous voir aujourd'hui pour une petite question.
    J'ai suivi le tutora pour la création d'un panier.php proposer sur le forum :
    http://jcrozier.developpez.com/articles/web/panier/

    Et j'ai un petit souci avec la fonction JavaScript :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="panier.php?action=ajout&amp;l=LIBELLEPRODUIT&amp;q=QUANTITEPRODUIT&amp;p=PRIXPRODUIT" 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>

    En effet, mon souci est que pour ma part cela ressemblerait plus a ceci :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="panier.php?action=ajout&amp;l=LIBELLEPRODUIT&amp;q=QUANTITEPRODUIT&amp;p=PRIXPRODUIT" 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>

    Qui doit envoyer les informations au panier et qui doit logiquement le faire apparaître comme une petite fenêtre.
    Or, je n'ai pas de petite fenêtre, mais une nouvelle page (sur la même fenêtre) et les données sont mal envoyées. Vu qu'au lieu d'avoir 'achat' pour q, j'ai 'stock'.

    Mon code total étant :

    Code html : 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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    	<table width="100%">
    						<tr style="height: 16px" align="center">
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										#
    									</b>
    								</font>
    							</td>
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										image
    									</b>
    								</font>
    							</td>
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										nom_du_jeu
    									</b>
    								</font>
    							</td>
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										date_sortie
    									</b>
    								</font>
    							</td>
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										nbr de joueurs
    									</b>
    								</font>
    							</td>
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										prix
    									</b>
    								</font>
    							</td>
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										quant dispo
    									</b>
    								</font>
    							</td>
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										quant desiré
    									</b>
    								</font>
    							</td>							
    							<td bgcolor="#cccccc">
    								<font class="font_p" color="#5d8eb3">
    									<b>
    										acheter
    									</b>
    								</font>
    							</td>
    						</tr>
    <!------------------------------------------------------------------------------------------------------------------------------------>
    					<!-- fin de l'entete de notre tableau -->
    <!------------------------------------------------------------------------------------------------------------------------------------>						
    						<?php
    //<!------------------------------------------------------------------------------------------------------------------------------------>
                                                            //<!-- on compte le nombre de lignes dans le fichier texte -->
    //<!------------------------------------------------------------------------------------------------------------------------------------>                                               
                                                            $nb_elements = count($data);
                                                            $nb_lignes= $nb_elements;
    //<!------------------------------------------------------------------------------------------------------------------------------------>
                                                            //<!-- on ouvre une boucle 'for' qui tournera autant de fois qu'il y a de lignes dans le fichier texte -->
    //<!------------------------------------------------------------------------------------------------------------------------------------>                                                       
                                                            for ($i = 0; $i < $nb_lignes; $i ++)
                                                                    {
                                                                            $new_ligne= array();
                                                                            $new_ligne[0]= $data[$i]['id'];
                                                                            $new_ligne[1]= $data[$i]['nom_du_jeu'];
                                                                            $new_ligne[2]= $data[$i]['date_sortie'];
                                                                            $new_ligne[3]= $data[$i]['image'];
                                                                            $new_ligne[4]=$data[$i]['nbr de joueurs'];
                                                                            $new_ligne[5]= $data[$i]['prix'];
                                                                            $new_ligne[6]= $data[$i]['quantite'];
                                                                            $id=$new_ligne[0];
                                                                            $nom_du_jeu=$new_ligne[1];
                                                                            $date=$new_ligne[2];
                                                                            $image=$new_ligne[3];
                                                                            $joueurs=$new_ligne[4];
                                                                            $prix=$new_ligne[5];
                                                                            $stock=$new_ligne[6];
    //<!------------------------------------------------------------------------------------------------------------------------------------>                                                                       
                                                                            // <!-- Définition de la position à afficher -->
    //<!------------------------------------------------------------------------------------------------------------------------------------>                                                                       
                                                                            ?>
    <!------------------------------------------------------------------------------------------------------------------------------------>									
    										<!-- on affiche les infos des jeux dans chaque ligne du tableau-->
    <!------------------------------------------------------------------------------------------------------------------------------------>										
    										<tr style="height: 16px" align="center" bgcolor="#dddddd">
    											<td>
    												<?php 
                                                                                                            echo 
                                                                                                                    isset($id) ? 
                                                                                                                            $id : ''
                                                                                                                    ; 
                                                                                                    ?>
    											</td>
    											<td>
    												<?php 
                                                                                                            echo 
                                                                                                                    isset($image) ? 
                                                                                                                            "<img src=\" ".$image."\">" : ''
                                                                                                                    ; 
                                                                                                    ?>
    											</td>
    											<td>
    												<?php 
                                                                                                            echo 
                                                                                                                    isset($nom_du_jeu) ? 
                                                                                                                            $nom_du_jeu : ''
                                                                                                                    ; 
                                                                                                    ?>
    											</td>
    											<td>
    												<?php 
                                                                                                            echo 
                                                                                                                    isset($date) ? 
                                                                                                                            $date : ''
                                                                                                                    ; 
                                                                                                    ?>
    											</td>
    											<td>
    												<?php 
                                                                                                    echo 
                                                                                                            isset($joueurs) ? 
                                                                                                                    $joueurs : ''
                                                                                                            ; 
                                                                                                    ?>
    											</td>
    											<td>
    												<?php 
                                                                                                    echo 
                                                                                                            isset($prix) ? 
                                                                                                                    $prix : ''
                                                                                                            ; 
                                                                                                    ?>
    											</td>
    											<td>
    												<?php 
                                                                                                            echo 
                                                                                                                    isset($stock) ? 
                                                                                                                            $stock : ''
                                                                                                                    ; 
                                                                                                    ?>
    											</td>
    											<td>
    												<input type="number" name="achat" name="achat" value="0"  required/>
    											</td>
    											<td>
    												<?php 
                                                                                                    echo 
                                                                                                            "<a href='../achat/panier.php?action=ajout&amp;l=$nom_du_jeu&amp;q=achat&amp;p=$prix' 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>"
                                                                                                            ; 
                                                                                                    ?>
    											</td>
    										</tr>
    									<?php
                                                                            }
    //<!------------------------------------------------------------------------------------------------------------------------------------>                                                                       
                                                                    // <!-- Fin de la boucle for -->
    //<!------------------------------------------------------------------------------------------------------------------------------------>                                                               
                                                                    ?>
    					</table>

    Si quelqu'un pouvais me renseigner, je l'en remercierai. :/

  2. #2
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    Salut, déjà pour régler ton problème d'ouverture de nouvelle page, les guillemets sont incorrects du coup ton onclick est tronqué.

    ça serait plus correct comme ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo 
    													'<a href="../achat/panier.php?action=ajout&amp;l=$nom_du_jeu&amp;q=achat&amp;p=$prix" 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>"
    													;

    ensuite sur ce tuto, q symbolise la quantité, pourquoi le remplace tu par la chaine "achat"?
    si tu veux intégrer l'input achat dans le href de l'ancre il faut que tu t'y prennes autrement.
    Code php : 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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    <?php
    for ($i = 0; $i < $nb_lignes; $i ++)
    								{
    									$new_ligne= array();
    									$new_ligne[0]= $data[$i]['id'];
    									$new_ligne[1]= $data[$i]['nom_du_jeu'];
    									$new_ligne[2]= $data[$i]['date_sortie'];
    									$new_ligne[3]= $data[$i]['image'];
    									$new_ligne[4]=$data[$i]['nbr de joueurs'];
    									$new_ligne[5]= $data[$i]['prix'];
    									$new_ligne[6]= $data[$i]['quantite'];
    									$id=$new_ligne[0];
    									$nom_du_jeu=$new_ligne[1];
    									$date=$new_ligne[2];
    									$image=$new_ligne[3];
    									$joueurs=$new_ligne[4];
    									$prix=$new_ligne[5];
    									$stock=$new_ligne[6];
    //<!------------------------------------------------------------------------------------------------------------------------------------>									
    									// <!-- Définition de la position à afficher -->
    //<!------------------------------------------------------------------------------------------------------------------------------------>									
    									?>
    <!------------------------------------------------------------------------------------------------------------------------------------>									
    										<!-- on affiche les infos des jeux dans chaque ligne du tableau-->
    <!------------------------------------------------------------------------------------------------------------------------------------>										
    										<tr style="height: 16px" align="center" bgcolor="#dddddd">
    											<td>
    												<?php 
    													echo 
    														isset($id) ? 
    															$id : ''
    														; 
    												?>
    											</td>
    											<td>
    												<?php 
    													echo 
    														isset($image) ? 
    															"<img src=\" ".$image."\">" : ''
    														; 
    												?>
    											</td>
    											<td>
    												<?php 
    													echo 
    														isset($nom_du_jeu) ? 
    															$nom_du_jeu : ''
    														; 
    												?>
    											</td>
    											<td>
    												<?php 
    													echo 
    														isset($date) ? 
    															$date : ''
    														; 
    												?>
    											</td>
    											<td>
    												<?php 
    												echo 
    													isset($joueurs) ? 
    														$joueurs : ''
    													; 
    												?>
    											</td>
    											<td>
    												<?php 
    												echo 
    													isset($prix) ? 
    														$prix : ''
    													; 
    												?>
    											</td>
    											<td>
    												<?php 
    													echo 
    														isset($stock) ? 
    															$stock : ''
    														; 
    												?>
    											</td>
    											<td>
    												<input type="number" name="achat_'.$i.'" id="achat_'.$i.'" value="1"  required onchange="change('.$i.', this.value);"/>
    											</td>
    											<td>
    												<?php 
    												echo 
    													'<a id="_'.$i.'" href="../achat/panier.php?action=ajout&amp;l=$nom_du_jeu&amp;q=1&amp;p=$prix" 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>'
    													; 
    												?>
    											</td>
    										</tr>
    									<?php
    									}
                                                                            ?>
    <script type="text/javascript">
              function change(index, value) {
                        document.querySelector("#_"+index).href=document.querySelector("#_"+index).href.replace(/q=(?:.*)\&/, "q="value+"&");
              }                                                                       
    </script>
    0x4F

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    Merci pour ta réponse rapide

    en faite, je suis en train de réfléchir a comment réaliser le panier pour mon site
    Mais avant de voir cela je voulais déjà régler ce soucis de fenêtre .
    Apres pour quantité, le soucis c'est que pour le coût MA "quantité" ici = mon stock .
    Donc, en faite au final la quantité achetable sera =1 pour tout les produits.
    mais ça c'est une autre histoire qu'il va me falloir résoudre .
    Car la difficulté c'est qu'il s'agit d'un devoir, et que je n'est pas le droit a une BDD, je doit tout faire sur fichier txt ^^" .
    Donc la réalisation du panier me pose quelque soucis ^^"

  4. #4
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    Citation Envoyé par joe0703 Voir le message
    Merci pour ta réponse rapide
    en faite, je suis en train de réfléchir a comment réaliser le panier pour mon site
    Mais avant de voir cela je voulais déjà régler ce soucis de fenêtre .
    A priori ça c'est réglé avec la correction des guilemets.
    Citation Envoyé par joe0703 Voir le message
    Apres pour quantité, le soucis c'est que pour le coût MA "quantité" ici = mon stock .
    Donc, en faite au final la quantité achetable sera =1 pour tout les produits.
    mais ça c'est une autre histoire qu'il va me falloir résoudre .
    Là il suffit de désactiver le cumul des quantités $_GET['q'] dans le panier
    et de fixer à 1 la quantité de base
    Citation Envoyé par joe0703 Voir le message
    Car la difficulté c'est qu'il s'agit d'un devoir, et que je n'est pas le droit a une BDD, je doit tout faire sur fichier txt ^^" .
    Donc la réalisation du panier me pose quelque soucis ^^"
    Tu arriveras à quelquechose avec fopen fwrite et fread, ou le tandem fputs et fgets en php. ça permet de nombreuses manipulations sur un fichier texte.
    le tout c'est de trouver un mode de stockage
    par exemple, un fichier pour chaque client, dont le nom est basé sur un identifiant de session ou un cookie ou les deux, une ligne pour chaque produit (pour séparer les produits tu peux utiliser la fonction explode), et à l'intérieur de chaque ligne tu peux utiliser un séparateur, ex: | ou comme en csv un point virgule ou une tabulation, que tu organises en sous-tableau toujours avec explode.
    pour mettre un panier en fichier texte, la fonction implode fait l'inverse, elle joint en chaine avec sépérateur les éléments d'un tableau à clés numériques.

    Sinon tu peux envisager l'usage du format json, avec json_encode et json_decode
    0x4F

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Petit soucis formule excel pour respecter un minimum de commande
    Par Pygouv dans le forum Excel
    Réponses: 4
    Dernier message: 31/10/2013, 13h45
  2. petit soucis pour lire sur un port usb le createfile n'accep
    Par anthonycosson dans le forum Windows
    Réponses: 5
    Dernier message: 14/02/2006, 09h34
  3. petit soucis pour l'installation de mon ventirad
    Par arfy dans le forum Composants
    Réponses: 12
    Dernier message: 03/11/2005, 22h55
  4. petits soucis pour trouver un fichier autoexec.bat
    Par lestat69 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 20/10/2005, 14h11
  5. Petit soucis pour se connecter à l'adsl
    Par Blowih dans le forum Réseau
    Réponses: 4
    Dernier message: 28/07/2004, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo