Partage
  • Partager sur Facebook
  • Partager sur Twitter

JS et PHP: transmission de variables

    12 décembre 2010 à 15:48:55

    Bonjour,

    Je ne m'y connais vraiment pas en JS, mais j'essaie de bricoler un peu déjà en attendant que le tuto de Nesquick et Thunderseb soit terminé.

    Je suis en train d'essayer de faire un script de validation de formulaire. Je bloque sur la vérification de la disponibilité des pseudos.

    Je suis très conscient que PHP s'exécute côté serveur, et PHP côté client. Mon idée était donc de faire ma requête en PHP pour récupérer tous les pseudos, les stocker dans un array, et transmettre cet array à JS pour la vérification.

    La méthode que j'ai employé me semblait un peu bizarre, et de fait: elle ne fonctionne pas, mais c'est malheureusement tout ce que j'ai pu trouver comme méthode au fil de mes recherches. Voici le code:

    // Vérification de la disponibilité du pseudo
    	
    	var pseudosDispo = new Array(<?php require_once('./core/query_pseudos.php'); ?>);
    	
    	for (var i = 0; c = pseudoDispo.length; i < c; i++)
    	{
    		if (frm.elements['pseudo'].value == pseudoDispo[i])
    		{
    			frm.elements['pseudo'].style.borderColor = "#FF0000";
    			document.getElementById('pseudoError2').style.display = "block";
    			
    			result = false;
    		}
    	}
    


    Je pense donc logiquement que mon problème se situe en ligne 3: comment transmettre l'array de PHP à JS ?

    J'ai également essayé en générant le JS avec PHP, sans plus de succès ...

    Je ne demande pas forcément un code tout fait (bien que je me doute que ça doit tenir en pas grand chose), une référence pour que je sache où chercher me suffirait :) .

    J'ai une autre question liée à cette manière de faire. Je suppose qu'en procédant ainsi, tous curieux aura accès à la liste de tous les pseudos. Ce n'est pas grave, mais je devrais éviter de faire ainsi pour les adresses mail. Juste pour confirmer ce que je pense.

    Voilà, merci d'avance :) .
    • Partager sur Facebook
    • Partager sur Twitter
      12 décembre 2010 à 16:02:09

      La vérification de ce type de valeur ce fait via Ajax normalement, en faisant appel à une page Php qui te renvoie si oui ou non pseudo existe.

      Sinon dans ton cas sa ne peu marcher, il te faut faire une boucle pour insérer les résultats en Javascript.
      Du style :
      tableau[] = <?php $pseudo[0]; ?>
      tableau[] = <?php $pseudo[1]; ?>
      

      Même si c'est évité dans ton cas, autant par la lourdeur inutile que sa provoque (imagine 1 000 pseudos), et par le manque de propreté de récupérer tous les pseudos (surtout que si quelqu'un s'inscrit en cours de route, ta liste ne serra pas à jour).
      • Partager sur Facebook
      • Partager sur Twitter
        12 décembre 2010 à 16:24:33

        Je sais que cela se fait normalement en AJAX, mais je n'ai pas les connaissance requises pour me lancer là dedans, je cherche une solution temporaire en attendant ^^ .

        Mais par rapport au code que tu proposes, je pense que j'ai quelque chose très similaire, puisque la page PHP appelée retourne les résultats sous la forme 'pseudo1', 'pseudo2', etc. Comme c'est dans les parenthèses de Array(), c'est correct, non ? Mais ça ne fonctionne pas.
        • Partager sur Facebook
        • Partager sur Twitter
          13 décembre 2010 à 15:09:09

          si tu veut quand meme essayer l'AJAX, un petit srcipt tout pret :
          function getXHR()
          {
          	var xhr = null;
          	
          	try
          	{
          		xhr = new XMLHttpRequest();
          	}
          	catch(e)
          	{
          		try
          		{
          			xhr = new ActiveXObject("Msxml2.XMLHTTP");
          		}
          		catch(e)
          		{
          			try
          			{
          				xhr = new ActiveXObject("Microsoft.XMLHTTP");
          			}
          			catch(e)
          			{
          				alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
          				return null;
          			}
          		}
          	}
          	
          	return xhr;
          }
          
          function req_xhr( page, params, callback )
          {
          	var xhr = getXHR();
          
          	xhr.onreadystatechange = function()
          	{	
          		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
          		{
          			callback(xhr.responseText);
          		}
          		if (xhr.readyState == 4 && (xhr.status == 404))
          		{
          			alert('Erreur 404 : Page non trouvee');
          		}		
          	};
          	
          	xhr.open("POST", page, true);
          	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          	xhr.send(params);
          }
          


          pour l'utiliser :
          req_xhr("page.php", "param1=value1&param2=value2", <nom_de_la_fonction_de_callback> )
          


          la fonction de callback sera appelée et un parametre lui sera envoyé, contenant le code html que te renvoi "page.php"

          PS : les paramètres sont passés en POST a la page "page.php"
          • Partager sur Facebook
          • Partager sur Twitter

          JS et PHP: transmission de variables

          × 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