IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP et javascript : Fonction history() qui ne fonctionne pas :/


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut PHP et javascript : Fonction history() qui ne fonctionne pas :/
    Salut tous et toutes

    J'ai une page PHP qui affiche (avec echo) une page HTML de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $variable="<html><head><meta charset=\"UTF-8\"><title>Inscription</title><link rel=\"stylesheet\" href=\"erreurs.css\" />".
    				"<script type=\"text/javascript\" src=\"js/erreurs.js\"></script></head>".
    				"<div class=\"panneau\" id=\"panneau\">".
    				"<div id=\"contenu\">".$info."<br/>".
    				"<input type=\"button\" id=\"fermer\" value=\"fermer\" onclick=\"ferme()\"><br/>"."</div></div>".
    				"<script langage=\"javascript\">".
    				"vert=360;".
    				"posy=parseInt((screen.availHeight-vert)/2);".
    				"document.getElementById(\"panneau\").style.top=posy+\"px\";".
    				"horiz=400;".
    				"posx=parseInt((screen.availWidth-horiz)/2);".
    				"document.getElementById(\"panneau\").style.left=posx+\"px\";".
    				"</script></html>";
    Mon problème est que l'instruction "window.history.(back)" ne fonctionne pas, et cette instruction est dans le fichier javascript appelé dans la page PHP.
    Pourtant ce fichier javscript fonctionne de cette façon, d'autres fonctions sont bien actives dans ce fichier js.
    Il n'y a que cette commande history() qui ne fonctionne pas.

    Là c'est le fichier js en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function envoie()
    {
    document.forms["myform"].submit();
    }
     
     
    function ferme()
    {
    //document.getElementById("panneau").style.display="none";
    window.history.back();
    }
    Pourriez-vous m'éclairer un peu sur ce problème ?

  2. #2
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    J'ai voulu mettre le centrage du div "panneau" dans une fonction js contenue dans le fichier "erreurs.js" mais l'appel de cette fonction de positionnement dans un script js de la page PHP ne fonctionne pas tout comme la fonction history vue dans mon premier post.
    Je ne comprend pas pourquoi la fonction envoie() peut être appelée et pas la fonction centre_pannel() (dans le script js de la page PHP) ou même la fonction ferme().

    Exemple du fichier PHP avec cette dernière modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $variable="<html><head><meta charset=\"UTF-8\"><title>Inscription</title><link rel=\"stylesheet\" href=\"erreurs.css\" />".
     				"<script type=\"text/javascript\" src=\"js/erreurs.js\"></script></head>".
    				"<div class=\"panneau\" id=\"panneau\">".
    				"<div id=\"contenu\">".$info."<br/>".
    				"<input type=\"button\" id=\"fermer\" value=\"fermer\" onclick=\"ferme()\"><br/>"."</div></div>".
    				"<script langage=\"javascript\">".
    				"centre_pannel();".
    				"</script>".
    				"</html>";
    Et là le fichier erreurs.js modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function envoie()
    {
    document.forms["myform"].submit();
    }
     
     
    function ferme()
    {
    //document.getElementById("panneau").style.display="none";
    window.history.back();
    }
     
    function centre_pannel()
    {
    vert=360;
    posy=parseInt((screen.availHeight-vert)/2);
    document.getElementById(\"panneau\").style.top=posy+\"px\";
    horiz=400;
    posx=parseInt((screen.availWidth-horiz)/2);
    document.getElementById(\"panneau\").style.left=posx+\"px\";
    }

  3. #3
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Je remarque que :

    Une des fonctions qui ne fonctionnent pas : centre_pannel(), est appelée dans le script JS écrit dans la page PHP, mais la fonction envoie() qui fonctionne est appelée dans la page PHP par une commande onclick="" et non dans un script js interne à la page PHP.
    Ce que je comprend pas, c'est que la fonction ferme() elle aussi n'est pas appelée dans un script js interne à la page PHP tout comme la fonction envoie() mais elle ne fonctionne pas (dans le post ci-dessus).

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Peux-tu expliquer ce que tu cherches à faire ?
    Un "centrage" en JS ? De quoi ?

    2- sans vouloir te vexer... ça ressemble fort à... de la bouse, non ?

    Tu ne crois pas que tu devrais d'abord apprendre les BASES des langages PHP et JS ?

    3- Il existe aussi la Syntaxe Heredoc, bien pratique dans ton cas...

  5. #5
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    salut, non ça me vexe pas
    Mais pourquoi de la bouse ? Je ne vois pas pourquoi tu dis ça par rapport à mon code.
    2- Peux-tu expliquer ce que tu cherches à faire ?
    Un "centrage" en JS ? De quoi ?
    Je l'ai dis dans mon post
    "centrer le div "panneau"

    Pour ce qui est du centrage, mais mon problème principal est que je voudrais pouvoir faire fonctionner la fonction ferme() et ainsi fermer le panneau qui a été affiché et envoyer le visiteur vers la page précédente.

  6. #6
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Le fait d'afficher le code html via un echo déjà ce n'est pas très lisible. De plus tu parles "de script js de la page PHP" , c'est pas très compréhensible.
    Es tu sur que tu passes par la fonction js envoie ? Je te conseille de mettre un point d'arrêt ou console.log dans cette fonction pour en être sur.

  7. #7
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    J'ai regardé ton lien et à partir de là j'ai simplifié un peu ma chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	$variable="<html><head><meta charset=\"UTF-8\"><title>Inscription</title><link rel=\"stylesheet\" href=\"erreurs.css\" />
     				<script type=\"text/javascript\" src=\"js/erreurs.js\"></script></head>
    				<div class=\"panneau\" id=\"panneau\">
    				<div id=\"contenu\">$info<br/>
    				<input type=\"button\" id=\"fermer\" value=\"fermer\" onclick=\"ferme()\"><br/></div></div>
    				<script langage=\"javascript\">
    				centre_pannel();
    				</script>
    				</html>";
    Salut RPASS

    Oui la fonction envoie() est bien executée car c'est elle qui valide le formulaire et ainsi charge la page "inscription.php".

    Le fait d'afficher le code html via un echo déjà ce n'est pas très lisible.
    Comment afficher du code HTML sans utiliser la commande echo="" ?

  8. #8
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    ça y est j'ai trouvé enfin la solution

    Tout fonctionne bien !

    Mon erreur était d'avoir oublié d'enlever les "antislah" devant certains guillemets comme dans ces cas là (dans le fichier js) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    document.getElementById(\"panneau\").style.top=posy+\"px\";
    horiz=400;
    posx=parseInt((screen.availWidth-horiz)/2);
    document.getElementById(\"panneau\").style.left=posx+\"px\";
    En effet ces barres obliques n'avaient rien à faire dans un fichier JS

    Merci pour vos remarques cela m'a bien aidé et m'a permis d'orienter ma recherche pour la solution

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    quand jreaux62 te parlais de la syntaxe heredoc, c'était pour on bien : avec tu obtiens exactement le même résultat sans tomber dans l'enfer des guillemets, antislash et tout le bordel
    Et puis tu te serais aperçu que t'avais oubliés les tags <body></body>, c'est ballot.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $variable = <<<html
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Inscription</title>
      <link rel="stylesheet" href="erreurs.css" />
      <script type="text/javascript" src="js/erreurs.js"></script>
    </head>
    <body>
      <div class="panneau" id="panneau">
        <div id="contenu">{$info}<br/>
          <input type="button" id="fermer" value="fermer" onclick="ferme()"><br/>
        </div>
      </div>
      <script>centre_pannel();</script>
     </body>
    </html>
    html;
    Comme quoi, bien présenter son code est toujours utile

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction recursive qui ne fonctionne pas
    Par Hightuxdotnet dans le forum Langage
    Réponses: 3
    Dernier message: 18/02/2009, 16h38
  2. fonction confirm() qui ne fonctionne pas sur IE7
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2008, 09h47
  3. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49
  4. [SQL] Fonction SUM qui ne fonctionne pas !
    Par nigg4z dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 11/10/2007, 16h20
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo