Transmettre une donnee via un lien

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Transmettre une donnee via un lien

Re: Transmettre une donnee via un lien

par Cyrano » 03 août 2011, 09:35

C'est tout l'intérêt d'écrire soi-même son code : tu vas rapidement distinguer le code qui revient souvent et que tu peux mettre dans un fichier à part et l'autre que tu devras écrire à chaque nouvelle utilisation. D'un coté du code générique qui aboutit à des librairies comme Jquery, DoJo, etc... et le code métier qui est spécifique à un besoin précis et particulier.

Et donc pour distinguer ça, il te faut bien comprendre le fonctionnement de tout ceci par la pratique.

Re: Transmettre une donnee via un lien

par rimie » 03 août 2011, 04:54

Tu peux effectivement t'inspirer de ce genre d'exemple, mais ne te contente pas de faire du copier/coller, ça ne servirait à rien et tu ne comprendras pas mieux, donc à terme tu en resteras à venir poser des questions ici au lieu d'avancer.
Je ne vais faire du copier/coller, je veux apprendre, est ce que c'est un bon exemple, j'ai pense a autre chose, si je veux faire cette operation sur plusieurs trucs, je devais ecrire cette fonction a chaque fois que je dois l'utiliser, ou bien il existe une methode de la combiner??

exemple:

1er cas: recuperer l'id sans recharger la page pour un poll,
2eme cas: recuperer le nom d'un artiste pour de la musique,..
etc...

Re: Transmettre une donnee via un lien

par Cyrano » 01 août 2011, 15:24

Tu peux effectivement t'inspirer de ce genre d'exemple, mais ne te contente pas de faire du copier/coller, ça ne servirait à rien et tu ne comprendras pas mieux, donc à terme tu en resteras à venir poser des questions ici au lieu d'avancer.

Re: Transmettre une donnee via un lien

par rimie » 01 août 2011, 15:09

je pense quelque chose du meme principe: http://www.w3schools.com/php/php_ajax_poll.asp

Re: Transmettre une donnee via un lien

par Cyrano » 01 août 2011, 13:18

alors ce que j'ai globalement compris qu'on peut le faire avec du XHR et Ajax et ne pas avec du jQuery :cry:
Ok, là, ça me situe davantage, et effectivement tu mélanges pas mal de choses. Mettons les choses dans l'ordre, tu le comprendras plus facilement et tu auras d'autant moins de mal à t'en servir.

Jquery, c'est une librairie de code JavaScript : XHR (XML HttpRequest), est en quelque sorte une manière d'avoir des échanges de données entre une page WEB coté client et un serveur mais sans recharger la page, c'est ça l'AJAX, et c'est fait avec du JavaScript. JQuery étant en JavaScript, c'est non seulement tout à fait compatible avec AJAX, mais ça va même te simplifier la tâche en te dispensant d'écrire pas mal de lignes de code en JavaScript.

Si tu es toujours là, on continue. On utilise AJAX en l'associant à des gestionnaires d'évènements, donc, encore du JavaScript coté client, par exemple onclick, onsubmit, onblur, onkeyup etc... il y en a quelques uns comme ça. Ça va réagir selon l'action surveillée, par exemple si on veut créer un évènement au clic de la souris sur un élément de la page, on va ajouter dans la balise de cet élément un attribut onclick. La valeur de cet attribut sera un code JavaScript que le navigateur va exécuter. Avec Jquery, on simplifie un peu en mettant dans la balise par exemple un attribut id et dans le code JavaScript, on mettra quelque chose comme $('#id-de-la-balise').function(){code-a-exécuter-quand-on-clique-sur-cet-élément}. Ce code peut parfaitement faire appel à une fonction qui va récupérer si nécessaire certaines données dans la page et faire un appel AJAX vers le serveur en lui envoyant les données, en POST ou en GET selon ton choix, et dans ce cas tu utilises la méthode AJAX de Jquery.

Est-ce que ça commence à être plus clair comme ça ?

Petite note : je te recommande très vivement de t'exercer en JavaScript sans utiliser Jquery ni aucune bibliothèque toute prête du même genre comme DoJo, Script.aculo.us, Prototype, etc... essaye d'écrire le code complètement, écris tes propres fonctions : le but, c'est de comprendre comment fonctionne le JavaScript, comment on lance un appel AJAX, comment on modifie l'affichage de certains éléments, comment on en affiche ou on en masque d'autres, etc... Petit à petit à force d'en faire, tu vas comprendre et apprécier d'autant plus l'usage d'une bibliothèque mais surtout tu sera infiniment plus efficace avec.

Re: Transmettre une donnee via un lien

par rimie » 01 août 2011, 12:14

alors ce que j'ai globalement compris qu'on peut le faire avec du XHR et Ajax et ne pas avec du jQuery :cry:

Re: Transmettre une donnee via un lien

par Cyrano » 01 août 2011, 09:56

Ce qui voudrait dire que tu passes par une requête XHR et AJAX : mais ce que tu ne sembles pas avoir lu convenablement, c'est que « transmettre en Jquery » ne veut rien dire.

Par ailleurs, le retour « success » ne signifie pas qu'il n'y a pas d'erreur dans le traitement coté serveur mais pas d'erreur dans l'échange AJAX avec le serveur. Ça peut faire une certaine différence.

Note bien : si certains éléments ne sont pas clairs pour toi, ne fais pas semblant d'avoir compris. Je sais que c'est tentant à cause de la peur du ridicule, mais dis-toi bien que celui qui débute n'est jamais ridicule, on est tous passés par là, moi compris et ça veut simplement dire qu'il ne sait pas et ne devinera pas non plus si personne ne lui explique correctement les choses. Si tu ne comprends pas bien un point et ne poses pas de question, tu ne pourras pas obtenir de réponse ni d'explication parce que personne ne le devinera. Pourtant on finit par se poser des questions quand les réponses sont incohérentes avec l'impression d'avoir perdu pas mal de temps.
Et il ne faut pas tout mélanger non plus. Le web, ce sont plusieurs langages qui ont chacun leur rôle à des moments distincts. À tel moment, on est sur la machine cliente, à tel autre on est sur le serveur. Là, tu veux construire une requête : ta réponse ne montre nulle part quand ni comment tu construis ta requête... Allez, on recommence, montre moi ce que tu as compris mais ne néglige pas ce que tu n'as pas bien saisi et pose les bonnes questions.

Re: Transmettre une donnee via un lien

par rimie » 01 août 2011, 09:39

:shock: As-tu lu complètement et compris ce que j'ai écrit précédemment ???
oui j'ai lu et c'est deja teste, je suis sur index.php, quand je selectionne un radio la valeur se transmet vers reponse.php, je fais une verification et de retour la meme valeur revient sur index.php, je la recupere par success

Re: Transmettre une donnee via un lien

par Cyrano » 01 août 2011, 09:37

...alors la, la valeur qui serait transmis de reponse.php vers index.php en jQuery serait ...
:shock: As-tu lu complètement et compris ce que j'ai écrit précédemment ???

Re: Transmettre une donnee via un lien

par rimie » 01 août 2011, 09:33


$nom = $_POST['nom'];

if($nom == '')
{
echo 'erreur';
}
else
{
echo $nom;
}
alors la, la valeur qui serait transmis de reponse.php vers index.php en jQuery serait par exemple (1), je la recupere en data:
success: function(data) {
                       
            if(data != 'erreur')
                {

// traitement ici
}

</script>

<?php
// ici je vais mettre ma requete suivant la valeur du data recu, par exemple:

SELECT * FROM table WHERE nom = $data;
?>

Re: Transmettre une donnee via un lien

par Cyrano » 01 août 2011, 09:04

Voila : tu reçois la donnée dans la super-globale $_POST, c'est ça qu'il est important de considérer. Et si aucun bouton radio n'est coché, tu ne recevras rien du tout.

Tu peux donc mettre en place d'abord une vérification que tu as bien reçu quelque chose, ensuite en fonction du résultat retourner un message d'erreur ou bien exploiter la donnée reçue pour construire ta requête SQL.

Traduit autrement, tu ne reçois rien « en Jquery », ce qui ne veut pas dire grand chose. Jquery n'est là que pour rendre l'ergonomie plus fluide. Les échanges entre client et serveur passent par le protocole HTTP qui transporte les informations dans un sens ou dans l'autre et la machine qui reçoit ces informations effectue alors les traitements appropriés. Coté serveur, c'est à toi de définir quel traitement doit être exécuté en fonction des informations alors que coté client, ce qui est reçu est du code client, le navigateur l'interprète et va l'afficher, mais tu construis ce qui est envoyé au navigateur en code client pour obtenir le rendu visuel souhaité et éventuellement les traitements et fonctionnalités dynamiques voulues en mettant, outre du HTML et des CSS, le code JavaScript nécessaire. Mais en résumé, il faut bien garder à l'esprit que tout ceci se passe à des moments différents : lorsque le serveur a fini de traiter et d'envoyer les données vers le client, il ne fait plus rien qu'attendre la prochaine requête HTTP de la part du client.

Je te suggère donc maintenant de reposer à plat ton problème de base : tu as une page avec un formulaire, tu veux effectuer quoi à partir des informations saisies ou sélectionnées dans ce formulaire ? Coté serveur, tu as besoin de quoi pour effectuer le traitement approprié pour pouvoir construire la page suivante avec le résultat ? Et surtout, quels sont les cas de figures possibles à partir de ton formulaire, ou encore, qu'est-ce qui serait possible d'obtenir ou non du formulaire et quelles en seraient les conséquences ?

Re: Transmettre une donnee via un lien

par rimie » 01 août 2011, 08:50

Ok jusque là : maintenant, coté serveur, ce sera reçu sous quelle forme ? Prenons la manière classique, tu sélectionne ton option et tu cliques sur le bouton d'envoi du formulaire, que va recevoir ton code reponse.php ?
$nom = $_POST['nom'];
echo $nom;
la reponse serait soit: 1, 2, 3 ou 4

Re: Transmettre une donnee via un lien

par Cyrano » 01 août 2011, 06:38

Ok jusque là : maintenant, coté serveur, ce sera reçu sous quelle forme ? Prenons la manière classique, tu sélectionne ton option et tu cliques sur le bouton d'envoi du formulaire, que va recevoir ton code reponse.php ?

Re: Transmettre une donnee via un lien

par rimie » 01 août 2011, 02:02

merci Cyrano pour l'explication, l'idee est de transmettre une valeur d'un radio en utilisant jQuery vers une page php, si c'est bon on recoit une reponse success, cette reponse aura comme valeur celle du radio, que je veux ulterieurement utiliser pour etablir mes requetes, par exemple:
<input type="radio" name="nom" value="1"> <br />
<input type="radio" name="nom" value="2"> <br />
<input type="radio" name="nom" value="3"> <br />
<input type="radio" name="nom" value="4"> <br />
lors du choix par exemple de "1", cette valeur serait transmis vers reponse.php, donc la valeur serait "1", en se basant sur la reponse on va construire une requete du type:
SELECT * FROM table WHERE champs = data
sachant que data est la valeur du radio (qui est 1)

Re: Transmettre une donnee via un lien

par Cyrano » 31 juil. 2011, 22:52

je pense pas qu'il y ait une methode pour passer des truc jQuery vers php
Salut Rimie,
tu mélanges deux choses bien distinctes. Jquery, donc du JavaScript, s'exécute sur la machine cliente, c'est intégré au navigateur. Le PHP pour sa part est exécuté coté serveur : la communication entre les deux est impossible directement puisque les deux s'exécutent à des moments différents. En revanche, il est toujours possible de transmettre vers le serveur des informations créées coté client avec du JavaScript en envoyant des paramètres via l'url de la requête HTTP qui sera appelée depuis la page en cours d'affichage. Tu pourrais aussi communiquer via les coockies, on peut faire faire en quelque sorte « coockie commun » entre PHP et JavaScript. Et sinon il reste aussi Ajax qui permet d'envoyer une requête HTTP vers le serveur pendant l'affichage de la page sans recharger celle-ci auquel cas tu peux envoyer les données avec la méthode GET ou la méthode POST au choix selon la complexité des données à envoyer, et tu peux pour ça ajouter une couche qui faciliterait la communication en utilisant le JSON (JavaScript Object Notation) que peut très bien interpréter PHP comme d'autres langages d'ailleurs.

Le chemin à suivre dépend donc de ce que tu veux faire et selon quels critères. TU mentionnes les boucles sous-entendant par là qu'il y aurait plusieurs liens à traiter... mais j'ai plus de mal à comprendre l'intérêt d'utiliser des liens dans un formulaire au lieu d'utiliser les fonctionnalités disponibles avec les formulaires HTML. Si au lieu d'une ancre ( <a> ) tu utilisais un bouton de formulaire ( <input type="button" />), lors du click, ça pourrait envoyer le formulaire et ton bouton pourrait avoir un gestionnaire d'évènement alimentant la valeur d'un champ caché lors du clic juste avant l'envoi du formulaire.

Analyse un peu ce qui se passe lorsque tu envoies un formulaire : qu'est-ce que reçoit le serveur ? S'il y a des boutons radio, quelle est leur particularité et qu'est-ce que va recevoir le serveur lors de la soumission du formulaire ? Et pourquoi ? Pareil pour des cases à cocher du reste...

Comme dit devlop78, tu as l'air de vouloir brûler les étapes avant d'avoir compris certains principes fondamentaux... :-k