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 :
$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 :
- Ajouter une déclaration charset dans ton HTML :
- Spécifier le charset lors de la connexion à ta BDD :
$bdd = new PDO("mysql:host=$serveur;dbname=$database;charset=utf8", $user, $pass);
- Vérifier que ton éditeur de texte ou IDE est bien configuré pour enregistrer les fichier en UTF-8. Tu peux utiliser le plugin très utile editorconfig pour ne pas avoir à y penser à chaque fois.
- Voir Passer à UTF-8 sans manquer une étape pour plus de détails.
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.
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 derreur/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> |
Partager