Partage
  • Partager sur Facebook
  • Partager sur Twitter

ajax

Probleme

    9 mai 2010 à 21:37:36

    Bonjour les Zero étant débutant dans le domaine du JS je ne ses pas ou commencer cela est nouveau pour moi donc :S j'ai passer ma journée entière a lire le tuto sur SDZ et sur google. rien ne ressemble a ce que je veux faire alors voici mon problème:

    J'ai créer une banque virtuel en PHP dans des case qui sont appeler via des fonctions. example:
    <?php 
    function xxxx ()
    {
    }
    function index()
    {
    }
        switch ($op)
    {
    		case "index":
    		index();
                break;
    			
    		case "xxxx":
    		banque();
                break;	
    			
    	default:
    		index();
                break;
    	    } 
    ?>
    


    donc j'ai un formulaire (post) pour envoyer ma variable le nombre argent qu'il veux transférer dans une fonction qui a pour but de modifier la donné mais le problème ses que lorsque je vais le transfère il i a 2 changement page ce qui fait long donc je me suis renseigne afin qu'il Refresh juste la parti que je veux. exemple en image:
    Image utilisateur
    inscrit:la valueur au #1
    je valide au #2
    et je veux que le #3 Refresh sans Refresh tout la page

    je vous donne quelle que bout de mon code:
    Ma fonction:xfercvsb qui envoi les requete Sql
    <?php
    ////// Transfert des kamas de la personnage vers votre banque
    function xfercvsb ()
    {
    $kamascb = Securite::bdd($_POST["kamascb"]);
    $AcID = Securite::bdd($_POST["AcID"]);
    
    ///on inscrit dans la table inventaire + ? vers la table banque
    		$sql1 = mysql_query("UPDATE banque_web SET EbaKamas = EbaKamas + '".$kamascb."' WHERE EbaAccount = '".$_SESSION['_login']."'") or die (mysql_error());
    ///fin		
    ///on retire les kamas du compte
          $sql = mysql_query("UPDATE player_db SET Kamas = Kamas - " . $kamascb . " WHERE Account = '".$_SESSION['_login']."' and ID = '".$AcID."'") or die (mysql_error());
    ///fin	
    		echo "<font color=\"green\">Vos Kamas &agrave; bien &eacute;t&eacute; Transfert dans votre banque<br /> Vous serez redirig&eacute; vers la page pr&eacute;c&eacute;dente</font>";
    		 echo'<meta http-equiv="refresh" content="2; URL=banque.php?op=banque&amp;AcID=' . $AcID . '">';
    
    }
    ?>
    


    Ma fonction:banque
    <?php
    
    function banque($AcID)
    {
    /////////////////////////// Affichage des kamas ////////////////////////////
    	 echo"<table width=\"100%\" height=\"20\" border=\"1\">"
    	 ."<tr>"
    	 ."<td height=\"20\"><div align=\"right\"><big><b>".$BqKamas."</b></big></div></td>"
    	 ."</tr>"
    	 ."</table>";
    /////////////////////////// FIN Affichage des kamas ////////////////////////////
    	
    /////////////////////////////////-*KAMAS*-////////////////////////////////////////////
    	."<div id=\"kamasD\">"///Debut image Droite
    	."<table width=\"295\" border=\"1\">"///Block Droite Kamas
    	."<form method=\"post\" action=\"banque.php?op=xfercvsb\">"///Formulaire kamas coté Droite
    	."<tr>"
    	."<td width=\"80%\" height=\"50\">"	///champ kamas
    	."&nbsp;&nbsp;<input type=\"text\" style=\"font-size:18px\" dir=\"rtl\" onkeyup=\"verif_nombre(this);\" style=\"vertical-align:middle\" name=\"kamascb\" class=\"input\" size=\"21\" value=\"\"/><input name=\"AcID\" type=\"hidden\" class=\"input\" value=\"" . $AcID . "\"/>"
    	."</td>"/// FIN Champ pour nombre kamas
    	."<td width=\"20%\">"///valider le champ nombre kamas
    	. "&nbsp;<input type=\"image\" src=\"Banque/image/kamasok.png\" name=\"mdp\"/></form>\n"/// FIN valider le champ nombre kamas
    	."</td>"
    	."</tr>"
    	."</table>"///FIN Droit Kamas
    	."</div>"///FIN image Droite
    /////////////////////////////////-*FIN KAMAS*-////////////////////////////////////////////	 
    
    }
        switch ($op)
        	{
    			
    		case "banque":
    	include_once ('./includes/corp_haut.php');
    	include('includes/verif.php'); // Login si la vérification est ok : on aura accès au reste de la page.
    		banque($AcID);
    	include('./includes/corp_bas.php');
                break;	
    			
    		case "xfercvsb":
    	include_once ('./includes/corp_haut.php');
    	include('includes/verif.php'); // Login  si la vérification est ok : on aura accès au reste de la page.
    		xfercvsb();
    	include('./includes/corp_bas.php');
                break;	
    
    	default:
    		$titre = "Banque";
    	include_once ('./includes/corp_haut.php');
    	include('includes/verif.php'); // Login si la vérification est ok : on aura accès au reste de la page.
    		index();
    	include('./includes/corp_bas.php');
                break;
    	    } 
    ?>
    


    Voila si on va voir mon image plus haut j'aimerai que la page ne change pas et que quand tu entre les donnés juste le montant de la banque et du personnage change lors d'un transfert c'est possible mais comment merci de bien vouloir m'aider et me montre une exemple.

    si quelle un veux le tester afin de mieux comprend.
    voici une démo:Démo
    login: test
    pass: test
    • Partager sur Facebook
    • Partager sur Twitter
      10 mai 2010 à 1:27:33

      j'ai rien car je ne c'est pas ou commencer je comprend que rien en JAvascript :S

      en fait j'ai essayer avec les script du tutoriel mais bon alors la si je repart de zero et si j'ai bien compris le fichier de base.
      Fichier: oXHR.js
      function getXMLHttpRequest() {
      	var xhr = null;
      	
      	if (window.XMLHttpRequest || window.ActiveXObject) {
      		if (window.ActiveXObject) {
      			try {
      				xhr = new ActiveXObject("Msxml2.XMLHTTP");
      			} catch(e) {
      				xhr = new ActiveXObject("Microsoft.XMLHTTP");
      			}
      		} else {
      			xhr = new XMLHttpRequest(); 
      		}
      	} else {
      		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
      		return null;
      	}
      	
      	return xhr;
      }
      



      Édit: j'ai commencer je ses pas si je suis dans la bonne voix car la ses au piff.. :S

      ?>
      <script type="text/javascript">
      <!-- 
      var xhr = getXMLHttpRequest(); // Voyez la fonction getXMLHttpRequest() définie dans la partie précédente
      
      xhr.open("POST", "xfercvsb.php", true);
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr.send("kamascb="+kamascb+"&AcID="+kamascb+);
      </script>
      	<?php
      
      • Partager sur Facebook
      • Partager sur Twitter
        10 mai 2010 à 9:39:11

        huh?

        Pkoi t'as des balises php dans ton js? met le dans un fichier a part.

        Réfléchi...
        Tu entre une valeur dans ton input, quand tu clic sur ton bouton, tu appelle une fonction js qui va récuperer la valeur de ton input.
        Une fois cette valeur récupérée il faut que tu t'en serve pour changer les valeurs de ta banque et du porte monnaie.

        donc -> tu met un ID a l'input ou il met la valeur de l'argent, avec un petit onclick tu récupere cette valeur
        document.getElementById('id_input').value
        


        Après perso j'aurais fait un appel a une fonction PHP histoire de vérifier toute les valeurs, une fois les vérifications faites tu agit sur la base de donnée, tu récupere les nouveaux résultats et tu change la valeur de l'affichage ( ils faut qu'ils soient identifiable sur le document, donc un ID particulier pour chacun d'entre eux )
        • Partager sur Facebook
        • Partager sur Twitter
          10 mai 2010 à 18:17:16

          Formulaire:
          ."<form>"///Formulaire kamas coté Droite
          	."<tr>"
          	."<td width=\"80%\" height=\"50\">"	///champ kamas
          	."&nbsp;&nbsp;<input type=\"text\" style=\"font-size:18px\" dir=\"rtl\" onkeyup=\"verif_nombre(this);\" style=\"vertical-align:middle\" name=\"kamascb\" class=\"input\" size=\"21\" value=\"\"/><input name=\"AcID\" type=\"hidden\" class=\"input\" value=\"" . $AcID . "\"/>"
          	."</td>"/// FIN Champ pour nombre kamas
          	."<td width=\"20%\">"///valider le champ nombre kamas
          	. "&nbsp;<input type=\"image\" onclick=\"request();\" src=\"Banque/image/kamasok.png\" name=\"mdp\"/></form>"
          


          script ajax:
          <script> type="text/javascript" src="Banque/include/oXHR.js"></script>
          <script type="text/javascript">
          <!-- 
          function request() 
          {
          var xhr = getXMLHttpRequest(); // Voyez la fonction getXMLHttpRequest() définie dans la partie précédente
          document.getElementById("kamascb").value
          document.getElementById("AcID").value
          
          xhr.open("POST", "xfercvsb.php", true);
          xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          xhr.send("kamascb="+kamascb+"&AcID="+AcID+);
          }
          </script>
          


          Fichier: oXHR.js

          /* ** cartouche ********************************************************************* */
          /* Script complet de gestion d'une requête de type XMLHttpRequest                     */
          /* Par Sébastien de la Marck (aka Thunderseb)                                         */
          /* ********************************************************************************** */
          
          function getXMLHttpRequest() {
          	var xhr = null;
          	
          	if (window.XMLHttpRequest || window.ActiveXObject) {
          		if (window.ActiveXObject) {
          			try {
          				xhr = new ActiveXObject("Msxml2.XMLHTTP");
          			} catch(e) {
          				xhr = new ActiveXObject("Microsoft.XMLHTTP");
          			}
          		} else {
          			xhr = new XMLHttpRequest(); 
          		}
          	} else {
          		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
          		return null;
          	}
          	
          	return xhr;
          }
          


          Affichage des Kamas:
          ."<td height=\"20\"><div align=\"right\" id=\"kamascb\"><big><b>".$BqKamas."</b></big></div></td>"
          


          Fichier:xfercvsb.php
          <?php
          $kamascb = Securite::bdd($_POST["kamascb"]);
          $AcID = Securite::bdd($_POST["AcID"]);
          
          	$sql = mysql_query("SELECT Kamas FROM player_db WHERE ID = '".$AcID."'")or die(mysql_error());
          		list($EKamas) = mysql_fetch_row($sql);
          		
          /////////////////////////////////////CONDITION////////////////////////////////////////		
          		
          if($kamascb > $EKamas)///condition si il mes plus que ce qu'il a dans son inventaire
          {
          		echo "<font color=\"red\">Vous n'avez pas assez de Kamas ! <br /> Vous serez redirig&eacute; vers la page pr&eacute;c&eacute;dente</font>";
          		 echo'<meta http-equiv="refresh" content="2; URL=banque.php?op=banque&amp;AcID=' . $AcID . '">';
          		include('./includes/corp_bas.php');
          		exit;
          }
          if($kamascb == "")///condition si il mais rien dans le champ
          {
          	echo "<font color=\"red\">On ne peu pas rien vous tranf&eacute;rer rien!  ! <br /> Vous serez redirig&eacute; vers la page pr&eacute;c&eacute;dente</font>";
          	 echo'<meta http-equiv="refresh" content="2; URL=banque.php?op=banque&amp;AcID=' . $AcID . '">';
          	include('./includes/corp_bas.php');
          	exit;
          }
          if($kamascb <= "0")///condition si il met un chiffre negatif
          {
          	echo "<font color=\"red\">Pourquoi veux tu aller dans les moins???  <br /> Vous serez redirig&eacute; vers la page pr&eacute;c&eacute;dente</font>";
          	 echo'<meta http-equiv="refresh" content="2; URL=banque.php?op=banque&amp;AcID=' . $AcID . '">';
          	include('./includes/corp_bas.php');
          	exit;
          }
          /////////////////////////////////FIN/CONDITION////////////////////////////////////////
          
          ///on inscrit dans la table inventaire + ? vers la table banque
          		$sql1 = mysql_query("UPDATE banque_web SET EbaKamas = EbaKamas + '".$kamascb."' WHERE EbaAccount = '".$_SESSION['_login']."'") or die (mysql_error());
          ///fin		
          ///on retire les kamas du compte
                $sql = mysql_query("UPDATE player_db SET Kamas = Kamas - " . $kamascb . " WHERE Account = '".$_SESSION['_login']."' and ID = '".$AcID."'") or die (mysql_error());
          ///fin	
          ///		echo "<font color=\"green\">Vos Kamas &agrave; bien &eacute;t&eacute; Transfert dans votre banque<br /> Vous serez redirig&eacute; vers la page pr&eacute;c&eacute;dente</font>";
          	///	 echo'<meta http-equiv="refresh" content="2; URL=banque.php?op=banque&amp;AcID=' . $AcID . '">';
          		 
          ?>
          


          Tu peu me dire pourquoi sa ne marche pas. j'ai mis
          document.getElementById('id_input').value
          

          dans mon script et il ne marche pas encore svp aidé moi! :S
          • Partager sur Facebook
          • Partager sur Twitter
            11 mai 2010 à 8:50:06

            Et bien tu envoi tes valeurs a une fonction php qui va traiter tout ca, mais est-ce que tu récupère ces valeurs? et si oui, est-ce que tu les appliques sur ton code?

            je voit aucun innerhtml pour changer l'affichage de ta page
            • Partager sur Facebook
            • Partager sur Twitter
              11 mai 2010 à 15:12:15

              Un innerHTML te sert a changer la valeur d'un affichage a un endroit précis de ton code identifiable par un ID généralement :)

              du genre tu veut changer la valeur d'un div :

              <div id="valeur_kama_coffre">18754</div>
              

              tu fait une manip js :
              document.getElementById("valeur_kama_coffre").innerHTML="22666"
              


              et ca t'affichera ca sur le code source de ta page :

              <div id="valeur_kama_coffre">22666</div>
              


              • Partager sur Facebook
              • Partager sur Twitter
                11 mai 2010 à 20:54:33

                si la valeur est dans ma base de donnée il faut que j'inser quoi ?
                document.getElementById("valeur_kama_coffre").innerHTML="+valeur+"?????

                • Partager sur Facebook
                • Partager sur Twitter
                  12 mai 2010 à 8:41:06

                  non, pour allez chercher une valeur dans la base de donnée faut un script php qui aille la récupérer.

                  J'ai une méthode perso :

                  function requeteetReponse (fichier) {
                      if (window.XMLHttpRequest) {      // FIREFOX
                          xhr_object = new XMLHttpRequest();
                      } else if(window.ActiveXObject) { // IE
                          xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                      } else {
                          return (false);
                      }
                      xhr_object.open("GET", fichier, false);
                      xhr_object.setRequestHeader("Content-type", "text/html; charset=ISO-8859-1");
                      xhr_object.send(null);
                      
                      if(xhr_object.readyState == 4) {
                      
                      return (xhr_object.responseText);
                              
                      } else {
                          return (false);
                      }
                  }
                  


                  Ce code permet de récupérer la reponse de l'url envoyer en paramètre ( responseText )

                  donc je met l'url de mon script et tout les "echo" qui s'y trouve seront récupérés en valeur de retour par cette fonction

                  donc si dans ton script php tu as par exemple :
                  <?php
                  $cnx=mysql_connect(********);// je detaille pas
                  $id=$_GET['id'];
                  
                  $requete=mysql_query("select montant_kama from table1 where id='".$id."'")or exit(mysql_error());
                  echo mysql_result($requete, 0);
                  


                  donc si je fait ca :
                  var id=document.getElementById('id').value;
                  var url="script.php?id="+id;
                  var valeur=requeteetReponse(url);
                  alert(valeur);
                  


                  ca m'affiche la valeur. J'ai condensé donc c'est un exemple basique.

                  Je fais comme ça personnellement.. mais c'est un exemple il y a plein d'alternatives possibles.
                  Commence par lire les cours d'ajax pour mieux comprendre comment ça marche ;)

                  Içi le lien pour les cours du SdZ : Cours AJAX
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 mai 2010 à 11:05:47

                    De l'Ajax non Asynchrone ? Boarf... :euh:
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 mai 2010 à 11:16:13

                      Ben pour ce type de requete, jvoit pas l'interet puisque tu n'affiche rien tant que t'as pas le résultat :/
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 mai 2010 à 11:23:09

                        Mouais, mais tu subis le lag de la connexion quoi...
                        • Partager sur Facebook
                        • Partager sur Twitter

                        ajax

                        × 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