PHP et Javascript

Bonjour, pour m'entraîner aux languages PHP et Javascript, j'aimerai coder une zone de texte, où, si le mot entré est le même que celui qui est retenu dans la base de données, la zone de texte disparaît. Alors chercher dans la base de données, c'est facile, mais appeler une fonction javascript dans le code PHP, c'est plus balèze !
Alors je voulais écrire ça :

if($reponse)
{
echo '<script>Efface()</script>';
}

Mais ça ne fonctionne pas, alors je ne sais pas si le problème vient de ' et de ", mais je ne trouve pas vraiment le problème comme ça. Voyez-vous le problème ?
Merci d'avance !

10 réponses

  1. Bonjour

    Syntaxiquement, ton code est correct. Par contre "appeler une fonction javascript dans le code PHP" n'est pas possible avec le sens habituel d'"appeler une fonction" en informatique : le PHP s'exécute sur une machine et le Javascript sur une autre.
    Ce que ton code fait, c'est que s'il y a une certaine condition ($reponse) qui est vérifiée dans le serveur, le serveur va inclure un bout de code javascript dans ta page, qui va s'exécuter (si la fonction Efface() est définie) chez ton visiteur.
    C'est bien ça que tu cherches à faire ?
    1
    1. Salut,

      Donc apparemment tu n'utilise pas ajax donc ton code php est correct (tu dois voir le code
      <script>Efface()</script>
      dans le code source de ta page).

      A mon avis l'erreur vient du fait que tu appel ta fonction Javascipt Efface() alors que celle-ci n'est pas encore définie, ou que le textarea sur lequel ta fonction agit n'est pas encore chargé dans ta page.
      Pour cela deux solutions :
      - soit tu fait tes appels de fonction javascript tout à la fin de ta page html (avant la fermeture de la balise body)
      - soit tu utilises l'événement onload pour attendre que ta page soit complétement chargée avant d'exécuter ton javascript.

      Pour la deuxième solution, tu peux essayer comme ceci :
      if ($reponse) {
          echo '<script>window.onload=function(){ Efface() };</script>';
      }
      


      Bonne journée
      1
      1. Contributeur
        C'est qui les neuneus qui s'amusent à mettre des -1 à tour de bras ?
        0
      2. @ThEBiShOp
        Non coupable ! Même s'ils ne sont pas tous volés ;-)
        0
      3. Contributeur
        Quasiment tous les messages avaient au moins un -1...
        y'en a un qui a pas du apprécier de se prendre le 1er ;)
        0
    2. "Un visiteur entre un mot dans la zone de texte"
      Comment le serveur est-il averti de ce mot ? Le visiteur clique sur un bouton ? Ou tu as un "onchange" dans ton input ?
      0
      1. Oui il y a un bouton "valider". Je n'ai pas précisé tout ça parce que je pensais que c'était seulement un problème de syntaxe avec le echo...
        0
        1. Quand on clique sur 'valider', on valide un formulaire ou tu fais un appel au serveur par Ajax ?
          0
          1. tu peux faire comme suite :

            partie php (en supposant que ton code php citer plus haut est bon) :

            if($reponse) 
            { 
            echo "<script>
            window.onload=function(){
              document.getElementById('id_txt').style.display = 'none'; 
            }; 
            </script>"; 
            } 


            ----------

            Partie html :

            <p id="id_txt">voici le texte à cacher</p>
            0
            1. Et bien en fait, en faisant simplement
              <?php
              id($reponse)
              {
              ?>
              <script language="Javascript">fonction()</script>;
              <?php
              ........
              }
              ?>

              Ca fonctionne !
              0
              1. C'est absolument équivalent à ce qu'il y avait dans ton message initial. La seule différence, c'est que tu as précisé language ="Javascript", alors que l'attribut language est déprécié dans les versions récentes de HTML.
                0
            2. Bonjour, comme ceci

              if($reponse)
              {
                echo '<script type="text/javascript">window.top.window.Efface();</script>';
              }
              -1
              1. Oui c'est bien ça. Et j'ai beau essayer tous les codes donnés au dessus, ça ne fonctionne pas.
                En fait, le visiteur entre un mot dans la zone de texte et en fonction de ce qui sera inscrit, un élément va disparaître ou apparaître de la page du visiteur
                -1
                1. Essaye
                  <?php
                  if($reponse)
                  {
                  echo '?><script>Efface()</script><?php';
                  }
                  ?>
                  J'ai jamais testé mais.. Pourquoi pas ? :)
                  -2