Une erreur de syntaxe Javascript
new-dev
Messages postés
20
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
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 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
- Instagram une erreur s'est produite - Forum Instagram
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.