Une erreur de syntaxe Javascript
new-dev
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai fait un mixe de Php et de javascript, tout sur la même page. Mon code fonctionne nickel mais j'ai juste une erreur à l'ouverture du ficher et quand j'actualise la page. Quand je "submit" ça fonctionne. J'ai juste un petit problème de syntaxe avec ma variable age en javascript qui récupère ma variable $age en php.
Merci pour votre aide
J'ai fait un mixe de Php et de javascript, tout sur la même page. Mon code fonctionne nickel mais j'ai juste une erreur à l'ouverture du ficher et quand j'actualise la page. Quand je "submit" ça fonctionne. J'ai juste un petit problème de syntaxe avec ma variable age en javascript qui récupère ma variable $age en php.
<!doctype html> <html> <head> <meta charset="utf-8"> </head> <body> <form name="my_form" method="post" action=""> <br /> <br /> <select name="jour" id="jour"> <option> Jour </option> <?php for ($i = 1; $i <= 30; $i++) { echo '<option value=\'' . $i . '\'>' . $i . '</option>'; } ?> </select> <select name='mois' id="mois"> <option> Mois </option> <?php for ($i = 1; $i < 13; $i++) { echo '<option value=\'' . $i . '\'>' . $i . '</option>'; } ?> </select> <select name="annee" id="annee"> <option> Annee </option> <?php for ($i =1930; $i <= 2016; $i++) { echo'<option value=\'' . $i .'\'>' . $i . '</option>'; } ?> </select> <br /> <br /> <input type="submit" id="submit" name="submit"/> <br /> <br /> <input id="price" /> </form> <hr> <?php if (isset($_POST['annee'])) { $jour = $_POST['jour']; $mois = $_POST['mois']; $annee = $_POST['annee']; if (!empty($jour) && !empty($mois) && !empty($annee)) { $date = explode('/', date('d/m/Y')); print_r($date); if (($mois < $date[1]) || (($mois == $date[1] && $jour <= $date[0]))) { $age = $date[2] - $annee; echo 'vous avez ' .$age. ' ans'; } if (($mois > $date[1]) || (($mois == $date[1] && $jour > $date[0]))) { $age = $date[2] - $annee -1; } } else { print_r($date); $age = $date[2] - $annee - 1; } } ?> <script> var age='<?PHP echo $age;?>'; if(age >= 12) { document.getElementById('price').value = 32; } else { document.getElementById('price').value = 24; } </script> </body> </html>
Merci pour votre aide
A voir également:
- Une erreur de syntaxe Javascript
- Telecharger javascript - Télécharger - Langages
- Erreur t32 ✓ - Forum Livebox
- Instagram une erreur s'est produite - Forum Instagram
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
4 réponses
Bonjour
Tu as des apostrophes inutiles autour de <?php echo $age; ?>, car age est un nombre et n'a pas à être écrit entre apostrophes.
Mais ça ne devrait pas empêcher ton script de marche.
Autre remarque : lors du premier appel, $age n'est pas défini et, sans ces apostrophes inutiles, tu aurais une erreur de script. Une erreur, qui en cache une autre…
Pour en venir au fait, peux-tu décrire en quoi consiste ton problème avec cette variable ? J'ai l'impression que tu voudrais que 'price' soit modifié en temps réel en fonction de l'année, sans valider le formulaire : si c'est l'effet recherché, c'est normal que ça ne marche pas, car ta variable PHP $age n'est remise à jour que quand tu envoies le formulaire.
Tu as des apostrophes inutiles autour de <?php echo $age; ?>, car age est un nombre et n'a pas à être écrit entre apostrophes.
Mais ça ne devrait pas empêcher ton script de marche.
Autre remarque : lors du premier appel, $age n'est pas défini et, sans ces apostrophes inutiles, tu aurais une erreur de script. Une erreur, qui en cache une autre…
Pour en venir au fait, peux-tu décrire en quoi consiste ton problème avec cette variable ? J'ai l'impression que tu voudrais que 'price' soit modifié en temps réel en fonction de l'année, sans valider le formulaire : si c'est l'effet recherché, c'est normal que ça ne marche pas, car ta variable PHP $age n'est remise à jour que quand tu envoies le formulaire.
Salut,
La variable $age n'est pas définie au premier chargement de la page.
Une solution pour corriger ce problème est d'afficher le script uniquement si la variable $age est définie :
Une autre solution est d'initialiser la variable javascript à 0 si la variable php n'existe pas et de modifier légèrement la condition js :
Bonne journée,
La variable $age n'est pas définie au premier chargement de la page.
Une solution pour corriger ce problème est d'afficher le script uniquement si la variable $age est définie :
<?php if (isset($age)) : ?> <script> var age='<?PHP echo $age;?>'; if(age >= 12) { document.getElementById('price').value = 32; } else { document.getElementById('price').value = 24; } </script> <?php endif; ?>
Une autre solution est d'initialiser la variable javascript à 0 si la variable php n'existe pas et de modifier légèrement la condition js :
var age='<?PHP echo isset($age) ? $age : 0; ?>'; if (age != 0) { if(age >= 12) { document.getElementById('price').value = 32; } else { document.getElementById('price').value = 24; } }
Bonne journée,
Merci ça marche. J'ai utiliser la première technique. Plus qu'une chose. J'ai rajouter une balise select avec 2 options
et dans mon code javascript :
Quand je coche l'option select "demijournee". Le tarif reste toujours à 20. J'ai essayé d'ajouter un attribut onchange à ma balise select et de l'appeler via une fonction en javascript, ça change rien.
Merci
<select id="type" name="selectname"> <option value="journee" id="journee"> Journée </option> <option value="demijournee" id="demijournee"> Demi-journée </option> </select>
et dans mon code javascript :
<?php if (isset($age)) : ?> <script> var age = <?PHP echo $age;?>; if (age >= 12 && (document.getElementById('type').value == "demijournee")) { document.getElementById('price').value = 10; } else { document.getElementById('price').value = 20; } </script> <?php endif; ?>
Quand je coche l'option select "demijournee". Le tarif reste toujours à 20. J'ai essayé d'ajouter un attribut onchange à ma balise select et de l'appeler via une fonction en javascript, ça change rien.
Merci
Non c'est bien un (&& Et). Je veux diviser le tarif par 2 si l'âge de l'utilisateur est supérieur à 12 ans et si seulement il a choisit l'option (demijournee), ça ne fonctionne pas. J'ai tout testé, si je mets un âge supérieur à 12 et que je sélectionne bien demi-journée, j'arrive toujours dans le else.
Bonjour,
D'après ton code ... il s'exécute (UNIQUEMENT) au chargement de la page.;...
Pour actualiser le "price" en fonction du choix réalisé dans la balise SELECT ... tu dois le faire sur un ONCHANGE
par exemple :
Ensuite, pour l'appeller au chargement de ta page tu as juste à faire
et pour actualiser en fonction du choix réalisé dans la balise SELECT:
D'après ton code ... il s'exécute (UNIQUEMENT) au chargement de la page.;...
Pour actualiser le "price" en fonction du choix réalisé dans la balise SELECT ... tu dois le faire sur un ONCHANGE
par exemple :
function changePrice(){ var age = <?PHP echo $age;?>; var typeJour = document.getElementById('type').value; if (age >= 12 && typeJour == "demijournee)) { document.getElementById('price').value = 10; } else { document.getElementById('price').value = 20; } }
Ensuite, pour l'appeller au chargement de ta page tu as juste à faire
<script type="text/javascript"> changePrice(); </script>
et pour actualiser en fonction du choix réalisé dans la balise SELECT:
<select id="type" name="selectname" onchange="changePrice();"> <option value="journee" id="journee"> Journée </option> <option value="demijournee" id="demijournee"> Demi-journée </option> </select>
Bonjour,
J'avais essayer en mettant un attribut onchange, ça ne fonctionnait pas. J'ai essayer en mettant exactement ton code et je me retrouve avec 2 erreurs :
test2.php:12 Uncaught ReferenceError: changePrice is not defined(…)
test2.php:67 Uncaught SyntaxError: Invalid or unexpected token
Du coup je te remontre mon code en entier, je pense que ça sera mieux (sans ton code) :
Merci pour ton aide.
J'avais essayer en mettant un attribut onchange, ça ne fonctionnait pas. J'ai essayer en mettant exactement ton code et je me retrouve avec 2 erreurs :
test2.php:12 Uncaught ReferenceError: changePrice is not defined(…)
test2.php:67 Uncaught SyntaxError: Invalid or unexpected token
Du coup je te remontre mon code en entier, je pense que ça sera mieux (sans ton code) :
<!doctype html> <html> <head> <meta charset="utf-8"> </head> <body> <form name="my_form" method="post" action=""> <select id="type" name="selectname"> <option value="journee" id="journee"> Journée </option> <option value="demijournee" id="demijournee"> Demi-journée </option> </select> <br /> <br /> <select name="jour" id="jour"> <option> Jour </option> <?php for ($i = 1; $i <= 30; $i++) { echo '<option value=\'' . $i . '\'>' . $i . '</option>'; } ?> </select> <select name='mois' id="mois"> <option> Mois </option> <?php for ($i = 1; $i < 13; $i++) { echo '<option value=\'' . $i . '\'>' . $i . '</option>'; } ?> </select> <select name="annee" id="annee"> <option> Annee </option> <?php for ($i =1930; $i <= 2016; $i++) { echo'<option value=\'' . $i .'\'>' . $i . '</option>'; } ?> </select> <br /> <br /> <p> réduction <input type="checkbox" id="reduction" /> </p> <input type="submit" id="submit" name="submit"/> <br /> <br /> <input id="price" /> </form> <hr> <?php if (isset($_POST['annee'])) { $jour = $_POST['jour']; $mois = $_POST['mois']; $annee = $_POST['annee']; if (!empty($jour) && !empty($mois) && !empty($annee)) { $date = explode('/', date('d/m/Y')); print_r($date); if (($mois < $date[1]) || (($mois == $date[1] && $jour <= $date[0]))) { $age = $date[2] - $annee; echo 'vous avez ' .$age. ' ans'; } if (($mois > $date[1]) || (($mois == $date[1] && $jour > $date[0]))) { $age = $date[2] - $annee -1; echo 'vous avez ' .$age. ' ans'; } } else { print_r($date); $age = $date[2] - $annee - 1; } } ?> <?php if (isset($age)) : ?> <script> var age = <?PHP echo $age;?>; if (age >= 12 && (document.getElementById('type').value== "demijournee")) { document.getElementById('price').value = 10; } else { document.getElementById('price').value = 20; } </script> <?php endif; ?> </body> </html>
Merci pour ton aide.