Partage
  • Partager sur Facebook
  • Partager sur Twitter

ajax et fonction php

    12 mars 2011 à 17:22:17

    Bonjour,

    J'ai une page dans laquelle il y a 2 fonctions; une pour afficher une légende et l'autre pour modifier celle-ci. J'aimerais bien appeler, en ajax, la fonction de modification dans la première...

    Comment faut-il faire ?

    Merci pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2011 à 20:09:00

      je comprends pas trop tu peux être plus précis stP?? :$
      • Partager sur Facebook
      • Partager sur Twitter
        12 mars 2011 à 20:45:14

        J'ai 2 fonctions sur ma page php. Dans la première je "fais de l'ajax" qui appelle la deuxieme fonction.

        J'aimerais bien savoir comment je pourrais faire parce que pour le moment j'appelle une autre page php qans laquelle j'inclus la page dans laquelle je travail et j'appelle la deuxieme fonction... Je trouve ca un peu lourd...
        • Partager sur Facebook
        • Partager sur Twitter
          13 mars 2011 à 11:49:33

          Ma page php avec mes 2 fonctions :

          <?php
          // $membre = id du membre qui a ajouté la photo
          // $photo = id de la photo dont la légende appartient
          function legende($membre, $photo) {
          	
          	?>
              <script language="javascript" type="text/javascript">
          	var xhrModif = null;
          	var xhrLegende = null;
          	
          	function requestModif() {
          		if(xhrModif && xhrModif.readyState != 0)
          		{
          			return;
          		}
          		
          		var xhrModif = new XMLHttpRequest();
          		
          		xhrModif.onreadystatechange = function() {
          			if(xhrModif.readyState == 4 && (xhrModif.status == 200 || xhrModif.status == 0))
          			{
          				document.getElementById("modifier_legende").style.display="none";
          				document.getElementById("bouton_modifier").style.display="block";
          				document.getElementById("legende").style.display="block";
          				document.getElementById("texte").innerHTML = xhrModif.responseText;
          				xhrModif.abort();
          			}
          		}
          		
          		var legende = encodeURI(document.getElementById("text_legende").value);
          		var photo = encodeURI(document.getElementById("id_photo").value);
          		
          		xhrModif.open("POST","membre/connecte/legende_jsa.php",true);
          		xhrModif.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          		xhrModif.send("legende="+legende+"&photo="+photo);
          	}
          	
          	function requestLegende(photo) {
          		if(xhrLegende && xhrLegende.readyState != 0)
          		{
          			return;
          		}
          		
          		var xhrLegende = new XMLHttpRequest();
          		
          		xhrLegende.onreadystatechange = function() {
          			if(xhrLegende.readyState == 4 && (xhrLegende.status == 200 || xhrLegende.status == 0))
          			{
          				callBackLegende(xhrLegende.responseText);
          			}
          		}
          		
          		xhrLegende.open("POST","membre/connecte/legende_jsa.php",true);
          		xhrLegende.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          		xhrLegende.send("photo="+photo);
          	}
          	
          	function callBackLegende(legende) {
          		if(legende!="")
          		{
          			document.getElementById("legende").style.display="block";
          			document.getElementById("bouton_modifier").style.display="block";
          			document.getElementById("modifier_legende").style.display="none";
          			document.getElementById("bouton_ajouter").style.display="none";
          			document.getElementById("texte").innerHTML = legende;
          		}
          		else
          		{
          			document.getElementById("legende").style.display="none";
          			document.getElementById("bouton_modifier").style.display="none";
          			document.getElementById("bouton_ajouter").style.display="block";
          			document.getElementById("modifier_legende").style.display="none";
          		}
          		xhrLegende.abort();
          	}
          	
          	function basculer() {
             		document.getElementById("legende").style.display="none";
          		document.getElementById("bouton_modifier").style.display="none";
          		document.getElementById("bouton_ajouter").style.display="none";
          		document.getElementById("modifier_legende").style.display="block";
             	}
          	</script>
              <?php
          	
          	// Le champ pour modifier la légende
          	echo "<div id='modifier_legende' style='display:none;'>";
          		echo "<form>
                          <textarea maxlength='200' rows='2' cols='60' id='text_legende' name='text_legende'></textarea><br>
          				<input type='hidden' id='id_photo' name='id_photo' value='".$photo."' >
                          <input type='button' onClick='requestModif()' value='Modifier'>
          			</form>";
          	echo "</div>";
          
          	// L'encadré de la légende
          	echo "<div id='legende' style='display:none;'>";
          		echo "<div id='texte' class='font_bleu_clair legende'></div>";
          	echo "</div>";
          		
          	if($_SESSION['id'] == $membre) // Si le membre qui visionne la photo est celui qui l'a envoyée, on lui permet de la modifiée
          	{
          		// Bouton permettant la modification de la légende
          		?>
          		<a id="bouton_modifier" href="#" class="font_bleu_fonce bouton" onClick="basculer(); return false;" style="display:none">Modifier la l&eacute;gende</a>
          		<?php
          		echo "<a id='bouton_ajouter' href='#' class='font_bleu_fonce bouton bouton_ajouter_legende' onClick='basculer(); return false;' style='display:none'>Ajouter une l&eacute;gende</a>";
          	}
          	
          }
          
          // $nouvelle_legende = La nouvelle légende
          // $photo = L'id de la photo dont il faut modifier la légende
          function modifier($nouvelle_legende, $photo) {
          	mysql_query("UPDATE photos SET legende='".$nouvelle_legende."' WHERE id='".$photo."'");
          }
          ?>
          


          Ma page php qui me permet, pour le moment, d'appeler la 2ème fonction :

          <?php
          // Page appelée par le javascript de la page afficher_legende.php
          include("../../connexion_bdd.php");
          
          // Si on reçoit une nouvelle légende et l'id de la photo dont il faut modifier la legende
          if(!empty($_POST['legende']) and !empty($_POST['photo']))
          {
          	include("afficher_legende.php");
          	modifier($_POST['legende'],$_POST['photo']);
          	echo $_POST['legende'];
          }
          
          // Sinon, si je ne reçois que l'id de la phot, on recupère la légende pour voir si elle n'est pas vide
          elseif(!empty($_POST['photo']))
          {
          	$sql = mysql_query("SELECT legende FROM photos WHERE id='".$_POST['photo']."'");
          	$donnee = mysql_fetch_array($sql);
          	echo $donnee['legende'];
          }
          
          mysql_close();
          ?>
          
          • Partager sur Facebook
          • Partager sur Twitter
            13 mars 2011 à 15:15:55

            en fait si j'ai bien compris tu voudrais que la légende que tu affiche ait un évennement onclick qui déclencherait une fonction de modification??
            • Partager sur Facebook
            • Partager sur Twitter
              19 mars 2011 à 16:21:25

              Oui c'est ça : un onclick qui appelle une fonction js, qui elle appelle une fonction php.
              • Partager sur Facebook
              • Partager sur Twitter
                21 mars 2011 à 12:43:23

                donc dans ta fonction JS il faut que tu déclare un objet XMLHttpRequest (cf. tuto javascript) qui lui déclenchera ton php
                • Partager sur Facebook
                • Partager sur Twitter
                  21 mars 2011 à 13:14:22

                  Oui c'est ce que j'ai fait... Mais pour le moment ça appel une page php qui elle appelle la fonction en question... Et je me demandais si on pouvait appeller directement la fonction php sans passer par un page intermédiaire.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  ajax et fonction php

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown