Contrôle de formulaire - Erreur de calcul "plus grand que"

cyrano359 Messages postés 1 Date d'inscription vendredi 7 janvier 2005 Statut Membre Dernière intervention 7 janvier 2005 - 7 janv. 2005 à 04:44
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 7 janv. 2005 à 09:55
Salut à toutes et tous !

Je débute et je rame grave !

C'est pas faute de chercher mais encore faut-il mettre les bons mots-clés... et mes recherches demeurent infructueuses

Je m'explique :

J'ai une liste déroulante dans un formulaire qui permet de choisir une quantité de 1 à 10.

Je contrôle avec Javascript que la valeur de ce champ de formulaire ne soit pas supérieure au stock disponible en incluant la valeur dynamique renvoyée par php.

La mauvaise surprise est que si la fonction php indiquant le stock disponible renvoie une valeur de 8, et que je commande 10, je n'ai pas de message d'alerte !

Le système ne semble prendre en compte que le premier caractère de la chaîne, soit 1, qui est inférieur à 8.

J'ai essayé avec 08 et là ça marche, mais...

Si le stock est de 110, et que je commande 9, le message d'alerte apparaît car 9 est supérieur au premier caractère de la chaîne soit 1 (et à 0 si je met 0 devant cette variable de stock).

Voilà mon script :

<script language="javascript">
function champsok()
{
if (document.formulaire.Date.value=="") {
alert("Veuillez sélectionner une DATE valide, svp !");
return false;
}
else if (document.formulaire.NbPlaces.value=="") {
alert("Veuillez indiquer le NOMBRE DE PLACES souhaitées !");
return false;
}
else if ((document.formulaire.Date.value=="2005-02-05")&
amp;&(document.formulaire.NbPlaces.value>"

<?
// information pour la connection à la DB
$host = 'host';
$user = 'user';
$pass = 'pass';
$db = 'db';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$a = 80;
$resultat=mysql_query ("select sum(NbPlaces) as somme_totale from location where Date='2005-02-05'") or die ("Requete impossible");
{
echo ($a - mysql_result($resultat,$i,somme_totale));
}
?>
"))

{
alert("NOMBRE DE PLACES trop élevé !\n\nIl reste seulement

<?
// information pour la connection à la DB
$host = 'localhost';
$user = 'user';
$pass = 'pass';
$db = 'db';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$a =80;
$resultat=mysql_query ("select sum(NbPlaces) as somme_totale from location where Date='2005-02-05'") or die ("Requete impossible");
{
echo ($a - mysql_result($resultat,$i,somme_totale));
}
?>

place(s).\nEt vous vouliez réserver " + document.formulaire.NbPlaces.value + " places.\n");
document.formulaire.NbPlaces.focus();
return false;
}
return true;
}
//-->
</script>

Le script contiendra plusieurs conditions associées ((condition1)&&(condition2)) puisque les stocks varient selon les dates.

Exemple :
2005-01-28 stock=18
2005-01-29 stock=54
etc...

Y a-t-il un moyen de simplifier mon script ? Ou la méthode employée vous semble conforme ?

(Pourtant, j'ai lu "Javascript pour les Nuls"... mais j'ai peut-être même pas le niveau ! M'enfin... je m'y emploie

Merci d'avance pour le coup d'oeil... et pour le coup de main...

1 réponse

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 janv. 2005 à 09:55
Bonjour,
parce que les champs sont traités comme des "string"
et pas comme des nombres.
plusieurs solutions, utiliser :
Number(champ) ou parseInt(champ,10) ou ...
Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
0
Rejoignez-nous