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

Langage PHP Discussion :

[PHP-JS] appel fonction par bouton


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut [PHP-JS] appel fonction par bouton
    Bonjour,
    Je sais qu'en javascript, on appelle une fonction par un bouton avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <input type = "button" value = "Ok" OnClick="correction()">
    Peut-on faire la même chose pour appeler une fonction PHP ? J'ai essayé le code suivant mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    	function correction()
    	{
    	echo .....
                 }
    ?>
    <form method = "POST">
    <input type = "button" value = "Ok" OnClick="<?php correction(); ?>">
    </form>
    Merci de votre aide.

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Le HTML et le javascript sont interprétés par le client. C'est pour ça que l'on peut appeler une fonction javascript dans un bouton HTML.

    Le php, lui, est interprété par le serveur. Le client ne connaissant pas le php, tu ne peux pas l'exécuter à partir d'un bouton HTML.

    Par contre, tu peux exécuter du code javascript qui envoie une requête sur le serveur web, qui exécute du code php.

    Mais pour savoir ce qui pourrait te convenir, il faut que tu nous expliques ce que tu veux faire...

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    *Grillé*

    En fait tu veut exécuter des scripts PHP lorsqu'on clic sur un bouton ? Le PHP doit-il retourner ou non des valeurs ? Dans tous les cas la c'est de l'AJAX qu'il faudrait utiliser ou convertir tes fonction PHP en JS si c'est possible (généralement non ).

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    Je vous remercie de vos réponses rapides.

    >> Meliandah

    Je souhaite écrire en PHP plutôt qu'en Javascript parce que mon script fait appel à des fichiers .txt pour y chercher des données. Le Javascript permet-il d'accéder à des fichiers texte en lecture ? Si oui, mon problème d'utiliser un bouton pour appeler une fonction serait résolu.

    >> Eusèbe

    Voici ce que je veux faire :
    1. l'utilisateur entre une réponse à une question
    2. l'utilisateur clique sur un bouton "ok" qui lance une fonction de vérification de la validité de la réponse
    2. la fonction en question vérifie la validité de la réponse en la comparant aux données d'un fichier texte.

    Si j'inclus le code de cette fonction à la suite du formulaire, le programme interprète aussitôt cette fonction avant que l'utilisateur ait entré la réponse. Afin d'obliger le programme à attendre l'entrée de l'utilisateur pour vérifier la validité de la réponse, j'ai eu l'idée de créer une fonction qui ne sera envoyée qu'après un clic sur un bouton.

    Merci encore de vos idées.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    >>> Eusèbe
    Vous me suggérez :

    Par contre, tu peux exécuter du code javascript qui envoie une requête sur le serveur web, qui exécute du code php.

    Cela se fait comment ? Merci

    >>> Meliandah
    Vous me demandez :

    Le PHP doit-il retourner ou non des valeurs ?

    Non, pas de valeur en retour, mais un message pour l'utilisateur du type :
    "Erreur ! réssayez encore..."

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce que tu decris est un formulaire classique :
    L'utilisateur remplit des champs puis valide le formulaire.
    Le champs du formulaire sont envoyés a une page PHP qui les traite.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    Merci de votre réponse.
    Je vais donc procéder comme vous le dites du fait que ce que je souhaitais n'est pas possible.

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Tu peut faire un formulaire simple qui traitera la réponse et redirigera l'utilisateur non ? :o Est-ce que tu es obligé de rester sur la même page ou tu peut rafraichir et/ou partir ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    Du fait qu'il s'agit d'un exercice, l'utilisateur doit revenir sur le programme afin de poursuivre les questions. Comment se fait le retour sur la page ? Est-il automatique ou faut-il programmer une ligne de code à cet effet ?

    Merci beaucoup pour l'attention que vous portez à mes questions.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    J'ai testé des tas de choses mais rien n'est satisfaisant. Le retour à la page d'exercices ne se fait pas automatiquement. Il faut réouvrir le fichier texte de données sur la page traitant l'information du formulaire. De ce fait les lignes "question" et "réponse" ne sont plus synchro...

    L'exercice proposé à l'utilisateur comporte une boucle affichant l'une après l'autre chaque ligne du fichier texte sur lequel sont enregistrés questions et réponses. L'idéal serait de contrôler la validité de la réponse utilisateur sur la page d'exercice elle-même, puis de poursuivre la boucle jusqu'à la fin du fichier texte.

    Est-ce que cela est impossible (auquel cas j'abandonne) ?

    Je vous remercie de m'éclairer.

  11. #11
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Non ce n'est pas impossible. Ci-dessous une proposition de méthode pour le réaliser.

    Tout d'abord, il faut que ton formulaire renvoie sur la même page (par exemple exercice.php).

    Pour simplifier le traitement, tu peux envoyer les réponses de ton formulaire au serveur dans un tableau reponses (pour ça, la propriété name des balises input des réponses doit être de la forme 'reponses[]').

    Ensuite, dans ta page exercice.php, tu testes la variable $_POST['reponse'] : si la variable n'existe pas, c'est le premier accès, et tu n'affiches que la première question. Si elle existe, tu la récupères. C'est un tableau qui contient à l'indice 0 la réponse à la question 1, à l'indice 1 la réponse à la question 2, etc...

    Tu peux donc tester les réponses et afficher le nombre voulu de questions dans ton formulaire (en mettant les réponses validées dans des balises input non modifiables).

    Est-ce que c'est clair, et est-ce bien ce que tu veux faire ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    Je vous remercie pour votre longue réponse. C'est bien ce que je voudrais faire mais là, je suis dépassé. Je vais me contenter du javascript et inclure les données dans le code de la page.
    Merci encore pour le temps que vous avez consacré à me répondre.

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Sinon oui tu peut tout traiter en javascript en mettant tes données texte dans des variables JS, tu peut les écrire avec PHP (il les écrira au tout debut et donc tu ne peut pas les changer en cour de route), sinon tu regarde du côté de l'ajax pour pouvoir executer du PHP qui te renverra les données des fichiers texte sans que sa ne rafraichisse.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    Je ne connais pas du tout l'Ajax. Ce langage est-il supporté par tous les hébergeurs ? Du moins par tous les hébergeurs qui acceptent le PHP ? Ce langage est-il interprété côté serveur ou côté client ?
    merci

    13.05

    Je suis allé visiter des sites présentant Ajax... C'est peut-être bien la solution à mon problème... Je vais m'atteler à comprendre tout ça... Merci encore pour cette piste intéressante.

  15. #15
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour, l'ajax n'est pas un langage, mais une méthode d'utilisation de divers éléments (javascript et XML principalement). Sauf erreur (la flemme de (re)chercher) ça signifie Asynchronous Javascript And Xml. le javascript est un langage interprété par le client, donc ça fonctionne quel que soit l'hébergeur... mais pas forcément quel que soit le navigateur . Pour le XML, c'est simplement le format utilisé en ajax pour l'échange de données entre le client et le serveur. Le XML peut facilement être remplacé par d'autres 'systèmes' de représentation de données, comme le JSON par exemple.

    Côté serveur, il faut utiliser un langage qui peut représenter les données dans le format souhaité (XML, JSON, ou autre), et le php suffit largement

  16. #16
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Oui l'AJAX est un concept de programmation, en fait tu va simplement utiliser 1 objet JavaScript prévu à cet effet ( XhttpXmlRequest ou quelque chose du genre), donc en fait c'est du javascript. L'objet va demander une page au serveur mais au lieu que ce soit ton navigateur qui reçoive la réponse c'est cet objet JavaScript, cela te permet donc de modifier ton site dynamiquement sans aucun rechargement de page.
    Pour utiliser l'AJAX très facilement je te conseil fortement d'utiliser la librarie JQuery (librarie JavaScript)

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Points : 64
    Points
    64
    Par défaut
    Merci de partager vos connaissances.

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

Discussions similaires

  1. appel de fonction par bouton poussoir
    Par celtic29 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 02/05/2012, 11h51
  2. Bouton appel fonction par rapport à résultat
    Par Seboochoo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 25/03/2011, 18h43
  3. Appel JSFL par bouton
    Par carter15_2001 dans le forum Flash
    Réponses: 3
    Dernier message: 26/02/2008, 09h13
  4. [VB.Net] Problème appel fonction par un bouton
    Par balibo dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/11/2005, 10h48

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