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 :

Récupération variable php dans javascript


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 10
    Par défaut Récupération variable php dans javascript
    Bonjours,

    je souhaite extraire une variable d'une base de donnée et l'afficher avec javascript (pour dans un second temps faire des calculs)

    cependant mon code ne marche pas. Avez vous des suggestions ?
    Code html : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <html>
    <head>
    </head>
     
    <BODY>
    <div>
     
    <?php
    //connexion a la database
    $user='root';
    $pass='';
    $serveur='localhost';
    $database='qbonneau_ptut';
     
    try {
    $bdd = new PDO('mysql:host='.$serveur.';dbname='.$database, $user, $pass);
    }
    catch (Exception $e) {
    //si cela ne foncrtionne pas, on affiche un message d'erreur
        die('Erreur !: ' . $e->getMessage());
    }
    ?>
     
    <?php
    //affichage database
    try {
    $reponse=$bdd->query('select * from velec2');
    }
    catch (Exception $e) {
    //si cela ne foncrtionne pas, on affiche un message d'erreur
        die('Erreur !: ' . $e->getMessage());
    }
    ?>
     
     
     
     
     
    <script language="JavaScript" type="text/javascript">
    function AFFICHE(somme){
       
       
       
     var somme = '<?PHP echo $distance;?>';
       
     document.getElementById('mon_div').innerHTML = 'valeur par défaut(1) : '+somme+'';
    }
    </script>
     
     
     
    <input type="button" value="go" onclick="javascript:AFFICHE();">
     
     
    <div id="mon_div"></div>
     
     
     
    </body>
    </html>

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Salut, j’ai plusieurs remarques :

    1. « Ça ne marche pas » n’est pas une description valable du problème.

    2. Ta variable $distance n’est définie nulle part. PHP devrait émettre un avertissement. Si tu ne le vois pas, il faut ajouter une directive error_reporting au début de ton fichier. Dans ton environnement de développement, tu dois activer toutes les options de débug pour avoir un maximum d’informations, et faire tout ton possible pour gérer la source des messages d’erreur/avertissement plutôt que les ignorer.

    3. on ne met pas javascript: dans un onclick. D’ailleurs, aujourd’hui, on ne met plus javascript: nulle part.

    4. Par défaut, PDO ne fait pas remonter les erreurs SQL, il faut aller les chercher à la main. Tu peux modifier ce comportement et faire en sorte que les erreurs SQL lèvent des exceptions :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    5. Je te conseille vivement de t’occuper dès maintenant de l’encodage utilisé par les différentes parties de l’application avant que ça ne devienne un problème, car crois-moi, ça va devenir un problème tôt ou tard.
    Pour ça tu dois faire au minimum trois choses :


    6. Si tu ne le sais pas déjà, ton navigateur a une console qui te permet de voir les erreurs JavaScript. Il faut appuyer sur F12 pour ouvrir les outils de développment, et ensuite aller sur l’onglet console.

    7. En général, il vaut mieux éviter de mettre des bouts de PHP au milieu du code JavaScript. Là tu peux te le permettre car ton cas est simple, mais ne prends pas l’habitude : si tu fais ça, les choses peuvent devenir très vite compliquées.
    Il vaut mieux avoir des fichiers JS statiques (c’est-à-dire ici, pas générés par PHP) et, quand on a besoin d’une information du serveur, la récupérer avec une requête ajax. La fonction json_encode peut être utile.

    8. Le mode strict de JavaScript corrige une partie des vieux défauts du langage. C’est une bonne chose à adopter, que l’on soit débutant ou pas.


    Voilà ma version de ton code qui résume mes remarques ; tu noteras que je n’ai pas corrigé le problème de $distance.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
    error_reporting(-1); // affiche tous les messages d’erreur/avertissement
     
    //connexion a la database
    $user = 'root';
    $pass = '';
    $serveur = 'localhost';
    $database = 'qbonneau_ptut';
     
    try {
      $bdd = new PDO("mysql:host=$serveur;dbname=$database;charset=utf8", $user, $pass);
    }
    catch (PDOException $e) {
      die('Erreur de connexion à la BDD : ' . $e->getMessage());
    }
     
    // configure PDO pour que les erreurs SQL lèvent des exceptions
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    //affichage database
    try {
      $reponse = $bdd->query('SELECT * FROM velec2');
    }
    catch (PDOException $e) {
      die('Erreur de requête SQL : ' . $e->getMessage());
    }
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <title>Quentin_B</title>
    </head>
    <body>
     
    <input type="button" value="go">
     
    <div id="mon_div"></div>
     
    <script type="text/javascript">
      'use strict';
     
      function AFFICHE() {
        var somme = '<?= $distance ?>';
        document.getElementById('mon_div').textContent = 'valeur par défaut(1) : ' + somme + '';
      }
     
      document.querySelector('input[type="button"][value="go"]').onclick = AFFICHE;
    </script>
    </body>
    </html>
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

    À mon avis, c'est Ajax qu'il te faut...

    ...Auquel cas PHP et JS sont dans des fichiers distincts.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 10
    Par défaut
    Merci Watilin, j'ai pris compte de tes remarques et j'ai modifié le code, cependant lorsque je le lance, la variable distance me retourne 1 alors que ce n'est pas du tout la valeur de la base de donnée. Savez vous d'ou le problème peut-il venir ?
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?php
    error_reporting(-1); // affiche tous les messages d’erreur/avertissement
     
    //connexion a la database
    $user = 'root';
    $pass = '';
    $serveur = 'localhost';
    $database = 'velec3';
     
    try {
      $bdd = new PDO("mysql:host=$serveur;dbname=$database;charset=utf8", $user, $pass);
    }
    catch (PDOException $e) {
      die('Erreur de connexion à la BDD : ' . $e->getMessage());
    }
     
    // configure PDO pour que les erreurs SQL lèvent des exceptions
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    //affichage database
    try {
      $reponse = $bdd->query('SELECT * FROM velec3');
    }
    catch (PDOException $e) {
      die('Erreur de requête SQL : ' . $e->getMessage());
    }
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <title>Vélo Electrique</title>
    </head>
    <body>
     
    <input type="button" value="go">
     
    <div id="mon_div"></div>
     
    <script type="text/javascript">
      'use strict';
     
      function AFFICHE() {
        var somme = '<?= $distance = $bdd->query("SELECT distance FROM velec3 where parcours=1") or die(print_r($distance->errorInfo())); ?>';
        document.getElementById('mon_div').textContent = 'valeur par défaut : ' + somme + '';
      }
     
      document.querySelector('input[type="button"][value="go"]').onclick = AFFICHE;
    </script>
    </body>
    </html>

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $distance = $bdd->query("SELECT distance FROM velec3 where parcours=1")
    D'après toi, ça renvoie quoi ?

    Avant d'envisager mettre quoi que ce soit dans JavaScript, sais-tu au moins :
    • faire une requête PDO ?
    • afficher les données ?

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 10
    Par défaut
    Bonjours,
    Pour moi cela devrait renvoyer la valeur contenue dans la base non ?

Discussions similaires

  1. [Spip] Problème variable PHP dans boucle
    Par Nicolas.S dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/06/2009, 10h31
  2. [PHP-JS] Problème variables PHP-JS
    Par sara21 dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2007, 01h46
  3. Réponses: 49
    Dernier message: 13/03/2006, 11h25
  4. [PHP-JS] Problème variable
    Par vincedjs dans le forum Langage
    Réponses: 3
    Dernier message: 08/03/2006, 14h46
  5. [PHP-JS] Problème de variable PHP dans un script JS
    Par soad029 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2005, 22h17

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