Aller au contenu

Bouton reset formulaire


Gribouille26

Sujets conseillés

Chez moi ce code marche :

<?
if ($bouton== "zero") {
 $euros="";
 $francs="";
 $marks="";
}

if ($bouton=="convertir") {
  if(empty($francs) and empty($marks) and isset($euros)) {
      $francs = round(100*$euros*6.55957-0.01)/100;
      $marks = round(100*$euros*1.95583-0.01)/100;
   }
   if(empty($euros) and empty($marks) and isset($francs)) {
      $euros = round(100*$francs/6.55957-0.01)/100;
      $marks = round(100*$francs/3.353855-0.01)/100;
   }
   if(empty($euros) and empty($francs) and isset($marks)) {
      $euros = round(100*$marks*0.511292-0.01)/100;
      $francs = round(100*$marks*3.353855-0.01)/100;
   }
}
?>
<form method="post" action="convert.php">
<p><input type="text" size="10" name="euros" value="<? echo $euros;?>"> Euros<br></p>
<p><input type="text" size="10" name="francs" value="<? echo $francs;?>">  Francs<br></p>
<p><input type="text" size="10" name="marks" value="<? echo $marks;?>">  Marks<br></p>
<p><input type="submit" value="convertir" name="bouton">
<input type="submit" value="zero" name="bouton"></p>
</form>

Modifié par Titag
Lien vers le commentaire
Partager sur d’autres sites

Et tu sais pourquoi ?

Parce que tu fait un test en utilisant la fonction empty().

Or sur la remise à zero tu initialise tes variables avec un espace (" ") et non un caractere nul ("")... d'où erreur

Lien vers le commentaire
Partager sur d’autres sites

Après avoir vu ta page, je réaffirme ce que je disais.

Il te faut plusieurs cas.

cas 0: rien n'ai saisi. donc on saisit.

cas 1: la zone A est saisie, on convertit B et C OU on reset

cas 1: la zone B est saisie, on convertit A et C OU on reset

cas 1: La zone C est saisie, on convertit A et B OU on reset.

Tu dois démarrer l'écriture de ton script en vérifiant si le reset a été activé.

Si c'est le cas, "marqueur" = 0

Si ce n'est pas le cas:

On initialise un "marqueur" si celui-ci n'a pas déjà été valorisé.

switch

Cas 0:

formulaire de saisie. PLUS valorisation du marqueur à 1.

on soumet (en plaçant un <input type="hidden" name="marqueur" value=1>, que j'ai oublié de préciser lors de mon premier post)

Cas 1: Test de la zone saisie, conversion et affichage des zones converties.

avec affichage d'un bouton reset.

Dans ce formulaire, si tu cliques sur le bouton reset, le "marqueur" sera valorisé à 0.

Comme tu réaffiche ta page, tu passes dans le test de condition du reset en tt début de script, et tu repars avec un marqueur = 0, donc, un cas 0.

tu peux ressaisir...

Lien vers le commentaire
Partager sur d’autres sites

D'accord, je comprend mieux ce que tu veux dire Xpatval...

On fait la même chose, mais de deux façons différentes, en gros! :lol:

Ta solution à l'air plus "conventionnelle", mais comme elle n'est pas encore aussi claire que celle que j'ai utilisée, je crois que je vais garder la mienne pour le moment et me pencher sur le "plus conventionnel" une autre fois... :whistling:

Merci. :flower:

Lien vers le commentaire
Partager sur d’autres sites

Par exemple :

if(empty($francs) and empty($marks) and isset($euros))

empty "dit" si la variable est vide ou non... or une variable qui contient un espace comme tu l'initialise dans le if ($bouton == "zero") n'est pas vide.

C'est pour ca qu'il fait la conversion qu'une seule fois... au 1er chargement de la page.

Lien vers le commentaire
Partager sur d’autres sites

D'accord!!

Merci! :flower::up:

Euh...

Si j'ose une question subsidiaire: Je lisais pendant mes recherches qu'il faut mettre ses variables en $_POST['variable'] . C'est plus sécurisé...

Je comprend pas ce qu'il faut faire concrètement.... :huh:

Lien vers le commentaire
Partager sur d’autres sites

Je comprend pas ce qu'il faut faire concrètement....

Tout simplement, depuis une certaine version de php, le paramètre de configuration REGISTER_GLOBALS, qui était à ON, par défaut, a été passé à OFF, par défaut aussi.

Autrefois, et quelque soit la méthode utilisée (post, get, cookie...), tu n'avais pas besoin d'initialiser tes variables. Ce qui avait, entre autre, pour conséquence un risque certain lors de passages de paramètres dans une url (http://www.monsite.com?var1=...&var2=...). N'importe qui pouvait rentrer dans l'url n'importe quel paramètre...

Dorénavant, tu dois initialiser les variables que tu vas utiliser. Si quelqu'un souhaite saisir n'importe quoi dans ton url, le paramètre (sa variable) n'existant pas, le risque est amoindri.

Il te faut faire, pour chaque variable:

$tavariable = ( isset ( $_POST['tavariable'] ) ) ? $_POST['tavariable'] : '';

ou

$tavariable = ( isset ( $_GET['tavariable'] ) ) ? $_GET['tavariable'] : '';

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...