Partage
  • Partager sur Facebook
  • Partager sur Twitter

refresh fonction php

Sujet résolu
    20 octobre 2018 à 17:43:32

    Bonjour ,

    je me demandais si il était possible de faire une refresh ( a chaque fois que le curseur n'est plus sur l'input onblur ) d'une fonction php qui vérifie la validiter d'un pseudonyme d'une input voila mon code .

    function verifpseudonyme()
    {
    	$pseudonyme = htmlspecialchars($_POST['pseudonyme_ins']);
    	$pseudonymetaille =  strlen($_POST['pseudonyme_ins']);
    	
    	$reqpseudo = $bdd_espace_membre->prepare("SELECT * FROM membre WHERE pseudonyme = ?");
    	$reqpseudo->execute(array($pseudonyme));
    	$pseudoexist = $reqpseudo->rowCount();
    	
    	if($pseudonymetaille => 6 AND $pseudonymetaille <= 30 AND !empty($pseudonyme) AND $pseudoexist == 0)
    	{
    		$psuedonymevalide = "valide";
    	}
    }


    j'ai cru a peux près comprendre que avec Ajax ça serais possible mais je n'ai rien trouver de concluant .

    • Partager sur Facebook
    • Partager sur Twitter
      20 octobre 2018 à 20:24:56

      C'est que tu n'as pas beaucoup chercher! Je crois qu'en JS c'est la question la plus posé au monde par les débutants! xD
      • Partager sur Facebook
      • Partager sur Twitter
      $2b||!$2b
        21 octobre 2018 à 14:20:04

        j'ai trouver ça

        function verifPseudo_ins(champ)
        {
            console.log(<?php verifpseudonyme(); ?>);
        }

        mais rien ne fonctionne

        • Partager sur Facebook
        • Partager sur Twitter
          21 octobre 2018 à 19:58:01

          Va voir ici

          -
          Edité par skuti 21 octobre 2018 à 19:58:29

          • Partager sur Facebook
          • Partager sur Twitter
          $2b||!$2b
            24 octobre 2018 à 10:38:41

            Bonjour @skuti ,

            pas très utile au final comme je m'en doutais car le problème est même avec un

            function verifPseudo_ins(){
              var request = new XMLHttpRequest();
              request.open('POST', 'VERIF_INPUT_PSEUDO.php', true);
              request.send();
            }

            dans VERIF_INPUT_PSEUDO.php :

            <?php
            
            	$pseudonyme = htmlspecialchars($_POST['pseudonyme_ins']);
            	$pseudonymetaille =  strlen($_POST['pseudonyme_ins']);
            
            	$reqpseudo = $bdd_espace_membre->prepare("SELECT * FROM membre WHERE pseudonyme = ?");
            	$reqpseudo->execute(array($pseudonyme));
            	$pseudoexist = $reqpseudo->rowCount();
            
             if(!empty($pseudonyme)){
            	if($pseudonymetaille => 6 AND $pseudonymetaille <= 30)
            	{
                if($pseudoexist == 0){
                  $psuedonymevalide = "valide";
                }else {
                  $error = 'Le pseudonyme choisie existe déjà';
                }
            	}else {
                $error =  'votre pseudonyme doit avoir au minimun 6 caractères et au maximun 30';
              }
            }else {
              $error = 'Veuillez compléter le champ "pseudonyme" merci .';
            }
            
            ?>
            

            le probleme est qu'il ne connais pas le $pseudonyme = htmlspecialchars($_POST['pseudonyme_ins']); donc ça me renvois une erreur comme je m'en doutais et j'ai regarder quelque tutoriel de plus 1h sans resulta car auccun en parle et j'ai déjà dis dans mon premier message que j'avais déjà chercher du côter d'ajax sans resulta


            -
            Edité par KillianMG 24 octobre 2018 à 10:39:20

            • Partager sur Facebook
            • Partager sur Twitter
              24 octobre 2018 à 10:52:21

              Pourtant Ajax est ta seul solution.. Personnelement j'utilise Ajax avec jquery et ce que tu fais au dessus j'y arrive très bien.

              Je te conseillerais donc de regarder ça, comme ici. Si après avoir regarder et essayer tu as toujours des questions n’hésite pas. 

              • Partager sur Facebook
              • Partager sur Twitter

              Call me Spaceman

                24 octobre 2018 à 10:59:01

                Alors je réitère ce que j'ai dit.

                Quand je vois ceci :

                function verifPseudo_ins(champ)
                {
                    console.log(<?php verifpseudonyme(); ?>);
                }

                C'est que n'a pas beaucoup cherché.

                Ton deuxième code est déjà un peu plus aboutit.

                Maintenant de ce que je vois, tu as lu sans comprendre ou sans vouloir comprendre.

                Ce que je dis n'est pas dans le but de vexé mais de t'aider à t'améliorer.

                Un développeur dois rechercher sur internet, lire des tutos, faire des tests et s'il ne comprends pas quelque chose, poser la question.

                Là, et c'est pour cette raison je pense qu'il n'y ait que moi qui ai répondu, on a l'impression que tu souhaites qu'on fasse le code pour toi. Ce n'est pas et n'a jamais été le but de ce site.

                Il y a un tuto très bien sur OCR ici.

                Il explique que pour la compatibilité navigateur, vaux mieux prévoir tout les cas possible en utilisant cette fonction JS pour avoir le bon objet XMLHttpRequest:

                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;
                }


                Et ensuite si tu souhaites faire un POST (ce qui est ton cas) faire un bout de code JS du genre:

                var xhr = getXMLHttpRequest();
                xhr.open("POST", "VERIF_INPUT_PSEUDO.php", true);
                xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                xhr.send("pseudonyme_ins="+pseudonyme);

                Et là encore une fois, je n'ai fait que lire le tuto (je n'ai pas fait de JS pure depuis au moins 5 ans)

                • Partager sur Facebook
                • Partager sur Twitter
                $2b||!$2b
                  24 octobre 2018 à 13:13:42

                  esqu'il y aurais moyen au lien de reload mon fichier plutot une fonction ?

                  et il m'affiche enccore une erreur sur xhr.send("pseudonyme_ins="+pseudonyme);

                  j'utilise un fichier externe pour mon js au lieu de l'inclure directement dans ma page en HTML

                  -
                  Edité par KillianMG 24 octobre 2018 à 13:28:20

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 octobre 2018 à 13:56:12

                    Oublie pas qu'en développement il faut très souvent tout dire à l'ordinateur.

                    La j'ai mis la variable "pseudonyme" mais il faut l'initialiser ou la mettre en paramètre de ta fonction.

                    Et a ta fonction il faut bien que tu récupère le pseudonyme quelque part pour passer à ta fonction.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    $2b||!$2b
                      24 octobre 2018 à 15:33:46

                      bonjour j'ai mis 

                      onblur="verifPseudo_ins(this.value)"

                      dans mon fichier js

                      function verifPseudo_ins(pseudonyme){
                        var xhr = getXMLHttpRequest();
                        xhr.open("POST", "VERIF_INPUT_PSEUDO.php", true);
                        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                        xhr.send("pseudonyme_ins="+pseudonyme);
                      }

                      mais rien ne fonctionne quand j'arrive sur ma partie crée un compte mon élément est déjà surligner en rouge 

                      <div class="form-group">
                                <label class=" element-connexion">Pseudonyme</label>
                                <input name="pseudonyme_ins" type="text" class="<?php if(isset($psuedonymevalide)){echo $bonclass;}else{echo $erreurclass;} ?> form-control input-connexion element-connexion" onblur="verifPseudo_ins(this.value)" id="input-pseudo-ins" placeholder="Entrer pseudonyme">
                                <div class="invalid-feedback element-connexion"><?php if(isset($error)){echo $error;} ?></div>
                          	</div>

                      dans mon VERIF_INPUT_PSEUDO j'ai ça

                      <?php
                      
                      	$pseudonyme = htmlspecialchars($_POST['pseudonyme_ins']);
                      	$pseudonymetaille =  strlen($_POST['pseudonyme_ins']);
                      
                      	$reqpseudo = $bdd_espace_membre->prepare("SELECT * FROM membre WHERE pseudonyme = ?");
                      	$reqpseudo->execute(array($pseudonyme));
                      	$pseudoexist = $reqpseudo->rowCount();
                      
                       if(!empty($pseudonyme)){
                      	if($pseudonymetaille => 6 AND $pseudonymetaille <= 30)
                      	{
                          if($pseudoexist == 0){
                            $psuedonymevalide = "valide";
                          }else {
                            $error = 'Le pseudonyme choisie existe déjà';
                          }
                      	}else {
                          $error =  'votre pseudonyme doit avoir au minimun 6 caractères et au maximun 30';
                        }
                      }else {
                        $error = 'Veuillez compléter le champ "pseudonyme" merci .';
                      }
                      
                      ?>
                      

                      toujour rien de fonctionnelle dans la console je n'ai auccune erreur mais pourtent en mettent les conditions valide rien ne marche ( ça ne devient pas vert ) et cela n'affiche pas l'erreur demander quand ce n'est pas correcte la je suis un peut pommer




                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 octobre 2018 à 8:25:09

                        Décortique ton code.

                        Moi je vois:

                        - Un morceau de code qui affiche la classe $bonClass si $pseudonymeValid vaut TRUE sinon par défaut il affiche la classe $errorClass

                        - Tu fais un onBlur pour lancer la vérification (ca c'est OK)

                        - Tu envois la requête AJAX pour vérifier si le pseudo est bon (ca c'est OK)

                        - Et... c'est tout

                        Et la ça pêche!

                        Ce que tu fais c'est un peu comme si tu demandais à quelqu'un son prénom et que tu te barre sans attendre la réponse.

                        Il faut donc que tu trouve comment récupérer cette réponse (tu auras du code PHP à faire pour retourner la réponse et JS pour décoder), interpréter la réponse et changer la classe de ton input en JS pour mettre la bonne classe en fonction de s'il est valide ou non

                        • Partager sur Facebook
                        • Partager sur Twitter
                        $2b||!$2b
                          25 octobre 2018 à 16:57:32

                          je me demandais déjà esque pour ma methode="POST" quand je le demande le fichier es que c'est bon déjà ?

                            xhr.send("pseudonyme_ins="+pseudonyme);



                          -
                          Edité par KillianMG 25 octobre 2018 à 16:58:12

                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 octobre 2018 à 17:21:05

                            Je suppose que oui. Comme je t'ai dit, ça fait des lustre que je n'ai pas fait de requête AJAX en JS natif.

                            Regarde ta console JS dans l'onglet réseau je crois voir si tu vois bien ta requête qui ce lance quand tu fais ton "onBlur"

                            • Partager sur Facebook
                            • Partager sur Twitter
                            $2b||!$2b
                              25 octobre 2018 à 21:08:09

                              Oui enfin trouver :D :D :D happy 2 semaine que je cherche :D

                              une video de 2011 qui explique tous pour les intérésés ( j'ai pas enccore fait sur mon formulaire de connexion / inscription mais cela à marcher sur mon formulaire de contact

                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 octobre 2018 à 7:17:23

                                Il aurait été intéressant que tu mettes ton code pour que les personnes rencontrant le même problème puisse regarder ton code corrigé.

                                Et pense à mettre ton sujet en résolu aussi

                                • Partager sur Facebook
                                • Partager sur Twitter
                                $2b||!$2b
                                  26 octobre 2018 à 10:19:06

                                  mince j'ai oublier de mettre la video : https://www.youtube.com/watch?v=Y8FcSMJagd0
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  refresh 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