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 :

Javascript + fonction php


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 10
    Points
    10
    Par défaut Javascript + fonction php
    Bonsoir,
    Bon je vais peut être me faire lyncher pour oser poser une question surement stupide ^^ farfelu sortit d'un imaginaire inexistant
    Bref pour m'entrainer au php et au Javascript je code un petit site perso.
    L'une de mes pages me permet d'ajouter des commentaires sur des articles.
    Bref ma page AjCom.php contient inclue les fichiers FonctionPHP.php et FonctionJavaScript.js
    Et un formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form name='formulaire' onSubmit='return Contact_Validator();' method='post' enctype='multipart/form-data' >
    	<h3>Pseudo : <input name='Pseudo' id='Pseudo' type='text' />
    	</h3>
     
    	<h3>E Mail : <input name='Mail' id='Mail' type='text' />
    	</h3>
    	<h3>Date: <input name='Date' id='Date' type='text' />
    	</h3>
    	<div align='right'>
    	  <textarea name='TextCom' id='TextCom' cols='50' rows='10'>Entrez votre texte ICI</textarea>
    	  <input name='Annuler' type='button' value='Annuler'/>
    	  <input name='Valider' type='button' value='Valider' onClick='document.pressed=this.value'
    />
    </div></form>
    la fonction Javascript appelé est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <SCRIPT LANGUAGE="JavaScript">
    function Contact_Validator()
    {	
    	if (document.pressed == "Valider")
    	{
    	   document.formulaire.action="<? CreCom($_GET['page'],$_POST['Pseudo'],$_POST['Mail'],$_POST['TextCom'],$_POST['Date'])?>";
    	}
    }
    </script>
    Et la fonction php qu'il appelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?
    function CreCom($idActu,$Pseudo,$Email,$TxtCom,$Date)
    {
    	$requete="INSERT INTO `pbgn`.`Com` (`IdCom`, `IdActu`, `Pseudo`, `EMail`, `TxtCom`, `Date`) VALUES (NULL, '".$idActu."', '".$Pseudo."', '".$Email."', '".$TxtCom."', '".$Date."');";      
    	$result=mysql_query ($requete);
    	if (!$result) {
    	die("Requête invalide : " . mysql_error());}
    	while ($row = mysql_fetch_assoc($result)) {
    	print "Commentaire ajouté ^^";
        }
    }
    ?>
    Visiblement la fonction javascript appelle bien ma fonction php car dans ma bdd un enregistrement est inséré ... Seulement les champs sont tous vide
    Donc bon ne trouvant pas la solution à ma bêtise, je vous demande un petit coup de pouce
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    vérifis que tes données sont postées , coté serveur

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Comment je pourrais vérifier que c'est bien posté coté serveur ? Là j'ai plutôt l'impression qu'elle ne le sont pas ^^

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <? CreCom($_GET['page'],$_POST['Pseudo'],$_POST['Mail'],$_POST['TextCom'],$_POST['Date'])?>
    que fais cette méthode ??

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut,
    Juste pour m'oter un doute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.formulaire.action="<? CreCom($_GET['page'],$_POST['Pseudo'],$_POST['Mail'],$_POST['TextCom'],$_POST['Date'])?>";
    J'espère que tu n'attend pas que JavaScript va exécuter ta fonction PHP

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    d'ou m'a question ...

    cette méthode renvoi bien une string indiquant l'url à appeler ???

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    le_chomeur > s'était "cencé" appelé la fonction php avec en paramètre les valeurs récupéré dans mon formulaire.

    Bovino > Je crois que c'est ce que je cherchais à faire, ce qui n'est pas trop logique, ceci dit ça appelle quand même ma fonction mais cela m'insère des blanc dans ma table

    Comme je l'ai dit plus tôt je cherche à apprendre (un peu plus) en php/Javascript. Partant du point de vu que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick='document.pressed=this.value'
    appelle une fonction javascript, je ne pouvais pas appeler ma fonction php de cette façon, en réflexion avec un ami, il m'a conseillé de l'appeler avec une fonction javascript qui serait elle appelé dans le onClic.
    En cherchent un peu sur le net pour comprendre mon erreur, j'ai cru comprendre que ce que je fait c'est pas possible XD (vu que le php est exécuté côté serveur/ javascript coté client ....)
    Fin bref là j'en suis à pas savoir comment me dépêtrer dans ce que je veux faire.
    Donc ma question en gros c'est ai-je un moyen de m'en sortir via Javascript, où alors sur quel raisonnement repartir pour appelé ma fonction PHP ?

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    j'ai cru comprendre que ce que je fait c'est pas possible XD (vu que le php est exécuté côté serveur/ javascript coté client ....)
    Tu as bien compris
    Le seul moyen en JavaScript de récupérer des données venant du serveur est d'utiliser Ajax (un mot qui fait souvent peur, mais ce n'est pas spécialement compliqué).
    http://ajax.developpez.com/cours/
    http://gael-donat.developpez.com/web/intro-ajax/
    http://siddh.developpez.com/articles/ajax/
    http://dmouronval.developpez.com/tut...-requete-ajax/
    par exemple

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    C'est ce que j'ai compris aussi
    Mais merci pour les liens ils vont être utile ^^ ... J'ai pas encore eue l'occasion de tester Ajax (je mettais fait bouler à l'entretient d'un stage parce que je connaissais pas ce langage d'ailleurs)
    C'est l'occasion de me former un peu sur ce sujet
    Je potasse et teste cela et je viendrais vous dire où j'en suis, où crier grâce ou help si je tombe sur un os

    Chui une grande fille j'édite plutôt que double poster
    Avec un peu de potassement de ce que j'ai trouvé en fin d'aprem et une lecture rapide des quelques lien donnée auparavant (bon ok chui un peu fainéante j'ia été direct aux points qui semblaient me concerné)
    J'en suis là :
    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
     
    <script language="javascript" type="text/javascript">
    function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr
    			}
     
    function submitForm(url,NumActu,Pseudo,Mail,TextCom,DateCom){
    	var xhr = getXhr()
    	// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						alert(xhr.responseText);
    					}
    				}
    				xhr.open("GET", url, true);
    				xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    				var data = "$NumActu="+NumActu+"$Pseudo="+Pseudo+"$Mail="+Mail+"$TextCom="+TextCom+"$DateCom="+DateCom;
    				alert ("valeurs envoyees: "+data);
    				xhr.send(data);
    			}
    }
    </script>
    Niveau formulaire j'ai changé celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input name='Valider' type='button' value='Valider' onClick='submitForm('FonctionPHP.php',<?php $NumActu.\"','\".&Pseudo.\"','\".&Mail.\"','\".&TextCom.\"','\".&DateCom.\"'\".; ?>);'/>
    Ma fonction php n'a pas changé ...
    Fin bon cela ne marche pas j'ai du surement oublier quelque chose dans ma tentative d'AJAX,la question est quoi ?
    Où alors j'ai strictement rien comprit et je peu retourner lire plus en détail

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,
    xhr.open("GET", url, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var data = "$NumActu="+NumActu+"$Pseudo="+Pseudo+"$Mail="+Mail+"$TextCom="+TextCom+"$DateCom="+DateCom;
    alert ("valeurs envoyees: "+data);
    xhr.send(data);
    1-Avec la methode "GET" tu dois passer les variables en URL. C'est la methode POST que tu dois utiliser avec cet écriture.
    2-La séparation des variables est "&" mais pas "$".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xhr.open("POST", url, true);
    				xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    				var data = "NumActu="+NumActu+"&Pseudo="+Pseudo+"&Mail="+Mail+"&TextCom="+TextCom+"&DateCom="+DateCom;
    				alert ("valeurs envoyees: "+data);
    				xhr.send(data);
    <input name='Valider' type='button' value='Valider' onClick='submitForm('FonctionPHP.php',<?php $NumActu.\"','\".&Pseudo.\"','\".&Mail.\"','\".&TextCom.\"','\".&DateCom.\"'\".; ?>);'/>
    La chaine sur la fonction submitForm est tronqué.

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    andry.aime > Correction apportés ^^

    J'en suis là dans mon javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	xhr.open("POST","FonctionPhp.php", true);
    				Pseudo=document.getElementById('Pseudo').value;
    				Mail=document.getElementById('Mail').value;
    				TextCom=document.getElementById('TextCom').value;
    				DateCom=document.getElementById('DateCom').value;
    				xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    				var data = "NumActu="+NumActu+"&Pseudo="+Pseudo+"&Mail="+Mail+"&TextCom="+TextCom+"&DateCom="+DateCom;
    				alert ("valeurs envoyees: "+data);
    				xhr.send(data);
    			}
    Là j'appelle la fonction javascript dans mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name='Valider' type='button' value='Valider' onClick='submitForm($NumActu);'/>
    Le problème qui se pose c'est au niveau du javascript il récupère bien les valeurs dans mon formulaire sa c'est bon mais toujours aucunes lignes d'insérer dans ma table ...
    Ma fonction php CreCom() est stocké dans la page FonctionPhp.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?
    function CreCom($idActu,$Pseudo,$Email,$TxtCom,$Date)
    {
    	$requete="INSERT INTO `pbgn`.`Com` (`IdCom`, `IdActu`, `Pseudo`, `EMail`, `TxtCom`, `Date`) VALUES (NULL, '".$idActu."', '".$Pseudo."', '".$Email."', '".$TxtCom."', '".$Date."');";      
    	$result=mysql_query ($requete);
    	if (!$result) {
    	die("Requête invalide : " . mysql_error());}
    	while ($row = mysql_fetch_assoc($result)) {
    	print "Commentaire ajouté ^^";
        }
    }
    ?>
    Donc je suppose que mes données son bien envoyé sur la page car "l'alerte valeur envoyé" est bien affiché mais que ensuite ma fonction Crecom() n'est pas appelé (je précise qu'il y a d'autre fonction php sur la même page)
    ... Comme je connais pas trop l'ajax n'y le javascript je suis surement passé a côté de quelque chose

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    Tu nous montres que la fonction php. Comment tu récupères les variables envoyés? Comment tu appelles la fonction (CreCom)?

  13. #13
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Voilà ce qui me manquais dans ma page FonctionPhp.php, je me disais bien qu'il manquait un truc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    if (isset($_POST['NomFonction'])=='CreCom')
    {
    CreCom($_POST['NumActu'],$_POST['Pseudo'],$_POST['Mail'],$_POST['TextCom'],$_POST['DateCom']);
    }
    ?>
    Pour ce qui est de mon javascript je lui ai juste rajouté un paramètre supplémentaire qui est le nom de la fonction à appeler (ici CreCom)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    			NomFonction='CreCom';
    				Pseudo=document.getElementById('Pseudo').value;
    				Mail=document.getElementById('Mail').value;
    				TextCom=document.getElementById('TextCom').value;
    				DateCom=document.getElementById('DateCom').value;
    				xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    				var data = "NomFonction="+NomFonction+"&NumActu="+NumActu+"&Pseudo="+Pseudo+"&Mail="+Mail+"&TextCom="+TextCom+"&DateCom="+DateCom;
    				//alert ("valeurs envoyees: "+data);
    				xhr.send(data);
    Bref me reste plus qu'a me débarrasser des pop up d'alerte ci c'est possible ... En tout cas mon problème est résolut

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

Discussions similaires

  1. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  2. [PHP-JS] appel d'une fonction javascript en php
    Par notour dans le forum Langage
    Réponses: 7
    Dernier message: 13/04/2007, 13h47
  3. [PHP-JS] Passage de paramètre de Javascript vers fonction Php
    Par winnie82 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2006, 10h06
  4. [PHP-JS] une fonction php avec parametres javascript
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 02/03/2006, 18h10
  5. [Javascript] execution fonction php
    Par marion782 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/02/2006, 22h58

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