Bonjour,
Je suis en train de développez un site web avec php5, et je veux qu'en cliquant sur un élément, je récupère son id à partir de la base de données tout en restant sur la même page.
Bonjour,
Je suis en train de développez un site web avec php5, et je veux qu'en cliquant sur un élément, je récupère son id à partir de la base de données tout en restant sur la même page.
Faire quelque chose "sans recharger la page" en général, ça implique de faire un appel AJAX via Javascript.
Mais dans ton cas particulier, il faudrait que tu précises ce que tu veux dire par "récupérer l'id". Est-ce que l'id s'écrit dans un champ ? met à jour quelque chose ?
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.
Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]
Bon le site que je viens de développer est conçu pour la vente en ligne .C'est à dire j'ai des articles affichés et lorsque je clique sur le bouton "Ajouter au panier",le nom de l'article cliqué s'affiche dans un div à coté.
As-tu du code? Des exemples? C'est compliqué à cerner sans rien de parlant...
Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !
Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voitureQue la force soit avec Developpez.net
je ne suis pas sûre de bien comprendre : tu veux mettre en place un panier ? ou tu as déjà un panier et tu veux faire quelque avec ?
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.
Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]
Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !
Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voitureQue la force soit avec Developpez.net
En fait, il s'agit d'un ensemble de produits affichés et lorsque je clique sur un produit ,il s'ajoute dans un div placé à coté, pour qu'à la fin il y 'aura validation des produits choisis(placés dans le div).
Bonjour,
1/ tu serais bien aimable de répondre aux questions qu'on te pose...
2/ tes interventions se résument à une seule phrase...
Si vraiment tu veux une réponse, merci d'être plus PRECISE et LOCACE quant à ta problématique.
De plus, un peu de CODE aiderait sans doute...
Enfin, dire "merci" est facultatif, mais toujours apprécié.
Bonjour,
Je suis vraiment désolée, j'étais un peu perturbée.
Donc, je réexplique.
j'ai une page "index.php" dans laquelle s'affiche les produits et pour chaque produit affiché si je clique sur le bouton"send data" le nom de produit associé au produit voulu va être affiché dans un textarea.
J'ai testé ce codePage submit.php
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 <script src = "http://code.jquery.com/jquery-1.11.1.min.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src = "js/script.js"></script> <?php require 'Categorie.php'; require 'Produit.php'; $pa=new Produit($base); $ca=$pa->findproduit($_GET["id"]); ?> <div> <textarea id = "response" style = "width: 200px; height: 100px; resize: none;"></textarea> </div> <?php foreach($ca as $pers) { ?> <form> <input type="hidden" value="<?php echo $pers['Id_produit'] ; ?>" id="ids"> <div class="image"> <input type = "text" id = "fname" value="<?php echo $pers['libelle_produit'] ; ?>" /><img width="200" height="200" src="<?php echo 'Images/' . $pers["tof"];?>"> <div class="caption"> Nombre de pièces par kilo :<input type = "text" id = "surname" value="<?php echo $pers['Nb_pieces'] ; ?>" /> <br> <br> <button id = "formsubmit">Send Data</button><br> <?php } ?> </body> </html>
Mais le problème c'est que lorsque je mets le bouton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php $fname = $_POST['fname']; $lname = $_POST['surname']; $id= $_POST['ids']; echo "$fname $lname $id"; ?>
dans la boucle, un message concernant la fonction "findproduit()" s'affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<button id = "formsubmit">Send Data</button><br>
si je le mets hors la boucle ,ça marche mais pour un seul produit bien sur car j'ai qu'un seul bouton.
j'espère que j'ai bien formulé mon problème.
Merci d'avance pour toute proposition à me suggérer.
Désolée une autre fois.
Bonjour,
1/ un attribut id doit être UNIQUE.
Or, ici, dans ta boucle tu définis :
Donc, ça ne peut pas fonctionner.
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6<input .... id="ids"> ... ...<input id = "fname"... ... ...<input type = "text" id = "surname"... <button id = "formsubmit"...
2/ Balise <form> à l'intérieur de la boucle (?) et NON fermée
-> si tu veux traiter plusieurs enregistrments en m^me temps, il faut sortir la balise <form> de la boucle, ainsi que le bouton.
3/ Aucun attribut name="..." aux input ?
Comment récupères-tu les données du formulaire ? c'est pourtant ce name qu'on récupère en $_POST !
La solution viendra de ces name :
=> on récupère alors des array :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5<input .... name="ids[]"> ... ...<input name="fnames[]"... ... ...<input type = "text" name="surnames[]"...
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php $ids = $_POST['ids']; // array $fnames = $_POST['fnames']; // array $lnames = $_POST['surnames']; // array foreach( $ids as $index => $id) { echo "$fnames[$index] $lnames[$index] $id"; // (remarque) $id est ici equivalent à : $ids[$index] } ?>
4/
OK. quel est le message (complet) ?
Merci de votre aide.
J'ai testé ce que vous m'avez proposé ,mais ça marche que pour un seul produit, c'est à dire il m'affiche dans le textarea le premier produit cliqué seulement.
Je me demande s'il faut utiliser "SESSION" puisqu'il s'agit d'une sorte de gestion de panier?
Bonjour,
Voici mon code:
J'ai consulté le code HTML , et c'est bien structuré.
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 <?php foreach($ca as $pers) { ?> <form> <input type="hidden" value="<?php echo $pers['Id_produit'] ; ?>" id="ids" name="ids[]"> <div class="image"> <input type = "text" id = "fname" name="fnames[]" value="<?php echo $pers['libelle_produit'] ; ?>" /><img width="200" height="200" src="<?php echo 'Images/' . $pers["tof"];?>"> <div class="caption"> Nombre de pièces par kilo :<input type = "text" id = "surname" name="surnames[]" value="<?php echo $pers['Nb_pieces'] ; ?>" /> <br> <br> <input type="button" id = "formsubmit" value="Send Data"/><br> </form> <?php } ?> <?php if(!empty($_POST)) { $ids = $_POST['ids']; $fnames = $_POST['fnames']; $lnames = $_POST['surnames']; foreach( $ids as $index => $id) { echo "$fnames[$index] $lnames[$index] $id"; } } ?>
Merci.
Bonjour,
J'ai un doute...
Relis mon précédent message......
1/ Compte tenu que les balises <form> et </form> sont DANS le foreach, tu crées autant de formulaires que de tours de boucle...
=> Il faut les "SORTIR" du foreach, pour n'avoir qu'UN seul formulaire.
2/ id="ids" .... : PAS d'id dans une BOUCLE !, car un id DOIT ETRE UNIQUE.
3/ J'ajoute que :
- les balises <div> ne sont pas non plus fermées,
- on écrit <br />, et pas <br>
- supprime les espaces inutiles : ...type = "text"...
=> Commence déjà par écrire du code VALIDE... et donc corriger
Merci pour tes remarques,
mais j'ai mis des id car j'ai besoins d'eux dans le fichier script.js:Bon,j'ai corrigé ce qu'il faut,mais rien ne s'affiche maintenant dans textarea (bien-sur car j'ai enlevé les ids)
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $(document).ready(function(){ $('#formsubmit').click(function(){ $.post("submit.php", {fname: $('#fname').val(), surname: $('#surname').val()}, function(data){ $('#response').html(data); } ); }); });
Merci.
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 <form> <textarea id = "response" style = "width: 200px; height: 100px; resize: none;"></textarea> </div> <?php foreach($ca as $pers) { ?> <input type="hidden" value="<?php echo $pers['Id_produit'] ; ?>" name="ids[]"> <div class="image"> <input type = "text" name="fnames[]" value="<?php echo $pers['libelle_produit'] ; ?>" /><img width="200" height="200" src="<?php echo 'Images/' . $pers["tof"];?>"> </div> <div class="caption"> Nombre de pièces par kilo :<input type = "text" name="surnames[]" value="<?php echo $pers['Nb_pieces'] ; ?>" /> <br/> <br/> </div> <input type="button" name= "formsubmit" value="Send Data"/><br> <?php } ?> </form> <?php if(!empty($_POST)) { $ids = $_POST['ids']; $fnames = $_POST['fnames']; $lnames = $_POST['surnames']; foreach( $ids as $index => $id) { echo "$fnames[$index] $lnames[$index] $id"; } } ?>
Bon.
J'ai beau relire tes différents messages, je ne comprends pas ce que tu veux faire, ni (surtout) comment tu comptes le faire (script.js ?)
Bref, merci de :
- reprendre tout depuis le début, en expliquant clairement et en détail !
- écrire plus d'une phrase...
- mettre les codes associés à tes EXPLICATIONS.
- ...et "accessoirement", revoir LA CONCEPTION...
N.B. Que contient le fichier submit.php ?
Bonsoir,
Effectivement, il faut des ids uniques.
Pour palier ce problème, j'ai générer des ids unique avec un un suffixe.
A voir votre code, vous pouvez faire (si Id_produit est unique) :
Ensuite, vous pouvez faire une analyse du $_POST[] en recherchant tous les id_*
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <input type="hidden" value="<?php echo $pers['Id_produit'] ; ?>" id="id_<?php echo $pers['Id_produit'] ; ?>">
Cordialement,
lanonyme
Bonjour,
j'ai trouvé une solution à mon problème et ça marche, c'est à dire il y'a récupération des données affichées(récupérées à partir de la BDD) dans un textarea après clic sur le bouton "send data".
Mais j'ai un petit problème je pense qu'il est banal.En effet je ne parviens pas à récupérer le contenu d'un input text(saisi fait par l'utilisateur) dans ce même textarea.
voici mon code:
Merci.
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 <script> $(document).ready(function(){ $('.formsubmit').click(function(){ id=this.name; var result=id.split('|'); response=$("#responses").val(); response+=result[1]+" "+result[2]+" "+result[3]+'\n'; $("#responses").html(response); }); });</script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <?php require 'Categorie.php'; require 'Produit.php'; $pa=new Produit($base); $ca=$pa->findproduit($_GET["id"]); ?> <div> <textarea id = "responses" style = "width: 200px; height: 100px; resize: none;"></textarea> </div> <?php foreach($ca as $pers) { ?> <form id="<?php echo $pers['Id_produit'] ; ?>"> <input type="hidden" value="<?php echo $pers['Id_produit'] ; ?>" id="ids" name="ids[]"> <div class="image"> <label id="fname" name="fnames[]" ><?php echo $pers['libelle_produit'] ; ?></label><img width="200" height="200" src="<?php echo 'Images/' . $pers["tof"];?>"></div> <div class="caption"> Nombre de pièces par kilo :<label id = "surname" name="surnames[]"><?php echo $pers['Nb_pieces'] ; ?> </label> </div><br/> <br/> Quantité: <input type="text" name="a"/> <input type="button" class="formsubmit" name="<?php echo $pers['Id_produit'].'|'.$pers['libelle_produit'].'|'.$pers['Nb_pieces'].'|'.a; ?>" value="Send Data"/><br> </form> <?php } ?>
Bonjour,
Bon. On va arréter le massacre....
1/ On écrit un code HTML PROPRE
2/ 1 produit = 1 formulaire (donc, ça justifie de mettre les balises <form> DANS le foreach)
3/ on veut récupérer certaines données...
- ...pour les transmettre via jQuery/Ajax à un fichier externe PHP ("submit.php")...
- ...qui va faire le traitement...
- ...avant de renvoyer le résultat à afficher dans le textarea.
4/ Pour pouvoir récupérer des données simplement affichées, on crée des input type hidden avec ces données
5/ Le jQuery
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 <?php foreach($ca as $pers) { ?> <form action="" method="post"> <input type="hidden" value="<?php echo $pers['Id_produit'] ; ?>" name="ids"> <input type="hidden" value="<?php echo $pers['libelle_produit'] ; ?>" name="fname"> <div class="image"><?php echo $pers['libelle_produit'] ; ?> <img width="200" height="200" src="<?php echo 'Images/'.$pers['tof'];?>"></div> <input type="hidden" value="<?php echo $pers['Nb_pieces']; ?>" name="surname"> <div class="caption">Nombre de pièces par kilo : <?php echo $pers['Nb_pieces']; ?></div> <p>Quantité: <input type="number" name="a" value=""/></p> <p><input type="button" class="formsubmit" value="Send Data"/></p> </form> <?php } ?>
Code jQuery : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $(document).ready(function(){ $('.formsubmit').on( 'click', function(){ var form_datas = $(this).closest('form').find( 'input, select, textarea' ).serialize(); alert (form_datas); // pour TEST // ICI, on peut faire appel à AJAX : $.post( "submit.php", form_datas ) .done( function( retourTxt ) { $('#responses').html( retourTxt ); }); }); });
Vraiment merci beaucoup, ça marche très bien.
Juste ,j'ai un petit problème .Je veux afficher les articles sélectionnés dans un div au lieu d'un textarea et pour chaque article ajouté dans le div ,on lui associe une zone de texte.
Mon problème c'est lorsque j'ai changé le textarea par un div , à chaque fois où je clique sur un nouvel article il y'a écrasement de l'ancien, et remplacement par le nouveau(c-à-dire il n' ya pas de boucle).
voici mon code:
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 <?php require 'Categorie.php'; require 'Produit.php'; $pa=new Produit($base); $ca=$pa->findproduit($_GET["id"]); ?> <?php for($i = 0;count($ca) > $i; $i++) { ?> <div> <label id = "responses" style = "width: 200px; height: 100px; resize: none;"></label> <br/> Quantité:<input type="text" value=""/> </div> <?php } ?>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager